본문 바로가기

유니티 ML Agents/머신러닝과 강화학습 기초

4. 딥러닝

뉴런(신경 세포)은 신경계를 구성하는 세포이다. 신경 세포는 전기적인 신호를 다른 신경 세포와 주고 받으며 정보를 유통하고 저장하는 역할을 한다. 인간의 뇌는 수천억 개의 뉴런으로 구성되어 있으며 뉴런을 통해 기억하고 판단하고 감정을 느끼게 된다. 뉴런은 다양한 요소로 구성되어 있지만 인공신경망을 구성하기 위해 필요한 요소에 대해서만 알아보도록 하자.


뉴런

(출처 : https://ko.wikipedia.org/wiki/신경_세포)


인공신경망 관점에서 뉴런은 가지돌기, 축삭, 축삭말단으로 구성된다. 가지돌기는 다른 뉴런으로부터 정보를 받아들여 축삭으

로 정보를 전달하는 역할을 한다. 축삭은 여러 개가 체인처럼 연결되어 있다. 가지돌기에서 받아들인 정보는 여러 개의 축삭을 거치면서 신호가 작아지거나 커지고 때로는 사라지기도 한다. 축삭에서 가공된 신호는 축삭 말단을 통해 다른 뉴런으로 전달된다.


뉴런과 인공신경망


앞에서 설명한 이진 분류 모델을 가지고 신경망을 설명해보자. 가지돌기에서 받아들이는 입력은 선형 모델에서 사용하는 입력에 해당한다. 여러 개의 축삭을 거쳐 가공되는 신호는 모델에 해당한다. 입력을 가공하는 신호는 가중치(W)와 편향(b)이 있으며 모델을 거쳐 나온 신호는 활성함수를 통해 어떤 결과로 나타날지 결정된다. 다른 뉴런으로 신호를 전달하는 축삭말단이 출력에 해당 한다.


단일 인공신경망


앞에서 공부한 선형 회귀분석과 이진 분류 분석을 이용해 간단한 신경망을 구성할 수 있다. 신경망은 입력 층(Input Layer), 은닉층(Hidden Lyaer), 출력 층(Output Layer), 역전파(Back Propagation)로 구성된다. 입력 층, 은닉 층, 출력 층은 앞에서 설명한 개념과 유사하다. 역전파는 실제 값과 계산 값의 차를 구하고 평균의 제곱을 최소화하는 방향으로 학습하는 이론을 신경망에 적용한 것이다. 차이점은 출력 층과 가까운 방향으로부터 입력 층으로 오차가 전파된다는 것이다. 단일 신경망의 경우에는 크게 효과가 없지만 심층 신경망(여러 개의 은닉 층으로 구성된)에서는 놀라운 효과를 발휘한다.


다차원 분류 문제


좀 더 복잡한 문제를 풀어보자. 이진 분류가 아닌 다차원 분류 문제를 풀어보자. 앞에서 설명한 간단한 모델을 사용해서는 다차원 데이터를 절대 분류할 수 없다. 수백 또는 수천 차원 이상의 고차 방정식을 풀어야 문제를 해결할 수 있기 때문이다. 이 때 사용하는 것이 심층 신경망이다. 다른 말로 딥 러닝이라 하기도 한다.


앞에서 이진 분류 모델을 만들기 위해 선형 모델을 사용해 1차 예측하고 활성 함수를 사용해서 예측 결과를 비선형 데이터로 만들었다. 심층 신경망은 이런 원리를 활용한 것이다. 은닉 층을 여러 개의 노드(모델)로 세분화해서 다양한 비선형 함수의 조합을 통해 데이터를 분류할 수 있게 하는 것이다. 어떤 모델을 사용하는지는 분석가가 결정하지만 수많은 가중치와 편향은 심층 신경망 알고리즘이 자동으로 찾아 준다. 수백에서 수백 개의 은닉 층을 사용하면 상상할 수 없는 놀라운 효과를 얻을 수 있다.


심층 신경망


심층 신경망에서 입력 값 X는 복수의 값이 사용될 수 있다. 이미지를 학습하는 모델의 경우 800*600 사이즈 이미지를 학습할 때 동일한 크기의 행렬을 입력으로 사용할 수 있다. 물론 딥 러닝 알고리즘에 따라서 이미지의 일부분을 입력 값으로 사용하기도 한다.


머신러닝에서는 다양한 데이터를 처리하기 위해 입력(X)과 출력(Y)을 행렬 형태로 처리할 수 있도록 지원하고 있다. 숫자, 이미지, 음성 등 모든 학습 대상 데이터를 행렬로 변환이 가능하며 행렬의 연산을 통해 학습을 진행한다.


은닉층은 레이어와 노드로 구성된다. 오른쪽으로 증가하는 층이 레이어이고 아래쪽으로 증가하는 동그라미가 노드이다. 몇 개의 레이어와 몇 개의 노드를 사용할 지에 대한 선택은 분석가의 몫이며 사용하는 컴퓨터 성능에 많이 좌우된다. 레이어와 노드 수가 증가할 수록 필요한 컴퓨팅 파워가 늘어나기 때문에 학습에 지장이 없는 수준으로 선택하는 것이 좋다.


머신러닝을 공부할 때 가장 많이 사용되는 수학이 사칙 연산, 로그, 수열 그리고 행렬 연산이다. 물론 논문을 쓴다거나 전문적으로 연구하는 사람이라면 수학을 좀 더 깊이 있게 공부해야 하지만 고등학교 수준의 수학의 기본 개념만 공부한다면 머신러닝을 학습하기에 전혀 무리가 없다. 고등학교 수학이 결코 쉽지는 않지만 미적분을 구체적인 부분까지 공부할 필요가 없다는 뜻이다. 공부하다가 막히는 부분에 대해서만 인터넷에서 개념 정도만 찾아보면 된다.

'유니티 ML Agents > 머신러닝과 강화학습 기초' 카테고리의 다른 글

5. 강화학습  (0) 2019.02.26
4. 딥러닝  (0) 2019.02.26
3. 분류(Classification) 분석  (0) 2019.02.26
2. 선형 회귀(Linear Regression) 분석  (0) 2019.02.26
1. 머신러닝  (0) 2019.02.26