Share           Pin It

데이터 분석 및 알고리즘 개발을 업으로 하면서 딥러닝 Deep learning은 늘 관심의 대상이었다. 하지만 알고리즘을 실제 구현해보거나 여러 라이브러리를 이용해서 실제 문제에 적용하는 것을 시도하지 않았기에 그런 의미에서 딥러닝에 문외한이라 할 수도 있다. 그럼에도 -- 빅데이터 기술을 어느 순간부터 결국 업에 적용했던 때와 같이 -- 딥러닝 기술도 언젠가는 내가 담당하는 업에 적용해야할 때가 올 것을 알았기에 알고리즘의 기본 지식을 공부하거나 딥러닝 발전의 주요 논문을 빼놓지는 않고 찾아보곤 했다. 딥러닝의 가능성이 일반에 알려지기 시작한 2013년도부터 계속 지켜봐왔기에 딥러닝 전문가는 아니지만 딥러닝의 발전 과정을 어느 정도 꿰뚫고 있다고 생각하기에 어떤 기술들이 현재의 딥러닝을 가능케했는지를 정리해보는 것이 의미가 있을 듯해서 글을 적는다. 일단 MLP 이전의 내용은 생략한다. 그리고 어플리케이션 특화된 기술 -- 예를 들어, Translation의 랭귀지 모델 등 -- 도 생략한다. 

0. 컴퓨팅 파워 (하드웨어)
아래에 여러 알고리즘이나 트릭을 소개하겠지만, 실제 딥러닝을 가능케했던 것은 결국 컴퓨팅 파워의 기하급수적인 증가에 있다고 본다. GPU/TPU로 대변되는 하드웨어의 발전뿐만 아니라, 딥러닝 시대 이전 시대인 빅데이터를 가능케한 그리고/그래서 현재 딥러닝에 무한한 떡밥을 제공하는 클라우드, 즉 값싼 스토리지의 대중화가 결국 딥러닝을 꽃피웠다고 생각한다. 아래에 소개할 다양한 알고리즘이나 대중화된 오픈소스/라이브러리 등의 소프트웨어 이전에 하드웨어 기술을 빼놓고 딥러닝의 성공을 얘기하는 것은 있을 수 없는 일이다.

1. Pre-taining
90년대 말이나 2000년대 초에 나온 오래된 Neural Network 책을 보면 히든 레이어의 수를 늘리면 더 강력해질 거라는 얘기는 계속 해왔다. 하지만 실제 또는 토이 문제를 해결하는 뉴럴넷은 히든레이어가 겨우 1개, 많아봤자 2개를 넘지 않았다. 데이터의 부재와 하드웨어 성능에도 문제가 있었지만 3개 이상의 히든레이어를 가진 네트워크를 제대로 학습시키는 것이 만만치가 않았다. 이론상으로는 완벽해도, 랜덤에서 시작해서 복잡한 네트워크를 최적화시키는 것이 만만치가 않다. 그렇게 뉴럴넷이 잊혀졌지만 프리트레이닝 방식으로 뉴럴넷을 초기화하는 방법이 소개되면서 딥러닝이라는 시대의 조류를 만들어냈다. (데이터와 하드웨어의 발전과 더해서) 대표적으로 정답세트가 필요없는 auto-encoder 방식이 도입되고, RBM이나 DBN을 이론적으로 풀어내면서 뉴럴넷 학습/최적화가 쉬워졌다. 임의의 초기화가 아니라 어느 정도 길들여진 초기화를 통해서 네트워크의 최적화가 엄청 빠르고 쉬워졌다.

