[8일 차] MNIST

Kimsoohyun·2022년 3월 6일
0
post-thumbnail

※ Notification
본 포스팅은 작성자가 이해한 내용을 바탕으로 작성된 글이기 때문에 틀린 부분이 있을 수 있습니다.
잘못된 부분이 있다면 댓글로 알려주시면 수정하도록 하겠습니다 :)

Intro

오늘은 MNIST Data를 이용해 CNN 모델의 Architecture를 다양하게 변경해보면서, layer간의 이미지 사이즈 변화, 파라미터의 개수 변화에 대해 중점적으로 공부를 진행했다.

Loss & Accuracy

모델을 돌려보다보면 위와 같이 Loss는 계속 증가하는데 Accuracy는 비슷한 경우를 볼 수 있다. 이것이 의미하는 바는 무엇일까?
그래프만 본다면 직관적으로 이해가 되지 않을 수도 있는데 다음과 같이 나타낸다면 좀 더 쉽게 이해할 수 있을 것이다.

정답[ 0, 1, 2, 3, 4 ]
Epoch 1[ 0, 1, 2, 4, 5 ]
Epoch 2[ 0, 1, 2, 5, 6 ]
Epoch 3[ 0, 1, 2, 6, 7 ]
......

보면 Accuracy는 항상 60%지만 loss는 계속 증가한다. 이와 같이 틀리는 것을 계속 틀리는 상황일 때 위와 같은 그래프가 나타날 수 있는 것이다.
Accuracy는 정확히 일치해야 변화하지만 loss는 Y-T의 평균이기 때문에.

Data contamination

위와 같은 상황에서는 '오답노트'를 해볼 필요가 있는데, 실질적으로 모델은 잘 만들어졌지만 데이터 오염이나 다른 이유 등으로 loss가 증가하는 것일 수도 있기 때문이다.
아래는 MNIST 코드 중에서 Model이 잘못 predict한 데이터 중 하나를 선택하여 출력한 것인데 실제 label값은 2이지만 무슨 글자인지 알기 쉽지 않다.

하지만 누군가는 이 글자를 보고 2라고 판단할 수도 있을 것이다.
이처럼 데이터의 label을 판단할 때 애매한 부분이 있게 된다면 일련의 의사결정 과정을 거쳐야 하는데, 회사라면 이러한 부분에 대한 Decision making process를 갖춰놓아야 한다.
팀원의 7:3이 동의할 때 데이터를 버릴 것인지, 8:2, 9:1, 혹은 만장일치일 경우에 데이터를 버릴 것인지와 같은 Decision making process.

여담으로 구글에서는 데이터를 다루는 팀의 90% 이상이 데이터가 오염됐거나 이상하다고 생각할 때 버린다고 한다.

Note

  • Python의 shape에서 -1의 의미는 뒤에 나오는 차원이 나오도록 -1의 값을 세팅해주라는 의미이다.
  • Conv2D에서 Output은 filter의 개수이다.
  • Conv2D에서 parameter의 개수는 filter가 결정한다. filter가 곧 weight이기 때문에.
    ex) kernel_size=5, filters=32Conv2D가 있다고 하면 해당 layer의 parameter는 (32×5×5)+32=832(32\times5\times5)+32=832이다. 괄호를 친 이유는 XW+bX\cdot W+b의 형태를 쉽게 떠올리게 표현하고자 함이다.

Outro

코드를 통한 실습 위주의 수업이 주를 이뤄서 글로 정리할만한 내용이 많지 않다. 코드를 정리해서 올리는 방식도 생각해봐야겠다.
정리하고 싶은 내용은 많은데 글로 어떻게 써야할지 감이 오지 않는다....

profile
어제보다 나은

0개의 댓글