티스토리 뷰

(해당 포스트에서 소개하고 있는 "밑바닥부터 시작하는 딥러닝 3" 책은 한빛미디어로부터 제공받았음을 알려드립니다.)

 

밑바닥부터 시작하는 딥러닝 3

밑바닥부터 만들며 배우는 딥러닝, 이번에는 프레임워크입니다. 3편의 목표는 딥러닝 프레임워크 안의 놀라운 기술과 재미있는 장치들을 밖으로 꺼내보고 제대로 이해하는 것입니다. 현대적이

www.hanbit.co.kr

  아마 인공지능과 관련된 연구나 업무를 하고 있는 사람이라면 누구나 Tensorflow나 PyTorch, MXNet같은 딥러닝 프레임워크를 사용할 것이다. (몇몇 프레임워크는 C++이나 java같은 언어로 포팅이 되어 있겠지만) 대부분 이 프레임워크를 다루기 위해서는 파이썬을 잘 다루고, 뭔가의 수학 공식을 코드로 옮길 줄 알고 있을 것이다. 말이 쉬워보이지만, 이런 프레임워크가 미분도 자동으로 해주고, 사용자가 정의한 텐서를 이용해서 계산도 잘 할 수 있도록 해줬기에, 사용자가 조금 더 쉽게 구현에 집중할 수 있게해줬고, 덕분에 기술의 발전이 빠르게 진행되지 않았나 하는 생각을 해본다. 그런 뭔가 이름만 들으면 복잡해보이는 프레임워크를 우리가 직접 만들어볼 수 있을까? 

 어쩌면 이 책이 그 답이 될 수 있지 않을까 생각해본다.

그림 1. 밑바닥부터 시작하는 딥러닝 3

 2017년에 처음 출간했던 "밑바닥부터 시작하는 딥러닝" 시리즈가 올해 3편으로 출간되었다. 딥러닝에 대한 기초 지식과 이미지 처리와 관련된 내용을 다뤘던 1편과, 언어와 같은 Sequence data를 처리하는 방법을 다뤘던 2편과는 다르게 3편에서는 앞에서 소개했던 그 복잡해보이는 딥러닝 프레임워크를 직접 만드는 내용을 다루고 있다.

 사실 어쩌면 처음 보는 사람은 막막하게 느껴질 수 있다. 딥러닝 프레임워크를 구현하려면 파이썬 문법을 알고 있는 것을 넘어서서 프레임워크의 구조도 잘 정의해야 하고(어떻게 보면 소프트웨어 공학적인 내용이 필요하지 않을까 싶다.), 앞에서 언급했던 것처럼 텐서를 다루는 방법이나, 자동 미분 같은 수학 이론도 구현할 수 있어야 한다. 나열하다 보니까 단순히 딥러닝 이론만 알고 있다고 해서 모든 것이 구현될 것 같지는 않아 보인다. 그래서 이 책의 선수 지식도 보면 딥러닝 기초이론이나 객체 지향에 대해서 알고 있는 것을 필요로 한다.

딱 인공지능을 알고 있다고 가정지었을 때, 프레임워크가 필요한 요소는 어떤게 있을까 생각을 해보았다. 일단은 변수를 담을 텐서 정의가 필요할 것이고, 신경망을 구성하는 노드, 계층 들도 유기적으로 연결되게끔 구성되어야 할 것이다. 또한 각 노드별 가중치를 업데이트하기 위한 backpropagation도 있어야 할 것이고... 예측치와 실제값간의 오차를 표현할 loss function, optimizer도 필요할 것이다. 이런 내용은 Tensorflow나 Pytorch에는 API로 쉽게 구현되어 있기 때문에, 일반 사용자들은 구글링이나 공식 문서를 통해서 쉽게 가져다 쓸수야 있다지만, 우리가 구현한다면 이 모든게 가능할까 싶었다.

 그런데 이 책에서는 이런 내용을 모두 다루고 있다. 오히려 진짜 실제 딥러닝 프레임워크처럼 멋있는 시각화도 구현되고(물론 Tensorboard 같이 현란한 시각화까지는 아니지만, 내부 구조를 설명할 시각화는 이뤄진다.), 심지어는 GPU와 연동시켜서 성능을 개선하는 내용도 담고 있다. 딥러닝 개발 책인데, 메모리 관리같은 성능 측면을 다루고 있는 부분도 흥미로웠다.