2. ReLU (Recified Linear Unit)
전통적인 뉴럴넷은 히든레이어의 액티베이션을 위해서 주로 sigmoid나 tanh 함수를 사용했다. 수학적으로 좋은 성질 (미분 가능)을 갖고 있기 때문이다. 하지만 레이어의 개수가 증가함에 따라서 최종 아웃풋에서 발생한 loss를 앞쪽으로 제대로 전달하지 못하는 gradient vanishing 현상이 발생했다. 네트워크 구조는 엄청 딥하게 만들어놨지만 backprogation에서 가중치의 변동은 최종 1~2개의 레이어에서만 일어나고 앞쪽 레이어는 실질적으로 무용지물이 되는 현상이다. 이를 위해서 마이너스 영역은 0으로, 포지티브 영역은 y=x로 액티베이션하는 ReLU를 적용하면서 이 문제를 해결했다. 최근에는 마이너스 영역으로 무조건 0으로 치환하는 것도 바람직하지 않아서 y = -ax (a << 1.0)하는 것이 낫다는 연구도 있었고, 더 최근에는 y = x * sigmoid(x)로 바꾸면 더 낫다는 논문도 나왔다. (Step 함수의 수학적 불완전성을 보완한 것이 sigmoid 함수이듯이 같은 식으로 ReLU의 미분가능 버전으로 바뀐 것이 x * sigmoid(x)다. continuous & smooth --> 미분가능)

3. Batch Normalization/Re-normalization
뉴럴넷/딥러닝의 성능은 최적화에 좌우된다. 데이터와 알고리즘의 차원이 큰 경우에 최적화는 매우 불안정하다. 그래서 다양한 regularization 방식이 소개됐다. 가장 쉬운 방식으로 가중치의 절대값의 합을 최소화하는 L1이나 제곱의 합을 최소화하는 L2 regularization을 사용한다. 회귀모델에서는 잘 잘동하는데 딥러닝 구조에서는 이 또한 복잡하다. 그래서 초기 딥러닝에서 네트워크를 안정적으로 학습시키기 위해서 drop-out이라는 방식을 이용했다. 즉, 전체 네트워크에서 임의의 일부 노드를 의도적으로 비활성화시켜도 전체 성능이 떨어지지 않게 만드는 방식이다. 그런데 이 방식은 학습속도를 기하급수적으로 늦춘다는 치명적인 단점이 있다. 그러던 중, 히든 레이어의 액티베이션값을 노말라이제이션을 하면 드랑아웃 등의 별도의 레귤라이제이션없이 모델을 안정적으로 학습시킬 수 있다는 실험 결과가 있었고, 현재의 대부분의 네트워크에 이 기법이 기본적으로 적용돼있다. (더 최근에는 작은 규모 또는 non-iid 미니배치에서도 잘 작동하도록 개선한 re-normalization이 소개됨) 딥러닝/뉴럴넷의 기초가 되는 회귀분석 regression에서 모든 독립/종속변수는 Normal 분포를 따른다는 기본 가정이 있는데 (<-- 매우 중요한 속성임), 히든레이어를 노말라이제션하면서 모델을 안정시켜주는 것 같다.
** 사견을 더 하자면 (주제 넘은 얘기지만), 처음 딥러닝을 공부하는 분들은 인터넷에 올라온 동영상 강의 몇 개만 보고 예제 코드 구현/실행해보는 것만으로 마스터할 수 있다고 생각하는 듯한데, 우선 기초적인 것부터 차근차근 공부했으면 합니다. 미적분, 확통, 응선대, 최적화부터 다 공부하라는 것은 아니지만, 적어도 linear regression정도는 마스터하고 딥러닝을 논했으면 합니다. (딥러닝의 첫 강의가 대부분 회귀분석이기는 하지만...) 가끔 커뮤니티에 올라오는 질문을 보고 있자면 이건 딥러닝을 배우겠다는 건지 아니면 그냥 숟가락을 떠서 입에 넣어달라는 건지...

