티스토리 뷰

머신러닝(Machine Learning)은 번역하면 기계학습으로 컴퓨터가 어떤 문제를 해결하는 방법을 스스로 생각하도록 학습시키는 것을 말한다. 머신러닝은 크게 지도학습(Supervised Learning), 비지도학습(Unsupervised Learning), 강화학습(Reinforcement Learning)으로 나뉜다.

 

 

지도학습 (Supervised Learning)


컴퓨터에게 어떤 정답샘플을 주고 학습시킨 후 새로운 샘플이 주어졌을 때 답을 제시할 수 있도록 하는 방법을 말한다. 대표적으로 인공신경망(Neural Network)가 있으며, 인공신경망은 데이터를 네트워크에 맞는 입력형태로 변환시킨후 네트워크에 존재하는 수많은 노드들을 거치면서 최종 답을 출력한다.

 

 

신경망을 학습시킨다는 것은 샘플데이터를 입력하여 신경망이 답을 출력하도록 하고, 출력된 답의 오차를 다시 신경망에 전파해서 오차를 줄일 수 있도록 w, b 값을 수정하도록 하는 것을 말한다. GPU는 행렬 연산에 유리하도록 설계되었기 때문에 각 수치를 행렬로 변환시키는 것이 유리할 것이다.

필기체로 쓰여진 숫자를 신경망에게 학습시키기는 원리를 보자. 먼저 이미지를 적절한 크기로 변환해야한다. 입력값의 규격을 맞추는 의미도 있지만 GPU의 행렬연산속도가 아무리 빠르다고 해도 행렬의 크기가 너무 커지면 부하가 커지고 학습도 잘 안되기 때문에 크기를 합리적으로 선택한다. 그리고 색 정보를 최소화해서 흰색은 0, 검은색은 1로 표현할 수 있도록 변환시킨다.

 

 

숫자는 10가지 종류가 있기 때문에 신경망의 출력은 [1,10]크기의 행렬이면 좋겠다. 하지만 [28,28]데이터를 바로 사용하면 곱셈 연산으로 [1,10]크기의 행렬을 만들 수 없기 때문에 다시 이미지 데이터를 [1,784]크기의 행렬로 변환한다. 그러면 가중치행렬 w의 크기는 [784,10]이 될 것이고, 상수행렬 b의 크기는 [1,10]이 될 것이다.

최초 신경망을 생성할 때 w와 s는 랜덤값으로 설정한다. 그리고 여기에 정해진 샘플을 입력해보고 출력을 관찰한 후 오차를 다시 신경망으로 전파한다. 신경망의 각 노드는 재전파된 오차를 가지고 자신의 w, b를 조금씩 수정한다.

 

 

 

비지도학습 (Unsupervised Learning)


지도학습과 달리 어떤 정답을 주지않고 스스로 학습하도록 하는것을 말한다. 비지도학습은 입력되는 데이터들을 어떤 기준으로 분류할 때 사용할 수 있다.

 

 

강화학습 (Reinforcement Learning)


인식이나 분류가 아닌 문제해결에 중점을 둔 학습방법을 말한다. 문제를 상태 s, 상태에서 취할 수 있는 행동 a, 행동으로부터 얻는 결과 r로 추상화하여 최적의 행동을 수행할 수 있도록 학습시킨다. 대표적으로 Q-Learning이 있으며, 상태 s에서 얻을 수 있는 최대의 Q값을 table에 저장하고 반복수행을 통해 이 Q값을 업데이트하며 학습한다.

 

 

이 Q값을 저장한 table을 Q-Table이라고 하는데 Q-Table의 크기는 상태의 개수x행동의 개수인데 게임을 학습시키기 위해 게임 화면이미지를 최적화한다고 해도 table의 크기가 너무 커져서 적용하기 힘들어진다.
그래서 나온 방법이 바로 딥마인드 팀에서 발표한 DQN (Deep Q-Network)학습이다. DQN은 Q-value를 table에 저장하지 않고 신경망을 통해 학습시켜서 예측하는 방법을 사용하며, table과 비슷한 성공률을 보여주기 때문에 학습이 잘 된다고 할 수 있다.

 

여기까지 읽어보면 다음과 같은 의문이 생길 수 있다.

 

  • 그래서 Q-value나 r은 실제로 어떤 값이지? 상수? 행렬?
  • Q-value를 구하기 위해 Q(s',a)가 필요하다면 계속 재귀적으로 계산해야하는 건가?
  • 정답을 모르는데 어떻게 학습이 되는거지?

 

이 의문들은 다음 DQN 포스팅에서 해소해보도록 하자.

'Non-Programming > Computer' 카테고리의 다른 글

Cloud Computing (2)  (0) 2019.06.13
무선 LAN  (0) 2019.06.11
Cloud Computing (1)  (0) 2019.04.23
깃(Git) 용어 정리  (0) 2017.09.18
변복조란?  (0) 2017.02.25
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함