허민석. 『나의 첫 머신러닝/딥러닝』. 위키북스, 2019.
https://www.youtube.com/watch?v=aircAruvnKk&t=613s
을 참고하여 작성했습니다.
딥러닝은 뉴런으로 구성된 레이어를 여러 개 연결해서 구성한 네트워크로, 네트워크를 어떻게 구성하느냐에 따라 X-NN(Neural Network)으로 불린다. 그 예로 CNN, RNN 등이 있다. 이 딥러닝은 인간의 뇌가 생각하는 방식을 머신러닝 알고리즘으로 설계한 것인데 아래에 구체적인 예시가 있다.
사람의 뇌는 저해상도의 이미지, 위와 같이 다른 이미지라도 전부 3이라고 인식 해낸다. 눈 안에 있는 시지각 세포들이 빛 신호를 받아들이는 패턴은 각각의 그림을 볼 때 서로 다른 양상을 가진다. 사람의 뇌에 있는 시각피질은 이런 차이에도 불구하고 두 이미지가 같은 개념을 가리킨다고 판단한다. 간단히, 이러한 원리를 적용한 개념이라고 할 수 있겠다.
신경망(딥러닝)의 기원이 되는 알고리즘으로, 하나의 뉴런으로 다수의 입력을 받아 최종 결괏값을 0 또는 1로 출력하는 모델이다.
가중치(Weight)는 신호의 결과에 주는 영향력을 조절하는 역할을 한다.
페셉트론은 XOR 연산이 불가능하다는 한계점이 존재했는데, 이를 극복하기 위해 등장한 것이 다층 퍼셉트론이다. 다수의 뉴런으로 구성된 여러 층 구조를 갖춘 딥러닝을 다층 퍼셉트론(MLP)라고 부른다.
출처 : https://deepcell.kr/bbs/board.php?bo_table=dl&wr_id=11
+) 뉴런은 퍼셉트론과 유사한데, 퍼셉트론은 모든 입력을 가중치와 곱해준 후 합산한뒤, 스템함수에 그 결괏값을 넘겨주어 0 또는 1을 출력한다.
뉴런은 활성화 함수로 비선형 함수를 사용한다.(역전파를 사용한 모델 학습 시 활성화 함수가 미분 가능해야 하는데, 스템하수는 미분이 불가능하기 때문이다.)
동그라미 = 뉴런(노드) ,네모 박스 = 레이어라고 이해하면 된다.
뉴런은 다른 레이어의 뉴런들과 선으로 연결되어 영향을 주고, 각각의 뉴런에 대한 영향 범위를 다르게 하기 위해서 선 위에 가중치라는 변수가 존재한다. 기본적으로 뉴런이 가지고 있는 정보는 가중치와 곱해져서 다음 레이어의 뉴런으로 전파되는 것이다. 뉴런 하나하나 숫자가 있고, 각 숫자가 연결되어 져서 이들 간에 숫자가 계속 변형해 나가는 그런 구조라고 이해하면 된다.
출력값과 정답의 차이를 계산한다.
출력값과 정답이 일치할 수록 손실함수가 적다!
매개변수를 조절해서 손실함수의 값을 최저로 만드는 과정이 최적화이고,
쉽게 말해 모델의 에러율을 최저로 줄인다는 의미이다.
딥러닝에서 최적화란, 손실함수 값을 최소화하는 파라미터를 구하는 과정!
(예측값과 실제값의 차이를 최소화하는)
최적화 과정은 옵티마이저(Optimizer)를 통해 이루어짐
옵티마이저는 역전파 과정을 수행해 딥러닝 모델의 매개변수를 최적화함
[경사하강법]은 대표적인 최적화 방법임
반복적으로 손실함수에 대한 모델 매개변수의 미분값을 구한 후, 그 미분값의 반대 방향으로 매개변수를 조절해 나가면 결국에는 최저 손실함 수 값에 도달한다는 이론
(손실 함수 그래프에서 갑시 가장 낮은 지점으로 경사를 타고 하강하는 기법)
1번째 학습에서 미분값은 (+), 매개변수를 (-) 방향으로
2번째~50번째도 미분값이 (+), 매개변수를 (-) 방향으로
=최종적으로 미분값이 0인 위치인 변곡점에 도달했을 때 손실함수의 최저값에 도달하고, 매개변수가 모델의 최적의 매개변수가 되는 것
이 변곡점 지점을 로컬 미니멈이라 부르고, 여러 개 있을 때는 가장 낮은 로컬 미니멈을 글로벌 미니멈 이라한다.
+) 전통적으로 모든 학습 데이터의 손실함수를 계산한 후 경사 하강법으로 로컬 미니멈을 찾아나가는 방법으로 모델 매개변수를 최적화했는데, 이 방법을 배치 경사 하강법이라고 한다.
오차를 역전파하여 신경망을 통해 더 나은 결과 값을 내기 위해 가중치를 조정하는데 오차가 영향을 줌
실제 딥러닝 모델에는 여러 레이어가 존재, 옵티마이저는 여러 레이어에 존재하는 매개 변수를 조정하기 위해 역전파를 사용
옵티마이저는 손실함수의 값을 최저로 하기 위해 역전파를 사용해 딥러닝 모델의 모든 매개변수를 변경
[원리]
아무리 깊고 복잡한 층으로 구성되어 있다해도 Chain Rule을 활용해 미분 값을 얻어낼 수 있다.
Forward Pass시 Local Gradient를 미리 계산해 저장해 둔다.
저장해둔 Local Gradient와 Global Gradient를 Backward Pass시 곱하여 최종 미분 값을 얻는다.
1) 배치 경사 하강법 (Batch Gradient Descent : BGD)
2) 확률적 경사 하강법 (Stochastic Gradient Descent : SGD)
비유= 배치 경사하강법은 꾸준히 현재의 위치에서 최저점을 향해 내려가는 거북이이고, 확률적 경사하강법은 껑충껑충 뛰어다니면서 최저점을 찾는 토끼와 같다고 할 수 있음
++) 배치 경사하강법은 속도가 너무 느리고, 확률적 경사하강법은 빨리 학습되지만 모델이 최적화 되지 않은 경우가 많다. 그래서 등장한 개념이 미니배치이다.
3) 미니 배치
-배치/ 확률적 경사하강법의 절충안, 전체 데이터를 batch size 개씩 나눠서 배치로 학습 시키는 방법
훈련 데이터 1000개를 10개의 미니 배치로 나누어 학습하는 경우, 배치 사이즈는 100
4) 모멘텀
최초 모멘텀을 0으로 설정
5) 학습률 (learning rate)
6) Adagrad
7) Adam
감사합니다..