4. LSTM와 ResNet
현재 딥러닝은 데이터의 디멘젼이 무척 큰 (때론 가변적인) 문제에 잘 적용되고 있다. 그런 문제로 자연어/문자열과 이미지 처리가 있다. 처음에는 문자열 데이터에 RNN을 적용하고 이미지 데이터에 CNN을 적용해서 문제를 해결했다. 하지만 문자열이 길어지거나 레이어가 깊어지면서 약점이 발견됐고, 이를 해결하기 위해서 LSTM과 ResNet이 소개됐고 현재는 거의 기본 방식으로 인식된다. (LSTM과 ResNet은 제대로 공부한 것이 아니어서 더 길게 설명하면 틀린 설명만 추가할 듯합니다.ㅠㅠ 알파고 제로 논문에서 ResNet을 사용한 걸 보고 이 글을 적기 시작했는데 역설적이게도 ResNet에 대해서 제일 모름.) 오리지널 인풋이나 이전 과정의 중간결과물을 재활용(?)해서 네트워크를 개선하는 것이 전혀 새로운 아이디어는 아니지만, LSTM과 ResNet은 이 방식으로 딥러닝의 성능 향상 및 여러 애플리케이션에서 성과를 내고 있다.

이상의 알고리즘이나 방법론은 딥러닝을 안정적으로 최적화시키거나 실제 문제에 더 적합한 구조를 만드는 것들에 관한 것인데, 다음은 딥러닝의 대중화에 기여한 것들에 관한 것이다.

5. Word2Vec W2V은 구조가 매우 단순해서 실제 딥러닝과는 거리가 멀지만, (특히) 일반 개발자들 중에서 딥러닝을 처음 접했던 분들이 처음/쉽게 접하면서 딥러닝의 세계로 이끌었다고 해도 관언이 아니다. 몇 년 전에 딥러닝을 한다는 개발자를 만나면 대부분 그저 W2V으로 어떤 문제를 풀고 있는 경우가 많았다. 형태상으로 유사하지만 W2V은 엄밀히 말해서 딥러닝은 아니다. W2V은 잘 알려졌듯이 데이터를 임베딩하는 방식이다. 고차원의 데이터, sparse한 데이터, 또는 비정형 특히 비수치 데이터를 정형의 수치 벡터로 바꿔주는 것을 임베딩이라고 이해하면 된다. 경우에 따라서 효과적인 데이터 차원 축소 방식을 제공하기도 한다. 그리고 이런 임베딩을 통해서 얻어진 수치벡터가 딥러닝의 인풋으로 활용되기 때문에 딥러닝과 무관하다고 말하기도 어렵다. 이후에 Glove 등의 다른 임베딩 방식의 발견에도 기여했다.

6. TensorFlow 2013년에 텐서플로우가 있었다면 제가 직접 다양한 딥러닝 알고리즘을 구현해서 여러 문제에 적용하는 것을 꾸준히 했을 거라는 생각이 든다. 개발에 익숙치 않은 개발자(??)에게 딥러닝의 모든 알고리즘을 직접 구현한다거나 일부 공개된 라이브러리를 제대로 활용하는 것이 쉬운 일이 아니다. 그래서 구현해서 적용해보는 건 포기하고, 그냥 이 동네에 기웃거리면서 어떻게 발전되는지만 지켜보고 있ㄴ...(ㅠㅠ) 텐서플로우 이전에도 Caffe나 Teano, Torch 등의 오픈 딥러닝 라이브러리가 있었지만 이 분야에 익숙한 전문가들을 위한 전유물이었다. 하지만 구글에서 텐서플로우를 오픈하면서 딥러닝이 좀더 일반인(?)에게로 저변이 확대됐다. 결과적으로 인공지능 (딥러닝)이 많은 부분에서 이젠 엔지니어링 분야로 넘어왔다고 봅니다.
(여담) 구글에 텐서플로우를 공개한 것은 하둡이나 하이브 등의 빅데이터 표준에서 밀렸던 과거가 있었기에 가능했다. 실제 맵리듀스나 빅테이블 등의 많은 빅데이터 개념들이 구글에서 나왔지만 그걸 모방한 하둡이 실질적인 표준이 됐다. 씨는 구글이 뿌렸지만 열매는 다른 기업들이 따먹은 것과 같았는데, 같은 실수를 인공지능 분야에서도 반복하지 않기 위해서 텐서플로우를 공개했고, 현재로써는 대중화에 성공했다고 본다.
추가 (2017.10.31) 갑자기 아이디어가 떠올라서 Python + Keras로 텐플을 이용중이다. 케라스 시퀀스 모델에 위에 설명한 개념들을 기계적으로 추가해서 Run하면 그만이다. 속도는 구조와 데이터가 커서 느리지만, 오늘 딥러닝을 처음 접한 사람도 바로 따라할 수 있다. 엔지니어링의 승리다.

