티스토리 뷰

Book

[2017.05.22]신경망 첫걸음 리뷰

람람뿅뿅 2017. 5. 22. 01:40
MarkdownPad Document

신경망 첫걸음 리뷰

"좋았다"를 넘어서서 "감사하다" 란 생각으로 마무리한 책입니다.

선택 동기

"말로만 할 수 있는건 싫어요."

  • 머신러닝 최신의 기술들은 신경망 기반의 발전된 알고리즘들입니다.

    퍼셉트론(perceptron), 다층 퍼셉트론(Multi-layer perceptron), 순전파(forward-propagation), 역전파(backward-propagation).. 활성함수(activation function) 등.. 개념을 알고있고 말로도 할 수 있었으나 무언가 공허했습니다. 왜 일까? 고민해보았을때, 저의 해답은 최신 논문을 보면 이해가 안되는 수식이 많고 저자가 제안하는 솔루션이 왜 더 좋은지 감이 잘 잡히지않았습니다.

"기초가 부족해요"

  • 그 원인은 저의 기초 부족이라고 결론을 내렸습니다. 미적분, 해석학, 선형대수 등의 아이디어를 뒷받침하는 수학이론들과 이 이론을 현실로 구체화하는 프로그래밍 능력의 부족 이라고 결론 내렸습니다. 과거 "텐서플로 첫걸음" 책에서 텐서플로 프로그래밍에 대해 도움을 받았고 무엇보다 상대적으로 얇은 책 두께에 가벼운 마음으로 다가설 수 있는 "첫걸음 시리즈" 였기에 이 책을 선택하게 되었습니다.

장점

"정말 수포자도 이해하네.."

  • 저의 기초부족은 꽤 오래전부터 인지하고 있었습니다만, 참 쉽지않았습니다. 마치 더하기를 어렴풋이 아는 상태에서 방정식 곱하기를 배우는 느낌이랄까요? 개념이 둥둥 떠다니는데 서로 연결은 안되는 기분이었습니다.

미분은 극한을 배운 후에 이해할 수 있다는데 왜 그럴까?

왜 지수 n을 n-1 로 해주고 상수는 사라질까?

...이런 의문이 해결되지않은 상태가 지속되던 상태에서 이 책을 만났고 미분에 관한 이야기는 부록에서 정말 통쾌하게 해결되었습니다. 한발짝 한발짝 점진적으로 설명해주는 저자 설명에 감탄하며 너무너무 뿌듯하게 읽은 책이었습니다.

"점진적 설명"

  • 위의 개념 설명때처럼 저자는 Python 코드 작성 또한 조금씩, 단계적으로 나아갑니다. 신경망을 구현하는 것이 최종목표이며, 이 목표를 위해 Task들을 잘게 쪼개서 하나씩 단계적으로 작성해나갑니다. 물론 이 코드들이 왜 이렇게 되는지는 이전의 이론설명의 장에서 모두 설명한 것들이므로 순차적으로 이해하며 읽어내려온 독자들은 코드구현에 집중할 수 있습니다.

단점

"단점을 발견하지못했습니다"

  • 전 이 책에서 단점을 발견하지못했습니다. 제가 모르던 부분을 명확히 알게해준 고마운 책이어서 그럴 수 있겠습니다. 어떻게든 짜내보려 순차적인 내용구성이나 신경망만을 다룬 것이 단점이 될까 생각해보았으나, 이것은 집필 의도에 해당하며 단점이 아닌 전략이라고 생각했습니다.

결론 및 활용

  • 세상 모든 지식이 그렇듯이, 하위 개념들을 알고있는 것이 상위 개념을 학습하는 시간을 단축시킵니다. 인공지능 분야에서 거론되는 최신의 기술들은 신경망에서 출발하며 신경망 또한 여러 개념들을 합친 상위 개념입니다. 이러한 개념 계층구조에서 생각해보았을 때, 본 책은 개념 사이를 잘 연결시켜 전달해주는 느낌을 받았습니다. 단순히 "좋았다!" 보다 "감사하다!" 란 느낌으로 책을 읽었습니다.

  • 신경망에만 집중하는 책이다 보니 분량이 그렇게 많지않을 수 있습니다. 대신, 깊이가 있습니다. 개인적으로 추천드리는 활용법은 손코딩입니다. 책의 반 정도는 신경망 이론 설명이고 나머지 반은 파이썬으로 신경망 구현하기 입니다. 여기서 구현과정을 보고 책을 덮고 손으로 써보는 것이 도움이 많이 되었습니다. 코드를 키보드로 입력해보는 것도 좋지만, 손으로 하는 것은 또 다른 의미를 가진다고 생각합니다. 출력 디바이스인 손과, 디바이스 컨트롤러인 뇌가 출력과정에서 지속적으로 연결되어 일어나는 작용이 저의 경험 상, 기억에 영향을 미쳤습니다.

Easy Come, Easy Go (쉽게 얻는 것은 쉽게 잃는다.)