언젠가는
인공신경망 본문
인공신경망은 사람의 머리 안에 있는 두뇌의 세포인 뉴런을 생각하면 됩니다. 뉴런이 전기 자극을 전달하는 것을 본떠서 만든 머신러닝 모델입니다. 입력을 받으면 활성화 함수를 이용해서 출력을 하는 것입니다. 가중치를 뽑아내는 것이 인공신경망의 목적입니다. 인공신경망은 1943년에 최초로 제안되었습니다. 1943년이면 한국은 어땠을까요. 이런 것을 보면 한국의 발전은 굉장히 빨랐다는 생각이 듭니다. 퍼셉트론도 이 당시에 말합니다. 그리고 그 이후에 다층 퍼셉트론, 역전파 알고리즘이 나오게 됩니다. 다층 퍼셉트론은 은닉층이 여러 개인, 비선형적으로 학습이 가능한 퍼셉트론입니다. 역전파 알고리즘은 반대 방향으로 움직이면서 가중치를 업데이트하면서 오차를 줄여나가는 알고리즘입니다. 그런데, 이 역전파 알고리즘을 수행하게 되면 기울기 소실이라는 문제가 생깁니다. 그 이유는 오차를 줄여나가기 위한 것인 만큼 계속해서 줄여나가다 보면 어느 순간, 기울기가 0에 가까워집니다.
그러면 기울기는 사라져 버리죠. 이를 기울기 소실 문제라고 부릅니다. 다시 퍼셉트론을 설명하면 퍼셉트론은 뉴런을 따라서 만든 입력, 출력층으로 이루어진 모델입니다. 퍼셉트론은 입력값, 가중치, 입력 함수, 활성화 함수, 출력 값으로 이루어져 있습니다. 퍼셉트론의 학습과정을 보면 입력된 값이 가중치를 얻어서 입력 함수에 들어갑니다. 이렇게 들어간 입력값들은 활성화 함수의 임곗값과 비교를 해서 예측값을 출력합니다. 이때 예측값은 1 또는 -1입니다. 이때 예측한 값이 실제와 다르다면, 가중치를 업데이트하는 겁니다. 이 과정을 반복해 가면서 오차를 줄여나가는 것이라고 생각하면 됩니다. 그러나, 퍼셉트론은 XOR 선형 분리 문제가 있습니다. 퍼셉트론은 AND, OR 연산은 선형 분리해서 제대로 처리했지만, XOR은 선형 분리를 할 수가 없습니다. 이 문제를 해결하기 위해서 등장한 것이 다층 퍼셉트론입니다. 다층 퍼셉트론은 입력, 출력층 사이에 여러 개의 은닉층을 두어서 학습하도록 만든 것입니다.
은닉층을 가지고 있기 때문에, 역전파 알고리즘을 통해서 퍼셉트론 학습이 가능해지는 겁니다. 다층 퍼셉트론의 활성화 함수는 '시그모이드 함수'입니다. 시그모이드 함수는 유한한 영역을 가진 집합이기에 미분이 가능하고, 미분 값은 모든 점에서 양수 값을 가집니다. 그리고 하나의 변곡점을 가집니다. 그러나 다층 퍼셉트론도 문제가 생깁니다. 바로 기울기 소실의 문제입니다. 앞서 기울기 소실에 대해서 먼저 말했지만, 이는 입력층에서 은닉층 출력층으로 움직이는 것이 아니라 출력층에서 은닉층, 입력층으로 이동하면서 편미분을 하면서 가중치 조정을 통해 오차를 줄여나갑니다. 이렇게 편미분을 하게 되면 어느 순간 0에 가까운 값이 돼버립니다. 이러면 더 이상 가중치를 조정할 필요가 없어집니다. 이 점을 개선하기 위해서 시그모이드 함수 대신에 ReLU함수를 사용합니다. 활성화 함수는 계단 함수, 부호 함수, 시그모이드 함수, ReLU함수 정도 알아두면 좋습니다. 그런데, ReLU함수도 한계가 있습니다. 기울기 소실 문제는 해결하였지만, X값이 0보다 같거나 작게 되면 기울기가 0이기 때문에 뉴런이 깨꼬닥 할 수 있습니다. 그래서, 나온 것이 Leaky ReLU함수입니다. 0보다 작을 때 약간 기울기를 조정해서 뉴런이 죽는 것을 예방한 함수입니다.
기울기를 낮은 쪽으로 계속 움직여서 제일 적합한 매개변수를 찾는 것을 경사 하강법이라고 부릅니다. 경사 하강법은 가중치를 미분해서 가는 것은 좋은데, 전체를 놓고 기울기를 계산하기 때문에, 정말로 많은 시간이 소요되고, 가중치가 U자 그래프나 V자 그래프처럼 된 것이 아니라서 W자 그래프의 끝자락에서 최소 기울기를 찾게 되면, 지역 최솟값을 정말 최솟값이라고 결정하게 되는 수가 있습니다. W자 그래프인데 왼쪽 아래가 좀 더 긴 W자라고 가정을 하면, 오른쪽에서 부터 최솟값을 찾다 보면, 오른쪽 V의 최솟값을 전역 최솟값으로 오해하는 경우가 생긴다는 것이 경사 하강법의 단점입니다. 이를 개선하기 위해서 확률적 경사 하강법을 만들어 냈습니다.
확률적 경사 하강법이란 손실 함수의 기울기를 계산해서 조금씩 내려가서 가장 손실 함수를 최소화할 수 있는 지점에 도착하도록 하는 알고리즘입니다. 이때 확률적이라는 말을 사용한 이유는 무작위로 선택된 데이터로 찾아내기 때문입니다. 확률적 경사 하강법의 종류에는 모멘텀, AdaGrad, Adam이 있습니다. 모멘텀은 물리법칙을 생각하면 됩니다. 힘을 받는 방향으로 속도가 더해지는 것처럼, 속도라는 것을 부여해서 기울기에 관계없이 최적점을 찾게 만들어 줍니다. 마치 공이 땅에서 튀어 오르듯이 움직이면서 최적의 점을 찾아갑니다. 점점 그 폭이 줄어드는 것도 비슷합니다. AdaGrad는 처음에는 많이 학습하고 점점 학습률을 줄여나가는 방법입니다. 이는 매우 효율적이고, 모멘텀보다 지그재그의 정도가 심하지 않다는 특성이 있습니다. 마지막으로 Adam은 모멘텀과 AdaGrad의 장점을 더해서 만든 것입니다. 이처럼 많은 것들이 점점 장점들로만 합쳐서 제일 좋은 것으로 만들어 나간다는 것을 알 수 있습니다. 탐색은 전체적으로 마치 공이 굴러가듯이 흐르지만, 업데이트 강도는 처음엔 강하게 점점 약하게 하기 때문에, 좀 더 유연하게 움직인다는 것을 확인할 수 있습니다.
'IT > IT 지식' 카테고리의 다른 글
데이터 단답형 대비 2 (0) | 2022.07.16 |
---|---|
데이터 단답형 대비 1 (0) | 2022.07.14 |
알아두면 좋은 IT 지식 16 - 암호 키, UML, 소프트웨어 아키텍처 등 (0) | 2022.07.14 |
군집분석 (0) | 2022.07.14 |
알아두면 좋은 IT 지식 15 - 단편화, 프레임워크, 클라우드 컴퓨팅 등 (0) | 2022.07.14 |