7. Reinforcement Learning과 GAN 현재 가장 핫한 분야는 강화학습과 GAN일 거다. 인공지능 기술을 진짜 인공지능이 되도록 만들어주는 기술이라해도 과언이 아니다. 인공지능을 지능이라 부르기 위해서는 알고리즘이 ‘스스로 적응’할 수 있어야할텐데, 강화학습과 GAN이 가능하게 해주고 있다고 본다. 개인 소견으로 딥러닝이 인공지능의 끝은 아니라고 생각하지만, 어쨌든 현재로썬 강화학습과 GAN의 등장으로 딥러닝이 진짜 인공지능답게 만들어지고 있다고 본다.
(여담) 보통 강화학습을 supuervised와 unsupervised와 별개의 새로운 카테고리에 넣어서 설명하는데, 저의 개인적 의견은 강화학습을 supervised 하위에 넣는 게 맞다고 본다. 처음부터 결과를 알고 있는 supervised와는 달리 결과에 따른 리워드 (win/lose, 점수)가 나중에 평가된다는 점이 다소 다르지만 리워드 자체는 일종의 슈퍼바이저라고 보는 게 맞을 듯하다는 생각에서다. (사견이니 무시해도 된다.)

개발자들이 딥러닝을 쉽게 접급하게 해준 것은 Word2Vec, 일반인들이 딥러닝/AI에 관심을 갖게 만든 것은 강화학습을 이용한 AlphaGo (Atari가 먼저지만, 임팩트 면에서), 일반인들이 (그나마) 쉽게 딥러닝을 공부하고 다룰 수 있게 해준 것은 TensorFlow, 우리 실생활의 문제들에 딥러닝이 적용될 수 있게 해준 것은 LSTM (ResNet은 정확도를 높인..), 그리고 딥러닝을 더욱 인공지능처럼 만든 것은 강화학습과 GAN. ... 일런 것을 가능케해준 여러 지속적인 개선들... 뉴턴은 거인의 어깨 위에 섰기 때문에 조금 더 멀리 볼 수 있었다고 말했지만, 거인은 난쟁이들이 쌓아놓은 무수한 모래 성이 있었기에 그 위에 설 수 있었던 것 같다. 최근 10년, 대부분은 최근 3~4년 내에 일어난 사건들... 빠르다. (물론 LSTM과 같이 20년 전에 제안돼서 지금 꽃을 피우는 기술도 있다.)

설명이 부족하거나 일부 틀린 내용이 있을 수도 있습니다. 좀더 면밀히 공부해서 제대로 수정/보강하도록 노력하겠습니다.

이걸 그냥 적당히 슬라이드로 만들어서 전문가인양 모르는 사람들한테 약이나 팔고 다닐까? 하지만 어려운 기술에 대한 연성의 (쉬운이 아닌) 자료는 아무에게도 도움이 되지 않는다는 걸 깨달았습니다. 일부 약장수를 제외하곤...

** 딥러닝이 지금 인공지능을 이끌고 있지만, 인공지능의 미래가 딥러닝에 있다고는 생각지 않습니다.

=== Also in...

F: https://www.facebook.com/unexperienced

댓글을 달아 주세요

Share           Pin It

