728x90
반응형

딥러닝 (Deep Learning)/딥러닝 기초 18

GNN

GNN(Graph Neural Network)이 해결할 수 있는 문제 - Node Classification : Node embedding을 통해 점들을 분류하는 문제. 일반적으로 그래프 일부만 레이블 된 상황에서 반지도학습을 한다. 대표적인 응용 영역으로 인용네트워크, Reddit 게시물, Youtube 동영상이 있다. - Link Prediction : 그래프의 점들 사이의 관계 파악하고 두 점 사이에 얼만큼 연관성이 있는지 예측하는 문제. 영화와 유저가 점이고 유저가 영화를 봤으면 선으로 연결해준 그래프를 생각할 수 있다. 아직 연결되지 않은 영화,유저의 쌍 중 연결될 가능성이 높은 쌍을 찾아 유저가 영화를 감상할 가능성이 높다고 예측할 수 있다. ex) 페이스북 친구 추천, 왓챠/유튜브/넷플릭스 ..

신경망의 구조 : layer, data, loss function, optimizer

[케라스 창시자에게 배우는 딥러닝] 참고 신경망의 구조 네트워크(또는 모델)를 구성하는 층 입력 데이터와 그에 상응하는 타깃 학습에 사용할 피드백 신호를 정하는 손실 함수 학습 진행 방식을 결정하는 옵티마이저 1. 층(layer) 층은 신경망의 핵심적인 데이터 구조이며, 하나 이상의 텐서를 입력으로 받아 하나 이상의 텐서를 출력하는 데이터 처리 모듈이다. 어떤 종류의 층은 가중치가 없지만(Flatten, Dropout, Pooling 등), 대부분의 경우 가중치를 갖는다. 가중치는 확률적 경사 하강법에 의해 학습되는 하나 이상의 텐서이며 여기에 네트워크가 학습한 지식이 담겨 있다. 층마다 적절한 텐서 포맷과 데이터 처리 방식이 다르다. 예를 들어 (samples, features) 크기의 2D 텐서가 저..

신경망에서 미분이 필요한 이유 2 : gradient descent (경사하강법), learning rate(학습률)

[케라스 창시자에게 배우는 딥러닝] 참고 📢 목차 1. 그래디언트(gradient) 2. 확률적 경사 하강법 (Stochastic gradient descent) 3. 최적화 방법(optimization method) (=옵티마이저) 1. 그래디언트(gradient) gradient는 수학적으로 텐서 연산의 변화율이다. 이는 다차원 입력, 즉 텐서를 입력으로 받는 함수에 변화율 개념을 확장시킨 것이다. y_pred = dot(W, x) loss_value = loss(y_pred, y) 위의 식은 신경망의 입력데이터(x)를 가중치(행렬W)와 곱하고 예측값(y_pred)을 얻고, 예측값과 실제값(타깃y)의 손실함수(loss)를 나타낸 식이다. W를 사용해 타깃의 예측값을 계산하고, 손실(예측값과 타깃값 사..

신경망에서 미분이 필요한 이유 1 : 미분, 순간 변화율, 기울기

[케라스 창시자에게 배우는 딥러닝], [모두의 딥러닝] 참고 1. 미분, 순간 변화율, 기울기 실수 x를 새로운 실수 y로 매핑하는 연속적이고 매끄러운 함수(미분가능한) f(x)=y 가 있다. 예를 들어 아래 2차함수 그래프가 있다고 가정해보자. *미분가능하다 : 변화율을 유도할 수 있다는 의미로 연속적이고 매끄러운 함수. x축에 있는 한 점 a에 대응하는 y값은 $a^{2}+b$가 된다. 이때 a가 오른쪽이나 왼쪽으로 조금씩 이동한다고 생각해보자. 그러면 y도 조금씩 변화할 것이다. 좀 더 상상력을 발휘해 이번엔 a가 아주아주 미세하게 "0에 가까울 만큼" 움직였다고 생각해보자. 그러면 y값도 역시 매우 미세하게 변화를 할 텐데, 이번엔 너무 미세해서 실제로 움직이는게 아니라 방향만 드러내는 정도의 순..

신경망 - 가중치(weight), 랜덤 초기화(random initialization), 훈련 루프(training loop)

[케라스 창시자에게 배우는 딥러닝] 참고 신경망의 각 층은 입력 데이터를 다음과 같이 변환한다. 예) keras.layers.Dense(512, activation='relu') ⬇ output = relu(dot(W, input) + b 이 식에서 텐서 W와 b는 층의 속성처럼 볼 수 있다. 이들은 가중치(weight) 또는 훈련되는 파라미터(trainable parameter)라고 부를 수 있으며, 각각 커널(kernel)과 편향(bias)라고 부르기도 한다. *커널은 여러가지 의미로 사용된다. SVM의 커널 함수, 합성곱 신경망의 필터를 지칭하기도 함. 이런 가중치에는 훈련 데이터를 신경망에 노출시켜서 학습된 정보가 담겨 있다. 초기에는 가중치 행렬이 작은 난수로 채워져 있다. 이것을 무작위 초기화..

텐서 연산 기초 공부하기

[케라스 창시자에게 배우는 딥러닝] 참고 📢 목차 1. 원소별 연산 (element-wise operation) 2. 브로드캐스팅 (broadcasting) 3. 텐서 점곱 ( Tensor dot operation) 4. 텐서 크기 변환 (Tensor reshaping), 전치(transposition) 5. 텐서 연산의 기하학적 해석 6. 딥러닝의 기하학적 해석 컴퓨터 프로그램의 이진수 입력을 몇 개의 이항 연산(AND, OR, NOR 등)으로 표현할 수 있는 것 처럼, 심층 신경망이 학습한 모든 변환을 텐서 연산(tensor operation)으로 나타낼 수 있다. ex) 텐서 덧셈, 텐서 곱셈 keras.layers.Dense(512, activation='relu') Dense 클래스의 객체가 모..

