#1 인공신경망 동작 원리 - 예측자, 분류자

2020. 2. 5. 22:04 개발 이야기/머신러닝(딥러닝)

 

안녕하세요 요즘은 딥러닝을 공부 중인 해커의 개발일기 입니다. 딥러닝 프로젝트에 참여 예정이기 때문에 기초를 다지고자 몇일 동안 계속 책만 봤는데요

음성인식을 할 때 공부했던 이론들이 많이 나오고 틈틈히 공부했던 내용들이 많이 나와서 다시금 복습하고 되새길 수 있는 기회였습니다. 그 중에도 굉장히 간략하지만 핵심을 쏙쏙! 이해할 수 있도록 해준 책의 내용을 조금 정리해보겠습니다!!

추천하는 책은 신경망 첫걸음 입니다

 

 

간단한 예측자에 대한 소개로 시작이 되는데요 예측자는 딥러닝할 때 predict, pred, predictor

이런 단어로 줄여서 소스코드 내에 많이 삽입된 것을 볼 수 있는데요 이 책에서 좋았던 점은 소스코드에서 봤던 Keyword 들이 설명과 매핑되어 이해하기 쉬웠다는 것입니다.

예측자(predictor)는 말 그대로 Input을 넣고 Output을 예측할 수 있도록 해줍니다. 마일을 킬로미터로 변환해주는 예측자를 생각해보겠습니다.

 

1 마일1.60934

 

 

2 마일3.21869 입니다.

 

이렇게 2배 늘리면 똑같이 2배로 늘어나는 관계선형(Linear) 관계라고 하는데요 이걸 그래프로 그려보면 아래와 같습니다

 

우리는 이 C를 구하기 위해서 몇 번의 대입을 할 것입니다. 물론 수학적으로 해낼 수 있는 방법도 있지만 인공신경망의 이해를 위해 임임의 값(random)을 정해 대입해보면 1.3 을 넣으면 당연히 1.3이 나오고

 

실제 나와야하는 값보다 0.30834 차이가 나는 것을 알 수 있습니다. 이렇게 차이가 나는 것을 오차(error)라고 합니다

이렇게 대입을 하다가 너무 값을 많이 지나친 경우오버슈팅(overshooting)이라고 합니다.

이렇게 여러번 값을 넣어 정답을 구하는 과정을 여러번 반복하는것을 iteration(반복)이라고 합니다.

예측(predict)분류(classify)는 크게 다르지 않습니다.

선현함수 직선의 기울기(slope)를 이용해 분류의 용도로 사용할 수 있는데요

 

 

이렇게 파란 동그라미와 초록 동그라미를 분류할 수있는 선을 분류자(classfier)로 이용할 수있습니다. 선현 분류자를 학습(train)시켜서 잘 구분할 수있지만 적절한 구간을 알려주기위한 역할을 수행하는 예제 데이터를 학습데이터(training data)라고 합니다.

이 학습데이터를 이용해 적절한 기울기를 구하기위해 반복적으로 조금씩 값을 변경해 주는 것을 알고리즘(algorithm)이라고 합니다.

 

위의 그림처럼 적절한 기울기를 구하기 위해 조금씩 조정해 나가는 것 '작은 변화'를 수학자들은 델타라고 표현 합니다.

 

그리고 이 기준값을 기준으로 업데이트의 정도를 조금씩 조정(moderate)합니다. 이해를 도와 아래긔 그림을 보면

a 기준선이었다가 b 기준을 가고 c 기준을 갔다가 d 기준성 e, f 순서대로 기준선의 기울기를 보면 조금씩 차이가 작아지는 것을 알 수 있습니다.  이부분을 조금씩 조정(moderate)라고 합니다. 여기서 조정하는 인자를 학습률(learning rate)라고 부릅니다.

기초가 되는 분류자, 예측자를 기준으로 딥러닝의 Keyword를 알아 봤습니다. 저는 공부할 때 Keyword가 가장 중요하다고 생각하는데요! 이 글을 보시는 분들에게도 꼭 도움이 될 수 있으면 좋겠습니다.

 

당분간은 딥러닝에 대해 계속해서 알아가는 시간을 갖도록 하겠습니다!