기본 콘텐츠로 건너뛰기

4월, 2020의 게시물 표시

[Deep Learning-딥러닝] 역전파 학습법 (Back-propagation)

경사 하강법은 다음을 참고 바랍니다. https://www.blogger.com/blogger.g?blogID=3314074563645120473#editor/target=post;postID=6213959223488853886;onPublishedMenu=allposts;onClosedMenu=allposts;postNum=1;src=postname 모델 학습 아키텍쳐 특징 학습 목표는 손실을 최소화하는 매개 변수를 찾음  학습 데이터, Model, 손실 함수는 정해져 있음  Model은 Trainable Parameters에 의해 변경됨 즉 손실 함수를 최소화하는 Trainable Parameters를 찾는것이 학습의 목표입니다. 방법 손실 함수를 입력 값으로 미분하여 Gradient Descent 방법으로 매개변수를 변경함. 매개 변수가 4개일 때 예제입니다. 각 매개 변수에 대해 편미분을 수행하고 다음 가중치를 구합니다. 역전파 학습법 (Back-Propagation(BP)) 학습 데이터로 정방향 연산을 하여 Loss를 구함 연쇄 법칙을 이용해 역전파 학습법 수행함 Loss를 각 파라미터로 미분함 마지막 계층부터 이전 계층으로 연쇄적으로 계산 역전파 연산 시 정방향 연산에서 저장한 결과응 사용하여 연산 수를 줄임 연쇄 법칙 (Chain Rule) 심층 신경망은 여러 층으로 쌓여 있으므로 학습 데이터 x로 비용 함수 결과를 미분하기 위해서는  연쇄 법칙 을 이용해야   합니다. 동적계획법(Dynamic Programming) feed forward 계산해서 back propagation에 미분에 필요한 값을 저장하고, Loss 구하고 연쇄법칙으로 미분값 계산한 결과값을 저장하고 동적계획법으로 계산합니다. 전결합 계층 미분 활성 함수를 제거하고 모든 매개 변수로 미분을 수행한 결과입니다. hidden layer의 출력으로 미분하면 계수 weight만

[Deep Learning-딥러닝] 분류 (Classification)

분류 분류는 입력 데이터가 어느 범주에 속하는지 알아내는 연구이며, 지도학습입니다. 범주가 2개일 경우 이진 분류(Binary classification) , 그 이상은 다중 분류(Multi-class classification) 라고 합니다. 분류에서는 범주의 수가 출력층의 노드 수 입니다. 이진 분류 이진 분류의 출력 범위는 0~1 사이의 실수 값 출력 Layer의 활성 함수로 Sigmoid function을 사용함  0.5보다 작으면 첫 번째 class, 0.5보다 크면 두 번째 class로 분류함 Sigmoid Function Sigmoid Function Sigmoid 다음과 같은 특징이 있어 이진 분류의 활성 함수로 사용됩니다. 값이 작아질 수록0, 커질 수록 1에 수렴함 출력 범위는 0~1 입력 값이 0에 가까울 수록 출력이 빠르게 변함(기울기) 로지스틱 회귀 로지스틱 회귀는 이진 분류(Binary Classification)를 풀기 위해 사용되는 알고리즘 입니다.  로지스틱 회귀는 범주형 데이터를 분류하는 방향으로 선을 긋습니다. 로지스틱의 가설함수 -> H(x)=sigmoid(Wx+b) 교차 엔트로피 오차 - Cross Entropy(CEE) 교차 엔트로피 오차는 정확히 맞추면 오차가0, 틀릴수록 오차가 무한히 증가하는 특성을 가지고 있습니다. y: 학습 데이터 (0 or 1) -> 정수 y~(y 킬다): 학습 데이터 입력으로 추정한 출력(0 ~ 1) -> 실수 위 그래프의 가로축은 예측값 세로축은 오차를 표현합니다. y가 1인 경우를 나타낸 그래프 이므로 예측이 1일 경우 오차는 0이고 예측이 0일경우 무한히 증가합니다. 다중 분류 다중 분류의 출력은 각 클래스 즉, 각 범주에 속할 확률을 표현합니다. 확률로 표현하기 위해 출력 계층 활성 함수로 Softmax 함수를 사용합니다. 소프트맥스 함수 - Softma

[Deep Learning-딥러닝] Optimize Funtion