신경망의 데이터 표현 3 - tensor & data 종류와 예시

[케라스 창시자에게 배우는 딥러닝] 참고 텐서의 예 : 데이터 종류 Tensor 크기 데이터 종류 2D 텐서 (samples, featutres) 벡터 데이터 3D 텐서 (samples, timesteps, features) 시계열 데이터 또는 시퀀스 데이터 4D 텐서 (samples, height, width, channels) 또는 (samples, channels, height, width) 이미지 5D 텐서 (samples, frames, height, width, channels) 또는 (samples, frames, channels, height, width) 동영상 1. 벡터 데이터 (samples, featutres) 대부분의 경우에 해당. 이런 데이터셋에서는 하나의 데이터 포인트가 벡터로..

신경망의 데이터 표현 2 - data 다루기

[케라스 창시자에게 배우는 딥러닝] 참고 사실 딥러닝을 시작하면서 코딩을 이해하는데 어려움이 많았다. 기초가 부족한채 계속 달려나가니 공부하면 할 수록 카오스 상태에 빠졌다. 기본 용어라던지 (사실 tensor가 뭔지도 몰랐다.) 이미지를 숫자로 표현하고 슬라이드를 자유자재로 사용하고 이미지를 추출하는 것 등 기본적인 부분부터 흔들렸던 것 같다. 기초부터 다시 차근차근 익혀보자! 📢 목차 1. 이미지 데이터 tensor 속성, 이미지 불러오기 2. 이미지 개수 조절, 이미지 자르기(픽셀 조절) - slicing 3. 배치 데이터 1. 이미지 데이터 tensor 속성, 이미지 불러오기 MNIST 데이터의 이미지 배열은 8비트 정수형 3D 텐서이다. 정확하게 28 X 28크기의 정수 행렬 6만 개가 있는 배..

신경망의 데이터 표현 1 - tensor

[케라스 창시자에게 배우는 딥러닝] 참고 텐서(tensor) : 다차원 넘파이 배열. 머신러닝 기본 데이터 구조로 사용. 텐서플로를 비롯해 딥러닝 라이브러리들은 다차원 배열을 텐서라고 부른다. (하지만 파이썬 커뮤니티에서 넘파이 배열을 텐서라고 부르지는 않는다.) 텐서는 임의의 차원 개수를 가지는 행렬의 일반화된 모습이다. 텐서에서는 차원(dimension)을 종종 축(axis)라고 부른다. 핵심적으로 텐서는 데이터를 위한 컨테이너(container)이다. 거의 수치형 데이터를 다루므로 숫자를 위한 컨테이너라고 생각하면 된다. 텐서의 핵심 속성 축의 개수(rank) : 2D = (axis=2), 3D = (axis=3) 크기(shape) : 텐서의 각 축을 다라 얼마나 많은 차원이 있는지 나타낸 파이썬의..

딥러닝 알고리즘의 변화

[케라스 창시자에게 배우는 딥러닝] 참고 2000년대 후반까지는 매우 깊은 심층 신경망을 훈련시킬 수 있는 안정적인 방법을 찾지 못했었다. 깊게 쌓은 층을 통과해서 그래디언트(gradient)를 전파하는 것이 가장 큰 문제였다. 신경망을 훈련하기 위한 피드백 신호가 층이 늘어남에 따라 희미해졌기 때문이다. 하지만 2009~2010년 경 몇 가지 간단하지만 중요한 알고리즘이 개선되면서 그래디언트를 더 잘 전파되게 만들어 주었고, 그 결과 10개 이상의 층을 가진 모델을 훈련시킬 수 있게 되었다. 신경망 층에 더 잘 맞는 활성화 함수(Activation function) - ReLU함수 층별 사전 훈련(pre-trained)을 불필요하게 만든 가중치 초기화(weight initialization) 방법 - ..

딥러닝의 개념과 동작 원리