그림 2. 딥러닝 구조 시각화

 위 사진은 책에 실제로 실려있는 딥러닝 구조를 시각화한 내용이다. 처음에는 책에 파본이 생긴줄 알고 깜짝 놀랐었는데, 이렇게 복잡한 딥러닝 내부 구조도 구현하고 시각해볼 수 있게끔 도와준다.  

그림 3. 밑바닥부터 시작하는 딥러닝 시리즈

 개인적으로는 딥러닝이라는 것을 모르는 상태에서 1편을 봤었고, 막 관심을 가지기 시작할 때 2편을 본 입장에서, 이 책은 정말 딥러닝에 대한 내용을 잘 모르는 사람이라도 책을 읽었을 때, 직접 구현해보면서 원리를 이해할 수 있다는 책의 컨셉이 참 맘에 들었다. 3편도 역시 총 60단계로 나눠서, 직접 딥러닝 프레임워크를 구현해보는 과정을 설명하고 있고, 기존 책의 의도를 물려받아 되도록 쉽고, 직접 구현해보면서 학습할 수 있는 내용 전개가 이뤄지고 있다. 이론이나 구현에만 치우쳐, 소위 말하면 "재미없는" 딥러닝 책이 아닌, 둘다 겸비하여 구현이라는 경험을 해볼 수 있는 것은 이 책이 다른 책들과 비교했을 때 더 돋보이게 하는 특징이라고 생각한다.

 책이 담고 있는 주제의 특성상 분명 이 책은 처음 인공지능을 배우는 사람을 위한 책이 아니다. 더구나 프레임워크 구현과 관련된 내용이기에, 딥러닝 본연의 내용과 더불어 소프트웨어 구조나 하드웨어 의존성과 같은 조금은 외적인 내용에 대해서도 어느정도 숙지가 되어 있어야 한다. 하지만 본인이 어느정도 경험이 있고, 무엇보다 직접 이런 프레임워크를 구현하고 싶다는 생각을 가진 사람한테는 많은 것을 느낄 수 있게 해주는 책이다. 더불어 최종 60단계를 거쳐 딱 만들어진 프레임워크를 보면, 조금은 뿌듯하면서 뭔가 새로운 것도 만들어 보고 싶은 그런 느낌도 주지 않을까 싶다.

 

PS1: 사실 이 책 이전에도 딥러닝 모델을 직접 구현하는 방법에 대해서 소개한 책이 있다. 

 

파이썬 날코딩으로 알고 짜는 딥러닝

이 책은 딥러닝 알고리즘의 원리를 깊숙이 이해하고 이를 파이썬 코딩만으로 구현하는 데 주안점을 둔다. 이를 위해 가장 간단한 신경망 구조부터 복잡한 응용 구조까지 다양한 딥러닝 신경망

www.hanbit.co.kr

"밑바닥부터 시작하는 딥러닝" 책은 구조적 측면을 강조하면서 직접 프레임워크를 만들지만, 위의 책은 데이터에 딱 맞는 형태로 모델을 직접 구현하는 방식으로 설명되어 있는 책인데, 두 책 다 직접 구현해본다는 점에서 내용 전개가 유사하고 마찬가지로 추천할만한 책이다.

PS2: 이 책이 3권이라, 1권, 2권을 꼭 읽어야 할 책인지에 대해서 궁금할 수 있다. 글에도 설명한 것처럼 1권은 딥러닝 기초 지식과 이미지 처리 모델 관련 설명이 되어 있고, 2권은 순환 신경망에 대한 내용이라 3권과는 크게 관련이 없다. 읽으면 내용 이해에 도움이 될 정도?

책의 repository는 아래를 참고하면 좋을 것 같다.

 

WegraLee/deep-learning-from-scratch-3

『밑바닥부터 시작하는 딥러닝 ❸』(한빛미디어, 2020). Contribute to WegraLee/deep-learning-from-scratch-3 development by creating an account on GitHub.

github.com

 

댓글