AdaGrad (Adaptive gradient) AdaGrad는 변수별로 학습율이 달라지게 조절하는 알고리즘입니다. 기능: 기울기가 커서 학습이 많이 된 변수는 학습율을 감소시켜, 다른 변수들이 잘 학습되도록 합니다. 단점: gt가 계속해서 커져서 학습이 오래 진행되면 더 이상 하습이 이루어지지 않는 단점이 있습니다. 한번 커진값은 줄어들지 않는 구조라, 계속 누적해서 커지는 구조 RMSProp RMSProp은 AdaGrad의 문제점을 개선한 방법으로 합 대신 지수평균을 사용합니다. 변수 간의 상대적인 학습율 차이는 유지하면서 g t  가 무한정 커지지 않아 학습을 오래 할 수 있습니다. 이전 값을 어느정도 감소시키고 새로운 gradient를 업데이트 함. Gradient를 g t  가 천천히 따라가는 형상을 나타남. Gradient가 줄어들면 g t  도 줄어들고, 학습이 잘 안되는 상황이면  g t + ε도 작아지므로 다시 학습 잘되게 함.     Adam (Adaptive moment estimation) Adam은 RMSProp과 Momentum의 장점을 결합한 알고리즘 입니다. m t  는 이전 m t-1 을 B 1 만큼 유지 하고(관성 기능) 새 gradient를 (1- B 1 )만큼 업데이트 함. g t  는 이전 g t-1 을  B 2 만큼 유지 하고(관성 기능) 새 gradient의 제곱을 (1- B 2 )만큼 업데이트 함. B 1  와  B 2  값이 1에 가까운 값이므로, 첫 학습의 gradient가 거의 반영이 안되어, 학습이 잘 이루어 지지 않습니다. 이를 위해 m t  , g t  의 초기값은 보정합니다.    감사합니다.

[Deep Learning-딥러닝] Optimize Funtion - 경사 하강 학습법(Gradient Descent)

최적화 이론 (Optimization Theory) 최적화 이론은 목적 함수 f(x)의 출력 값을 최소 or 최대로 하는 입력 값을 찾아내는 연구입니다. 딥러닝 네트워크의 학습은 손실 함수가 최소가 되는 파라미터를 구하는 최적화 문제로 볼 수 있습니다. 분석적 방법 (Analytical method) 함수의 모든 구간을 수식으로 알 때 사용하는 방법입니다. 1차 미분이 0이면 기울기가 0인것을 나타냄 2차 미분이 0보다 크면 아래로 볼록을 나타냄 수치적 방법 (Numerical method) 함수의 형태와 수식을 알지 못할 때 사용하는 방법입니다. - Gradient Descent 손실 함수(Loss Function) 학습 매개변수(Trainable Parameters): 학습 과정에서 값이 변화하는 매개 변수, 이 값이 변화하면 알고리즘 출력이 변화됩니다. 손실 함수(Loss Function): 알고리즘이 얼마나 잘못 하고 있는지를 표현하는 지표로, 정답과 알고리즘 출력을 비교하여 정합니다. 손실 함수값이 낮을수록 잘 학습된 모델입니다. 경사 하강법 손실 함수 f(x)를 최소로 하는 입력 값(매개변수)을 찾아내는 연구 입니다. 편 미분을 이용해 손실 함수 그래프의 기울기를 구하여 최적점으로 다가 갑니다. f(x)의 미분 결과가 0일 때 가지 반복합니다. 경사 하강법 수식 기울기는 스칼라를 각 요소의 벡터로 미분합니다. 학습률이 영향 작을 경우 최적점까지 오는 시간이 오래 걸림. 즉 학습 시간이 오래 걸림 클 경우 진동이 발생하여 최적점을 지나칠 수 있음 Stochastic Gradient Descent(SGD) – Stochastic(무작위) 경사하강법 Stochastic 경사하강법은 데이터를 학습할 때마다 오차를 계산해서 가중치를 조정하는 방법입니다. 예를 들어 100개의 데이터를 학습한다면, SGD는 가중치를 100번 갱신합니다. Batch Batch는

[Deep Learning-딥러닝] 회귀 - Regression