[케라스 창시자에게 배우는 딥러닝] 참고 사람들은 어떤 것을 이해하기 위해서 전체적인 그림의 숲을 먼저보고 세세한 내용의 나무를 보는 방법을 많이 선호한다. 딥러닝에 대한 이해를 전체적인 개념(숲)부터 내부 동작원리(나무)로 나눠서 다시 정리해보는 시간을 가져보자 :) ⛺ 숲으로 보는 딥러닝 (큰 개념) 머신러닝 : 많은 입력과 타깃의 샘플을 관찰하면서 입력(ex.image)을 타깃(ex.cat)에 매핑(mapping)하는 것. 심층 신경망 : 입력-타깃 매핑을 간단한 데이터 변환기(layer)를 많이 연결해 수행하는 것. (데이터 변환은 샘플에 노출됨으로써 학습이 이루어짐.) 🌳 나무로 보는 딥러닝 (동작원리) 층에서 입력 데이터가 처리되는 상세 내용은 일련의 숫자로 이루어진 층의 가중치(weight)..

'표현(representation)을 학습하다' 의미

[케라스 창시자에게 배우는 딥러닝] 참고 representation learning 머신러닝과 딥러닝의 핵심 문제는 '의미 있는 데이터로의 변환' 이다. 다시 말하면 입력 데이터를 기반으로 expectation(기댓값, 기대출력)에 가깝게 만드는 유용한 표현(representation)을 학습(learning)하는 것이다. 여기서 표현이란.. 데이터를 인코딩(encoding)하거나 묘사하기 위해 데이터를 바라보는 다른 방법을 말한다. 예를 들어 컬러 이미지는 RGB format(빨,녹,파)이나 HSV format(색상,채도,명도)으로 인코딩 될 수 있으며, 이들은 같은 데이터의 두 가지 다른 표현이다. 상황에 따라 A표현으로는 해결하기 힘든 문제가 B표현으로는 쉽게 해결될 수 있다. 예를들어 '이미지에 ..

활성 함수(Activation Function) 비교

Step, Sigmoid, Tanh, ReLU, Leaky ReLU, PReLU, ELU, Maxout, Softmax Function Github Link 🔽 자세한 코드 gggggeun/study Contribute to gggggeun/study development by creating an account on GitHub. github.com 1. 계단함수 Step function import numpy as np import matplotlib.pyplot as plt import math # 샘플데이터 x = np.array([-1, 1, 2]) # 0 보다 클 경우 1 y = x>0 y = y.astype(np.int) def step_function(x) : return np.array(..

신경망의 구성, 구조 with python

1. 신경망의 구성 신경망은 input layers(입력층), hidden layers(은닉층), output layers(출력층)으로 나뉩니다. 사실 은닉층의 수가 최소 2개 이상이어야 deep하다고 할 수 있습니다. 즉, layer(층)이 총 3개 이상인 것을 신경망(딥러닝)이라고 합니다. (층을 셀 때 입력층은 포함x) 위의 그림은 단일 퍼셉트론으로 입력층과 활성화함수, 출력층으로만 이루어져 있습니다. 가운데 노드는 입력층에 가중치를 곱하고 Bias를 더한 선형결합 연산 후 활성함수를 거치면 출력값이 도출됩니다. 그럼 위의 그림은 무엇일까요? 가운데 hidden layer(은닉층)이 1층 있습니다. 은닉층이 1개 이상이면 다층 퍼셉트론 이라고 합니다. 하지만 딥러닝(신경망)이라고 할 수는 없습니다...

퍼셉트론의 한계, XOR

퍼셉트론은 Frank Rosenblatt이 1957년 고안한 알고리즘입니다. 그러나 인공지능 선구자 Marvin Minsky 교수가 퍼셉트론의 한계에 대해 1969년 논문으로 발표했습니다. 퍼셉트론의 한계에 대해서는 XOR(exclusive OR)문제로 풀어볼 수 있습니다. XOR 문제는 디지털 논리회로에 등장하는 개념입니다. 컴퓨터는 두 가지의 디지털 값(0과 1)을 입력해 하나의 값을 출력하는 회로가 모여 만들어지는데, 이 회로를 GATE(게이트)라고 합니다. 그리고 XOR를 표로 나타낸 것을 진리표라고 합니다. 1. AND GATE # 위 예시를 python으로 제작을 해보겠습니다. # w1, w2는 가중치(weight)를 의미하는 변수입니다. def AND(x1, x2): w1, w2, theta..

신경망 관련 개념 정리

1. 퍼셉트론이란? 신경망을 이루는 가장 작은 단위. 입력값과 활성함수로 출력값을 넘기는 가장 작은 신경망 단위. 다수의 신호를 입력으로 받아 하나의 신호를 출력. 0과 1의 값. 2. 신경망(딥러닝)이 중요한 이유 단순 계산만이 아닌 이전에 컴퓨터가 잘 못하는 사물인식, 분할기술, 자연어 처리 등의 영역까지 사람보다 더 뛰어난 성과를 보이기 때문에. 3. 신경망은 오랜기간 동안 관심을 못받다가 어떻게 다시 대두되었나? 컴퓨터 성능, 인터넷 속도 증가, 데이터 용량 증가 등으로 딥러닝 기술이 눈에 띄게 발전해 가치를 인정받아 여러분야에 활용되게됨. 4. 딥러닝의 장점과 단점 장점 : =2번 단점 : 데이터가 적을 때는 성능을 발휘하지 못함. 즉, 단순한 문제를 풀 때는 쓸모가 없음. 5. 딥러닝(신경망)..

728x90
반응형