레플리
글 수 220

긴글) 방학 동안 얕게나마 딥러닝 공부했던 후기

조회 수 691 추천 수 0 2018.08.24 09:48:43


  이세돌씨와 알파고의 대결 이후 인공지능에 관심을 가지고 조금씩 공부하다가 이번 방학 때가 되서야 간단한 것들을 만들어 볼 수 있었습니다. 힘든 학기를 끝내고 방학 때는 많이 쉬고 싶었습니다. 하지만 이렇게 여유있는 시간을 가질 수 있는 것이 학창시절 뿐이라는 생각이 드니 마냥 놀기만 하기에는 시간이 아깝다는 생각이 들어서 텐서플로우를 공부해보기로 했습니다.

 

  시작은 유튜브에 있는 텐서플로우 강의로 시작했습니다(http://hunkim.github.io/ml/). 홍콩 과기대 교수님으로 계시는 분의 쉬운 강의를 보면서 강의에 나왔던 예시들을 따라 해봤습니다. 하지만 코드들을 응용하는 것이 무척 어렵더군요. 이러한 한계점을 느끼고 머신러닝 쿡북과 같은 책 몇권을 구입해서 같이 병행하게 되었습니다. 수학적인 깊은 내용을 공부하지 않음에도 무척이나 어려워서 힘들었습니다. 개발 언어가 저에게 조금익숙한 C가 아닌 파이썬이라 더욱 그랬던 것 같습니다. 이걸 최초로 만들어내신 과학자 수학자 들이나 개발자분들이 무척 대단하다고 느꼈습니다. 하지만 워낙 재미를 느끼고 있어서 욕심내지 않고 조금씩 조금씩 공부를 했습니다.

 

  이번 방학 때는 숫자 인식 신경망을 하나 만들어보는 것을 목표로 잡고 공부를 하였습니다. 그래서 콘볼루션이나, 맥스풀, 소프트맥스 등을 위주로 먼저 예제를 만들어보면서 익히고, RNN도 한번 정도 예제를 만들어봤습니다. 그러면서 어떻게 인식 신경망을 만들까 고민하던 중에 앞서 말씀드린 강좌에서 구글에서 개발한 인셉션 모델을 소개한것이 떠올랐습니다. figure.1  여러 사이트를 보면서 구조를 살펴봤는데, 일정한 블럭단위가 반복되는 어느정도 단순한 구조였습니다. 그래서 인셉션 신경망을 만들어보고 숫자 인식을 성공하기로 마음을 먹었습니다.

 

캡처.PNG

 

  일단은 인셉션 모듈을 하나 정도 사용한 간단한 모델을 만들어 구현한 모듈이 제대로 작동하는지 확인하는 작업을 했습니다. 그런데 loss가 줄지 않거나 시작부터 nan이 되는 등 학습이 잘 이루어지지 않아서 당황했습니다. 모델을 잘못 코딩했나 살펴봤는데 그런 점이 없어서 더욱 그러했습니다. 한참 삽질을 하다가 구글에 검색해보니 복잡할수록 learning rate를 작게하라는 문장을 볼 수 있었습니다. 저는 보통 이 수치를 0.05를 사용하고 있었는데 과감하게 0을 한두개 더 붙이니 학습이 이루어졌습니다. 

 

  동작을 확인한 후에 본격적으로 코드를 만들어봤습니다. 

캡d처.PNG

 

  코드를 완성하고 실행해봤는데, 동작은 제대로 하는 것을 확인했습니다. 목표의 반을 성취했다는 점에서 일단 만족스러웠습니다. 콘볼루션 하나 만들기도 버거워했던 때가 새삼 기억나더군요. 방학 때 공부했던 것의 결과가 직접 드러나니 무척 뿌듯했습니다.

 

  감격을 뒤로하고 학습 과정을 지켜보았습니다. 확실히 비교적 큰 모델이라 시간도 무척 오래 걸리고 메모리가 부족하다는 주의 메시지까지 떴습니다;;;. 유감스럽게도 학습은 제대로 이루어지지 않았습니다. 로스함수는 꾸준하게 조금씩 줄어드는데 정확도는 10퍼센트를 웃돌았습니다. 숫자 10개 중 하나를 고르는 신경망이니 결국 제대로 답을 고르는 것이 아니라 찍어서 맞추는 수준이라는 것입니다. 혹시 몰라 학습 횟수를 1000번으로 늘려서 학습해봤습니다만 로스 수치만 줄어들 뿐 정확도는 그대로였습니다. 아까처럼 learning rate 수치가 적절하지 못한 것인 가하여 이번에는 학습이 진행됨에 따라 수치를 감소시키는 함수까지 추가해봤지만 결과는 같았습니다. 학습 횟수가 모델 크기에 비해 부족한 것인지 learning rate가 부적절한 건지는 잘 모르겠습니다. 외부적인 문제도 알게되었습니다. 개발환경이 노트북인데 메모리 부족 등의 문제도 있지만 발열 문제가 가장 큰 것 같습니다. 발열량이 상당하더군요. CPU가 90도를 찍었고, GPU역시 80도 정도의 높은 온도를 유지했습니다. 10도 높아질 때마다 수명이 많이 줄어드는 걸로 아는데 이걸 알게 되니 노트북에서 학습하는 것이 약간 부담스러워졌습니다.

 

  이번 방학 때 알게 된 것은 단순히 모델 구조만을 구현한다고 해서 인공신경망을 완성할 수 없다는 것 입니다. 처음 유튜브 강좌를 들었을 때는 모델만 따라 만들면 되지 않을까 하는 생각을 했는데 어쩌면 제가 인공신경망을 너무 쉽게 생각했을지도 모릅니다. 비록 취미로 시작한 텐서플로우지만 좀더 진지한 태도를 가져야 할 것 같습니다. 이 부분에 대해 다음 방학 때 조금 더 공부를 해볼 계획입니다.

 

   긴글 읽어주셔서 감사합니다. 질문에 항상 친절하게 답변을 해주신 깊은 바다님께도 무척 감사하다는 말씀을 올리고 싶습니다.


깊은바다

2018.08.24 12:40:14
*.68.247.188

좋은 글 잘 읽었습니다~

역시 딥러닝을 실제로 응용해서 구현한다는게 쉽지많은 않네요^^;

사지방컴

2018.08.24 21:28:50
*.145.249.61

와우 많은 것을 이루셨군요

List of Articles
제목 글쓴이 날짜 조회 수
카톡 대화를 학습하는 AI 아바타 챗봇 - 레플리 file 깊은바다 2024-01-17 306
오픈 컨트리뷰터의 코드 참고법에 대해 질문드립니다. [2] Roger 2020-10-19 109
딥러닝을 위한 레이블링 질문입니다. [1] Jang 2020-10-15 152
안녕하세요 가입인사드리며 질문도 하나 여쭙겠습니다. [2] 병쥐 2020-10-15 128
제가 만든 ai fitness 사이트 어떤 가요? 처음 만듬 [1] sdfsdf 2020-09-28 233
장고와 카카오 i 오픈 빌더 사용법 질문 ㅠㅠ file [1] 애뚱이 2020-09-19 320
[질문]학습과정에서의 Ram [2] 삽질만하네 2020-09-12 420
말 만들어주는 인공지능 만들었어요! [1] mail 2020-09-08 279
감성 AI 챗봇 문의드립니다. [2] 아임둥 2020-09-06 222
seq2seq train과 test 분리에 대한 질문 [4] Nike 2020-09-03 116
가입 인사드립니다. [2] 민주아빠 2020-08-04 121
개인 신분으로 연구 데이터(human3.6m)에 대한 접근 YONGS 2020-06-10 501
카카오톡 '나는 원숭이다' 해킹 사건의 전말 깊은바다 2020-05-23 1787
경사하강법 질문있습니다! [3] 평범한공대생 2020-04-29 216
신경망 관련 질문 드립니다. [1] 엄고 2020-04-28 144
객체 인식관련 질문드립니다. [1] harrym 2020-04-20 162