팀 내에 공유했던 딥러닝 Deep Learning 발표자료를 공유합니다. 수식을 포함한 아주 상세한 내용을 다루지는 않고, 그저 개념적인 설명을 위한 자료입니다. 인공신경망 ANN의 기초적인 이해부터 다양한 애플리케이션에 적용된 DL의 구조를 보여주는 것이 목적입니다. 발표를 위한 자료라서 그저 슬라이드만으로는 이해가 부족할 수도 있습니다. 그저 참고용으로 활용하시기 바랍니다.



==

페이스북 페이지: https://www.facebook.com/unexperienced

댓글을 달아 주세요

Share           Pin It
요즘 IT 쪽에서 가장 뜨거운 이슈 중에 하나는 분명 딥러닝 Deep Learning 일 듯하다. 마치 몇 년 전에 빅데이터 Big Data 기술들이 처음 소개되고 성공 스토리들이 언론에 회자되던 때를 회상하게 만든다. 그러나 일반인들에게 딥러닝이 빅데이터만큼 쉽게 받아들려지고 확대될 수는 없을 것같다. 그 이유는 분명하다. 어렵기 때문이다. 물론 다양한 오픈소스가 만들어지고 최적화된 방법론이 소개되겠지만, 그걸로는 충분치가 않다. 소수의 선택된 자들 외에는 딥러닝은 그저 그림의 떡이다. 어렵기 때문이다. 빅데이터는 단편적인 기본 지식만 있어도 (실제 적용까지는 힘들더라도) 현상을 이해하기에 충분하지만, 딥러닝은 언론이나 컨퍼런스에 소개되는 내용만으로 이해하기란 거의 불가능하다.

최근에 몇 편의 논문이나 동영상 강의 자료를 탐독하면서 딥러닝이 어렵다는 것을 재확인했고, 그 어려움의 실체에 대해서 감을 조금 잡았다. 그래서 이 글을 적는다. 제목에 초보자라고 적었지만, 생판 초보자를 의미하지는 않는다. 아래에 제시된 분야 중에서 일부 분야에 조금 익숙한 또는 일부 분야에 덜 익숙한 사람을 초보자라고 부르겠다. 그렇지 않은 사람들은 이 글을 스킵할 것을 조언한다.

만약 딥러닝을 공부하고 개발하고 실무에 적용해야 하는 상황에 닥쳤다면 가장 현실적인 조언은 "피할 수 있으면 피하라. 만약 피할 수 없으면 포기하라"다. 때로는 딥러닝이 기존의 여러 AI 알고리즘보다 더 나은 성능을 보여주기도 하고 또는 사람들의 labor-intensive한 노력없이 괜찮을 성능을 보여주기 때문에 지금 딥러닝에 열광하는 것이다. 혹시 다른 대안 (딥러닝보다는 성능이 조금 떨어지거나 충분한 인력이 투입되어 노하우가 녹아있는 알고리즘이나 시스템)이 존재한다면, 굳이 딥러닝을 시도할 필요가 없다. 물론 더 큰 조직이나 더 똑똑한 무리들이 딥러닝으로 치고 나가면 미래에 격차가 더 벌어질 가능성도 충분하지만, 지금 조직에서 단지 몇 명이 딥러닝을 공부해서 적용한다고 해서 그들을 따라잡을 가능성은 크지가 않다. 너무 절망적인가? 그렇다면 나의 의도가 충분히 충족됐다고 본다.

