brunch

You can make anything
by writing

C.S.Lewis

by 미소해 Oct 05. 2020

파이토치 코드로 맛보는 3분 딥러닝

3분 딥러닝 - 파이토치 맛

맛보다


1. 음식의 맛을 알기 위해 먹어보다

2. 몸소 겪어보다



다양한 분야의 지식을 맛보기를 통해 빠르고 간편하게 접해보라는 기획의도로 한빛미디어에서 3분 시리즈를 냈다. 쉽지 않은 분야의 지식을 3분에 맛볼 수 있다니 궁금했다. 처음 택한 맛은 '딥러닝 파이토치 맛'.



토치라는 단어 때문에 숯불 맛일 거라 상상하면서 골랐다.


프로그래밍과 관련된 대부분 책들은 툴과 소스 받는 법을 설명하고, 새로운 개념 및 용어에 대한 설명을 하고, 동작 방식을 설명하고, 이를 구현한 소스를 소개하는 순서로 내용을 전개한다(주관적인 경험이므로 항상 그렇다는 것은 아니다). 이 방식은 이론을 제대로 이해하고, 실습을 할 수 있다는 장점이 있다. 하지만 진입장벽이 높은 분야일 경우 진도를 나가기 어렵다는 단점이 있다.


(내가 경험한) 강의는 대부분 간략하게 이론을 설명하고 이를 구현한 코딩을 하나씩 따라 하게 한다. 강의를 듣기만 할 때는 집중하기 어려운 내용도 하나씩 따라 하면 집중력도 높아지고 입력한 코드들을 보며 성취감도 느낄 수 있다. 눈으로 보는 것과 직접 해보는 것의 차이는 크다. 자꾸 해야 익숙해지고, 익숙해지면 어렵지 않게 느끼게 된다. 어렵지 않다고 느껴야 자꾸 해본다. 단점은 따라 하느라 정신이 없고 산만하다.


딥러닝은 어려운 분야다. 수학에 대한 지식도 있어야 하고, 알고리즘도 이해해야 한다. 낯선 용어들이 난무한다. 신경망을 따라 했다고 하지만 내 생각이 신경망처럼 동작하지는 않는다. 내용을 읽다 보면 조사만 아는 용어인 경우도 있다.


그래서일까? 이 책은 후자 방식을 택한다.


"새로운 프로그래밍 언어나 라이브러리를 학습하는 가장 좋은 방법은 무엇일까요? <3분> 시리즈는 긴 설명을 읽기보다는 직접 코드를 입력해가면서 익히게 해 쉽고 재미있습니다."


거기에서 멈추지 않는다. 더 자세한 이론을 알고 싶은 독자들을 위해 이 책에서는 자세한 설명이 있는 책이나 영상을 추천한다.


이 책은 기본적인 인공 신경망(ANN)부터 패션 아이템을 구분하는 DNN, 이미지 처리하는 CNN, 사람의 지도 없이 학습하는 오토 인코더, 문자열, 음성, 시계열을 분석하는 RNN, 딥러닝을 해킹하는 적대적 공격, 두 모델이 경쟁을 통해 최적화하는 GAN, 주어진 환경과 상호작용하며 스스로 성장하는 DQN 등 많이 소개되는 일반적인 알고리즘부터 핫한 알고리즘까지 다 다룬다.


그런데 두께가 얇다!!! 유명한 딥러닝 책들을 사놓고 조사만 읽다 말았는데, 이 책은 끝까지 읽었다. 또 읽어볼 생각이 든다. 나 같은 딥러닝 초보를 잘 겨냥한 책이다.


CHAPTER 3 ANN에서 머신러닝 핵심 개념과 파이토치 필수 기능, 머신러닝에서 사용되는 기술까지 다루어서 내용이 좀 어렵게 느껴지긴 하겠지만 이후 장부터는 좀 더 쉽게 이해할 수 있다.


이 책을 펴면서 아래 2가지가 가장 궁금했다.


"파이토치는 무엇일까?

텐서플로와의 차이점은?"


1. 파이토치


https://images.app.goo.gl/j9BDCzdFYWFLrr1Y8

파이토치는 페이스북 주도로 여러 회사와 대학이 합심해 개발한 오픈소스 소프트웨어다. 머신러닝과 딥러닝 모델을 쉽게 구현할 수 있도록 "가장 간결하고 직관적이고, 코드가 의미하는 바를 그대로 나타내도록" 다양한 편의를 제공한다. 파이썬 다움을 가장 잘 살린 딥러닝 프레임워크라 할 수 있다.


2. 텐서플로와 차이점이라 쓰고 파이토치 장점이라 읽는다

https://images.app.goo.gl/9Hwk5VYd6EHpo6FH9


텐서플로는 구글의 딥러닝 연구 외에도 여러 구글 서비스의 인프라를 지원하기 위해 개발되었기 때문에 파이토치에 비해 일반 사용자가 이해하거나 사용하기 어렵다.


텐서플로를 비롯한 대부분 딥러닝 프레임워크는 정적 계산 그래프 방식으로 파이썬을 사용한다. 정적 계산 그래프 방식은 그래프 계산 방식을 정해두고 실행하는 것이라고 한다. "정적인 데이터 셋으로 학습하고 정적인 모델을 배포하여 쓰는 오프라인 방식에 최적화" 되어 있다.


파이토치는 실행 중에 그래프를 바꿀 수 있는 동적 계산 그래프 방식을 사용하여 데이터에 따라 유연하게 대응할 수 있다. 향후 자율 주행차, 게임, 인터넷 등 많은 데이터를 실시간으로 대응하는 동적인 학습 방법이 중요해질 전망이므로 실행 중 모델을 변경할 수 있는 파이토치는 향후 많이 활용될 것으로 보인다.


저자는 가장 큰 장점으로 "딥러닝 이외의 지식을 공부해야 할 수고를 덜 수 있다"는 것을 꼽으며 딥러닝을 시작하는 사람들에게 파이토치를 권한다.




기억에 남는 알고리즘 중 하나가 뉴럴 기계 번역 알고리즘 Seq2Seq이다. RNN 기반의 번역 모델인 Seq2Seq는 쌍을 이룬 원문과 번역문이 많이 필요하다. 학습이 충분히 안될 경우 아래와 같은 번역 오류가 생긴다. 



딥러닝의 한계가 있다는 것에 안도감을 느낀다.


https://www.netflix.com/kr/title/81254224

개발자들은 순수하다. 새로운 기술에 관심을 갖고 이를 통해 다양한 문제를 해결하려 한다. 하지만 기술은 우리가 의도한 대로 항상 순수하게만 사용되지는 않는다. (좀 오버일지도 모르지만) 항상 균형 어린 시각을 갖길 바라는 마음에 넷플릭스의 <<소셜 딜레마>>도 보길 추천한다.


* 이 책은 한빛미디어로부터 '나는 리뷰어다' 활동으로 제공받았으나 일부 내용은 책 내용을 요약하였고, 일부는 제 주관적인 의견입니다.



















매거진의 이전글 혼자 공부하는 첫 프로그래밍 with 파이썬
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari