인공지능 분야를 공부하다보면 선형대수학, 신경망, 데이터 전후처리 등등 알아야할 사항이 너무나도 많다. 작업을 하다보면 제대로 알지못하면서 그냥 넘어가는 부분이 많았던 것 같다.
'기본이지만 쉽게 넘어갈법한, 그리고 중요한' 개념들에 대해 포스팅해본다. 중간중간 계속 수정하여 내용을 더해갈 예정이다
목적함수 정의 후 오차값을 최소화하고자 할 때, 모델의 파라미터를 정하는 과정에서 사용되는 기법이다.
경사하강법에 대해서 직접 그림으로 표현해보았다
딥러닝에서 입력값으로 받은 값을 특정 함수에 넣어 조치한 후, 다음 층으로 전달하기 직전 사용하는 함수를 활성화 함수라고 한다. 이 때 활성화 함수는 비선형 함수만을 사용한다. 활성화 함수가 선형이면 비선형 문제를 해결할 수 없기 때문이다. 선형 함수를 사용하면 신경망층의 층을 깊게 쌓는 것이 의미가 없어진다.
1/(1 + e^(-x)). 0 ~ 1 로 값을 찌부시켜 주는 역할이다.
하지만 딥러닝에서 학습을 위해 오차역전파를 진행하는 과정에서 활성화 함수의 미분 값을 연쇄적으로 곱하는 과정이 포함되는데, 시그모이드의 경우 기울기값이 최대 0.25기 때문에 1보다 작은 값을 계속 곱하면 0에 수렴하게 된다.
(이미지 출처 : 유튜브 테디노트)
층이 깊어질수록 기울기 소실 (미분값 0 : 즉 업데이트가 일어나지 않음) 현상이 심해진다. 위의 그림처럼 loss값을 역으로 전달하는 과정에서 최근꺼는 업데이트를 해줄수 있지만 멀어질수록 0으로 수렴되는 값을 전달해주기 때문에 업데이트를 해야해도 할수도 없는 상황인 것이다.
sigmoid와 형태가 거의 유사하다. 기존이 0~1로 찌부라면, 이 녀석은 -1~1 범위로 scaling해준다
sigmoid 함수의 중심값이 0이 아닌 0.5라서 학습이 느린 문제가 있었는데 tanh는 중심값을 0으로 옮겨서 느려지는 문제를 해결했다. 하지만 기울기 소실 문제는 여전히 남아있다
Relu는 Rectified Linear Unit 의 준말로, 본래 네이밍을 생각하면 함수의 모양을 연상하기 쉽다. 가장 많이 사용되는 활성화 함수 중 하나로, 기울기 소실의 문제를 해결하기 위한 함수이다.
x가 0보다 크면 기울기가 1인 직선, 0보다 작으면 함수 값이 0이 된다. 0보다 작은 값들에서 뉴런이 죽을 수 있는 단점을 야기하지만 학습이 기존보다 빠르고 연산 cost도 적으며 구현도 매우 간단하다는 특징이 있다.
위에서 서술한 Gradient Descent, 활성화 함수의 내용을 이용해서 RNN에서의 장기의존성 문제를 해결한 LSTM, GRU에 대해서 작성한다. 이는 문장번역과 GNN 등 다양하게 사용된다.
- reference : https://wooono.tistory.com/242
이를 해결하기 위해, LSTM(Long Short Term Memory)가 제안됐다.
이전 정보를 그냥 갖고오는게 아니라 무엇을 기억하고 잊을지를 관리하는 Cell State가 핵심인 구조이다
기존 RNN의 구조가 위와 같다면 LSTM의 구조는 아래 그림과 같다
LSTM이 경량화된 버전이다. 구조는 가벼워졌지만 성능감소가 미미하여 개발된이후로 많이 쓰인다.
최신기술에 근간이되는 오토인코더에 대해 작성한다. 오토인코더는 비지도학습이다. 보통 차원축소에 유용하게 사용된다