언론에서 얘기하는 것 때문에 딥러닝에 관심을 가져서 구글로 Deep learning으로 검색해서 임의로 논문 한편을 골라서 읽어본다면 분명 처음에는 쉽게 이해하기 어려울 것이다. 초보자를 위해서 처음부터 끝까지 쉽고 상세하게 적은 그런 리뷰 논문이 아니라, 최근 어떤 분야에서 딥러닝으로 괄목할만한 성과를 이뤄냈다는 식의 10장 짜리 논문을 한 번에 이해하는 사람은 거의 없을 것같다. 최근 몇 편의 논문을 읽으면서 생각하기로 크게 두가지 이유 때문인 것같다. 첫번째는 뉴럴 네트워크 (보통 Neural Network, 즉 NN으로 표기하지만, 정식 명칭은 인공신경망 즉 Aritificial NN (ANN)이다)에 대한 이해가 부족하기 때문이고, 두번째는 딥러닝이 적용된 애플리케이션 분야에 대한 지식 부족 때문이다. 굳이 하나 더 추가하자면 대부분의 논문이나 강의가 영어로 돼있다는 점도 크게 작용한다.

일반인들이 ANN에 대한 기초 지식없이 단순히 딥러닝이 ANN을 확장했다고만 언급하고 그것을 모델링하고 최적화하기 위해서 사용된 방법을 간략히 소개만 하고 넘어가면 당연히 그 논문을 제대로 이해할 길이 없다. 그런데 ANN을 제대로 이해하기 위해서는 인체 내에서 벌어지는 뇌의 활동을 먼저 이해해야 하고, 그걸 실행가능한 형태의 (그래피컬) 모델을 그려낼 수 있어야 하고, 정보 전달 메커니즘인 로지스틱 회귀분석 (선형 회귀분석과 액티베이션)에 대한 이해가 필요하고, 가장 중요하게도 각종 파라메터를 최적화하는 방식을 이해해야지 딥러닝의 가장 기초인 MLP (Multi-Layer Perceptron)을 겨우 이해할 수 있다.

뇌과학자가 아닌 이상 뇌에서 의사결정을 위해서 뉴런들이 시그널을 전파하고 합쳐지고 리즈닝하는 것을 정확히 이해할 수 없다. 더욱이 뇌에 대해서 밝혀진 것은 여전히 극소수에 불과하다. 그런 후에 뉴런들 간의 인터렉션을 MLP든 아니면 다른 형태의 Network로 적절히 모델링해야 한다. 머신 러닝에서 가장 간단한 알고리즘이지만 선형회귀나 로직스틱회귀도 전공자가 아니면 외계어다. 본인도 최근에서야 ANN에서 사용되는 W 행열과 B(bias) 벡터, 그리고 sigmoid 액티베이션 함수가 선형회귀/로지스틱회귀 모델임을 자각했다. 그런데 ANN은 많은 수의 회귀모델의 앙상블 Ensemble이고, 딥러닝은 그런 ANN 및 다른 네트워크 아키텍쳐의 앙상블이다. 여기까지는 그래도 조금의 뇌지식이나 확률 지식만 가져도 개념적으로 쉽게 이해가 된다. 그러나 마지막으로 W와 B 등의 파라메터를 최적화하는 Back-propagation을 이해하려면 미적분에서부터 시작해서 네트워크 토폴로지에 따른 다양한 object 및 loss function을 정의하고,그에 따른 Gradient 기반의 최적화 방법을 이해해야 한다. 개념적으로는 쉽지만 수식이 좀 복잡해져서 포기하게될 가능성이 높다. 이정도의 최소한의 지식이 있으면 이제 가장 간단한 형태의 MLP ANN을 이해했다고 볼 수 있다. (구현 이슈도 있지만)

그리고 다른 글에서도 적었지만 딥러닝이 단순히 MLP에서 히든 레이어의 개수를 늘리거나 히든 노드의 개수를 늘리는 것이 아니다. 개념적으로는 그렇지만 더 다양한 형태의 아키텍쳐와 모델들이 합쳐져야 제대로된 딥러닝이 만들어진다. 예를들어, 주어진 데이터나 문제에 따라서 RBM이나 Belief network에 대한 이해가 필요하고, auto-encoder나 sparse coding 등도 이해할 필요가 있고, CNN (Convolution)이나 RNN (Recursive), Multi-moidal/tasking 등의 다양한 형태의 네트워크나 조합에 대한 이해가 필요하다.