회귀 - Regression 잡음(Noise)이 있는 학습 샘플로부터 규칙을 찾아 연속된 값의 출력(실수형 데이터)을 추정하는 것을 회귀 라고 합니다. 회귀는 입력에 대해 출력이 연속적인 값이며, 회귀 곡선을 그어주고 새 입력에 대해 출력을 추정합니다(판매, 주가 예측 등). 회귀 학습은 지도학습 입니다. 잡음이 없는 샘플일 경우 출력이 회귀 곡선 위에 있고, 잡음이 있는 샘플은 위 그림처럼 출력과 회귀 곡선에 어느정도 차이가 있습니다. 단순 선형 회귀 단순 선형 회귀는 하나의 독립 변수 x의 차수가 1이면서 종속 변수 y와 선형 관계를 모델링 하는 회귀분석 기법 입니다. 단순 선형 회귀의 목적은 데이터를 가장 잘 표현하는 추세선 을 찾는거 입니다. 이는 Error를 최소로 하는 w와 b를 찾는거와 같습니다. w를 함수 f(x)의 계수(coefficient)이고 b와 함께 이 단순 선형 회귀의 모수(parameter) 라고 합니다. 위 수식은 다음과 같이 표현할 수 있습니다. 다중 선형 회귀 다중 선형 회귀는 한 개 이상의 독립 변수 x의 차수가 1이면서 종속 변수 y와 선형 관계를 모델링 하는 회귀분석 기법 입니다. 독립변수 별 가중치가 있고 편차는 한 개 정의합니다. 역전파 학습 모델의 결괏(예측)값 텐서의 합과 목푯값(정답)과의 거리(Error 또는 Loss) 를 구하고, 그 값에 대해 backward() 함수를 사용하여 기울기를 구합니다. 이때 에러(손실)값은 스칼라 로 표현되어야 합니다. 확률적 경사하강법(SGD - Stochastic Gradient Descent) 을 통해 최적화해 보겠습니다. 이와 같이 구한 각 파라미터의 기울기(편미분)에 대해서 경사하강법을 사용하여 에러를 줄여날갈 수 있습니다. 다중 선형 회귀의 기하학적 해석 w와 b를 가지고 선을 그음. 두 개의 입력, 하나의 출력으로 평면의 방정식과 동일함. 변수가 하나 추가될 때 마다 차원이 하나씩 추가된다. 직선->평명-

[Deep Learning-딥러닝] 신경망 구조

뉴런 표현 및 연산 방법 생물학의 신경 세포를 단순화하여 모델링 한것이 뉴런입니다.  뉴런은 신경망의 기본 단위 입니다. 뉴런은 여러 신호를 받아, 하나의 신호를 만들어 전달하는 역할을 합니다. 출력을 내기 전에 활성 함수(activation function)을 통해서 비선형 특성을 가할 수 있습니다. 뉴런 연산 방법은 다음과 같습니다. 두 벡터  가중치 weight와 입력 x의  내적 을 구한 후 모두 합한다. 편향을 더합니다.  편향이 없으면, 추세선은 원점을 꼭 지나야 합니다. 활성 함수를 적용 해 비선형 함수로 만듭니다. 두 벡터의 내적은 다음과 같이 표현할 수 있습니다. 두 벡터의 내적 FC(Fully Connected) Layer Matrix 곱셈 연산 표현 방법 뉴런이 모인 한 단위를 계층(Layer)라고 하며, 이전 계층과 다음 계층의 모든 뉴런이 서로 연결된 계층을 Fully-Connected Layer(Dense Layer)라고 합니다. N개의 입력, M개의 출력이 있는 네트워크 예제입니다. 매트릭스  W 의  w 0 는 (N*1)의 벡터이며, 이런  w 0 를 M개 나열되어 있습니다. 입력  x 는 N개라 행렬로 표현하면 (N*1)로 표현됩니다. 가중치를 transpose하여 (M*N)*(N*1)을 연산하여 출력은 (M*1) 형태가 됩니다. 얕은 신경망 - Shallow Neural Network 구조 얕은 신경망 - Shallow Neural Network 입력, 은닉, 출력 3개의 계층으로 되어 있으며, 은닉 계측과 출력 계층이 Fully Connected 계층인 모델을 얕은 신경망(Shallow Neural Network)라고 합니다. 입력 계층(Input Layer) 아무런 연산 없이 은닉계층으로 값을 전달함. 계층의 크기=Node의 개수=입력 Scalar의 수=입력 Vector의 길이 x = [ x 0 , x 1 , x 2 , ... ,