클라이언트/ 서버/ 엔지니어 " 게임 개발자"를 향한 매일의 공부일지

딥러닝 6 - 퍼셉트론 이해하기 3 : 다중 퍼셉트론 모델 학습 및 평가해보기 본문

인공지능/딥러닝

딥러닝 6 - 퍼셉트론 이해하기 3 : 다중 퍼셉트론 모델 학습 및 평가해보기

huenuri 2024. 9. 22. 12:29

퍼셉트론에  대해서 학습하는 중이다. 먼저 지난 시간 내용을 복습하며 선형 모델과 회귀 모델의 차이점에 대해서 학습해보기로 하자.


 

 

 

모델 평가하기 전에 알아야 할 개념 정리

 

 

회귀는 평균 제곱 오차를 활용하지만 분류에서는 나오는 예측값이 0이나 1 확률값으로 표기된다. 분류에서는 평균 제곱 오차를 적용하기 어려운데 그 이유는 예측과 오차의 차이가 많이 나야 1이 되기 때문이다. 모델 입장에서는 오차값이 적게 나오니 괜찮은 모델이라고 생각한다. 그래서 등장한 것이 손실함수인 lost function이다. 그러면 이 Cross Entropy가 어떤 효과를 지니고 있는지 알아보자.

 

 

 

 

 

 

크로스 엔트로피는 로그함수를 이용하게 되어 있고 파란색이라. 두번째 것은 로그 함수 안에 1을 뺀 예측값을 넣어 계산한 빨간선이다. 지수함수와 로그함수는 값의 변화를 급격하거나 완만하게 만들어주는 특징이 있다.

전체 양에서 너무 많이 깎이는 것을 방지하기 위해 로그함수 그래프를 사용하는 것이다.

 

파란색은 실제 정답이 1일 때 예측값은 로그에 의해 예측값은 1에서 멀어질수록 폭발적으로 증가한다. 빨간색에서는 실제 정답에 0을 넣었을 때 1과 가까운 값을 넣을 때 값의 변화가 극심해진다. 즉 잘못된 값을 적용할수록 오차값이 커지니 모델 평가에 있어 더 올바르다고 판단한다.

 

이 두 개의 선개의 값을 합쳐서 만든 것이 다음의 공식인 손실 함수이다.


 

 

 

 

왼쪽이 파란색, 오른쪽에 빨간색 선에 대한 식이다. 앞쪽에 실제 정답을 곱셈하도록 되어 있다. 만약 실제값이 1이라면 뒷쪽은 0이 되어 계산이 되지 않는다. 실제값이 0이라면 앞의 것은 동작하지 않고 뒤의 것만 동작한다.

실제값이 0인지 1인지에 따라 둘 중의 하나의 함수만 동작하도록 만든 것이 이 공식이다. 그리고 맨 앞에는 평균제곱 오차처럼 모든 값을 다 더할 수 있게 설계했다. 이 함수 덕분에 분류 데이터도 충분히 학습할 수 있게 되었다.


 

 

퍼셉트론 실습해보기

 

 

모델을 학습하는데 시간이 꽤 많이 걸리고 있다.

 

 

 

모든 학습이 끝났고 70%의 정답률을 보이고 있다.


 

 

 

0.5 이상이면 1, 미만이면 0이 된다.


 

 

 

 

다층 퍼셉트론 사용 예시

 

중간층을 자유롭게 추가할 수 있는데 이 과정을 좀더 살펴볼 것이다.

 

3개의  입력 데이터가 각각의 중간층에 들어간다.

 

 

 

이렇게 중간층에서는 5개의 데이터가 나오게 된다. 처음에는 3개의 입력 데이터가 들어왔지만, 중간에 퍼셉트론이 해석하여 5개가 되어 분해하는 효과가 있다.

 

 

 

 

 

 

그리고 최종적으로 값은 2개의 데이터가 남는다. 분해되었던 데이터를 요약한다. 중간에 있는 퍼셉트론을 많이 넣을수록 모델이 커지고 학습 효과가 상승한다. 중간층에도 층을 여러 개 쌓을 수 있다. 이렇게 되면 데이터를 해석하는 관점을 더 많이 넣고 깊이가 깊어질수록 활성화 함수가 들어간다.

보편적으로 이상적인 데이터의 모양은 항아리 모양이다. 원본 데이터를 한층 한층 쌓아서 분해하고 마지막에 요약해서 추출하는 과정이다.


 

 

 

 

 

입력과 출력의 개수를 원하는 만큼 넣을 수 있어 자신이 설계하면 된다. 방 개수 평수에 따라 범죄율을 예측하고 싶을 때 다음과 같이 적용할 수 있다. 방의 개수를 4개로 하면 나오는 값은 1개이므로 1을 쓰면 된다. 중간 과정이 몇 개가 되든 상관 없다. 그저 학습을 하는 과정일 뿐이다.

 

 

 

 

 

만약 사진으로 분류하는 모델을 만들고 싶을 때는 이렇게 설계할 수 있다. 입력되는 사진을 28 X 28로 하고 싶다면 픽셀 정보가 가로 28, 세로 28로 만들어진다.

출력층은 강아지, 고양이, 개 사진이므로 3개로 만들면 된다.

 

 

 

 

 

드로잉해서 색상을 칠해주는 실물 모델에서 색상 크기가 28 x 28로 만들고 싶다고 하자. 여기서는 출력 크기대로 뽑아야 하므로 출력층도 같게 해야 한다. 하지만 중간값은 알 수가 없다.

중간층을 늘리면 어떻게 되는지 한번 알아보기로 하자.


 

 

 

 

컴퓨터 사양이 별로 좋지 않은지 모델 평가를 할 때 꼭 동작이 되지 않고 한번 멈춘다.  

 

 

 

 

 

 

하지만 빨리 실행되게 하려고 중간에 나갔다가 들어오니 예측이 잘 되지 않았다. 좀 답답해도 끝까지 기다려보기로 했다.

 

 

 

처음과 달리 예측값이 높아지고 있는 것을 볼 수 있다.


 

 

 

학습을 마치고

이것으로 퍼셉트론 수업은 마쳤다. 12시 안에는 마치고 셋째날 수업을 공부하려고 했는데 조금 늦어졌다. 셋째날 딥러닝 수업을 들으며 공부를 할지 아니면 새벽에 하지 못한 공부를 할지 고민이 된다.

그냥 이어서 공부를 해볼 것이다. 오늘은 딥러닝 학습에 매진해볼 것이다.