ANN에 대해서 충분한 지식이 있는 이들도 딥러닝을 쉽게 이해하기 어려운 다른 이유는 딥러닝이 적용된 분야의 특수성 때문으로 생각한다. 현재까지 딥러닝이 가장 효과를 보여주는 분야는 일반적으로 AI에서 패턴인식 Pattern Recognition으로 알져진 분야다. 패턴인식은 단순히 매트릭스 형태의 수치데이터를 가공하는 데이터마이닝과는 차원이 다르다. 딥러닝의 초기에는 음성인식에서 두각을 나타냈고, 그 후에 자연어처리 NLP, 그리고 이미지처리 등에서 효과를 보여주고 있다. 그런데 이런 음성, NLP, 그리고 이미지/동영상 분야는 나름의 도메인 지식이 필요하고, 딥러닝 이전부터 활발히 연구됐던 다양한 알고리즘들이 존재한다. 그런데 딥러닝을 다룬 한편의 논문에서는 이런 응용분야의 백그라운드 지식에 대한 장황한 설명없이 단지 어떤 문제(예를들어, POS 태깅)에 딥러닝을 적용해서 기존에 가장 우수한 성능을 보여줬던 어떤 알고리즘보다 더 나은 성능을 보여줬다라고 결론을 내린다. 도메인 지식이 없는 사람에게 딥러닝 논문은 참 난관이다.

이런 저런 모든 배경 지식을 습득했다고 하더라도 문제는 이걸 구현하는 것도 이슈다. 물론 요즘은 다양한 오픈소스가 존재하기 때문에 그걸 이용할 수도 있다. 그러나 자신의 문제에 맞게 그런 오픈소스를 최적화하는 방법도 만만치가 않다. 많은 배경지식에 더해서 각 분야에 대한 많은 경험과 노가다가 있어야지 딥러닝을 제대로 활용할 수가 있다. 노가다에 대한 충분한 준비가 된 자라면 딥러닝에 도전하기 바란다.

길게 엄살을 적어놨지만, 앞으로 딥러닝에 더 관심을 가지고 다양한 분야에서 좋은 성과를 내기 위해서 딥러닝에 대한 더 깊은 이해가 필요하고, 그리기 위해서 필요한 기초 지식 트리를 설명하기 위해서 글을 적는다. 계속 공부하고 테스트해보면서 더 깊은 내용은 다음 기회에...

이전 글에서도 짧게 적었지만, 아무리 딥러닝이 어렵더라도 마치 많은 양의 데이터로 기계를 학습시키듯이 다양한 딥러닝 관련 글과 논문을 꾸준히 읽고 고민하다 보면 마치 ANN의 노드들 사이에 연결이 생기고 파라메터가 최적화되듯이 딥러닝에 대한 이해도 조금씩 누적되어 마스터하는 날이 올 수도 있다. 당장 어렵더라도 포기하지 말고 꾸준히 스스로를 학습시키기 바란다.

여담으로 딥러닝에 GPU가 좋은 컴퓨터가 필요하다고 하는데, 이는 네트워크의 파라메터를 최적화하기 위해서 크고 많은 수의 매트릭스/벡터 연산이 필요하기 때문이다. 즉, 이미지 시각화를 위해서 매트릭스 연산에 최적화된 GPU가 CPU보다는 딥러닝의 연산에 더 적합하다는 얘기다. 최근 비트코인을 채굴하기 위해서도 GPU가 많이 필요하다는 얘기를 들었는데, 비트코인 채굴을 위한 계산도 많은 수의 매트릭스 연산 때문인 듯하다.
 
P.S., NIPS 2014에 다녀온 후배의 후기를 봐도 현재 딥러닝이 얼마나 핫한 이슈인지를 알 수가 있습니다. (링크. 2014 NIPS 후기)

==
페이스북 페이지: https://www.facebook.com/unexperienced


댓글을 달아 주세요