최근 수정 시각 : 2022-04-23 10:59:24

딥 러닝

딥러닝에서 넘어옴

{{{#!wiki style="margin: -5px -10px; padding: 10px 0px; background-image: linear-gradient(to right, #33CCCC , #0066DC)"
컴퓨터 과학 & 공학
Computer Science & Engineering

{{{#!folding [ 펼치기 · 접기 ]
{{{#!wiki style="letter-spacing: -1px; margin:-8px -1px -11px"
<tablewidth=100%> 기반 학문
수학{ 공업수학 해석학 이산수학 수리논리학 선형대수학 미적분학 대수학( 환론 범주론) • 정수론} • 암호학 전자공학 언어학( 형태론 통사론 의미론 화용론 음운론) • 인지과학
컴퓨터 하드웨어 구성
SoC CPU GPU( 그래픽 카드 GPGPU) • ROM RAM SSD HDD
기술 및 연구
기술 연구
기계어 어셈블리어 C( C++ C#) • Java Python BIOS 절차적 프로그래밍 객체 지향 프로그래밍( 디자인 패턴) • 해킹 ROT13 OTP IoT 와이파이 GPS 임베디드 인공신경망 OpenGL EXIF 마이크로아키텍처 ACPI UEFI NERF gRPC 리버스 엔지니어링 HCI UI UX 대역폭 DBMS NoSQL 해시( SHA 브루트 포스 레인보우 테이블 salt 암호화폐) • RSA 암호화 논리 회로( 보수기 가산기 불 대수) • 이론전산학 알고리즘 자료구조 데이터베이스 프로그래밍 언어{ 컴파일러( 어셈블러 JIT) • 인터프리터 유형 이론} • 메타데이터 딥러닝 빅데이터 폰노이만 구조 양자컴퓨터 행위자 모델 인코딩( 유니코드 MBCS) • 네트워크 컴퓨터 보안 OCR 슈퍼컴퓨터 튜링 머신 FPGA 딥러닝 컴퓨터 비전 컴퓨터 그래픽스 인공지능 시간 복잡도( 최적화) • 소프트웨어 개발 방법론 정보처리이론 오토마타 이론 • 재귀 이론 • 자연 언어 처리( 기계 번역 음성인식) }}}}}}}}}


||<-10><tablewidth=100%><tablebgcolor=#fff,#191919><bgcolor=#ABCDEF,#000><tablebordercolor=#ABCDEF,#000> 학습 ||
행동학습 인지학습 기계학습 심층학습
단순학습 연합학습 사회학습 잠재학습 통찰학습 지도학습 자율학습 강화학습
습관화 민감화 고전적 조건형성 도구적 조건형성


1. 개요2. 설명3. 딥러닝을 효과적으로 공부하려면??
3.1. 공부를 시작하기 전에3.2. 딥러닝 알고리즘을 이해하기 위한 기본기3.3. 딥러닝 관련 사이트3.4. 딥러닝 관련 책, 강의자료
3.4.1. 책3.4.2. 강의
4. 같이보기

1. 개요

深層學習(심층학습) / Deep Learning / Aprendizaje Profundo

기계학습 기술의 종류 중 하나인 인공신경망을 수많은 계층 형태로 연결한 기법을 뜻하며 현대 인공지능 기술의 핵심이자 앞으로 더더욱 각광받게 될 기술이다.[1]

2. 설명

쉽게 말하자면 함수관계에 있는 x와 y는 있지만, x로부터 y를 예측할 수 있는 모델이 없을 때 대안으로 쓸 수 있는 방법이다.[2]
쉽게 이해할 수 있는 개념인 회귀분석의 상위 호환격 방법이라고 생각하면 된다.

입력과 출력 사이에 있는 인공 뉴런들을 여러개 층층이 쌓고 연결한 인공신경망 기법을 주로 다루는 연구이다. 인공신경망을 여러 개 쌓으면 Deep learning, RNN을 여러 계층으로 쌓으면 Deep RNN, .. 같은 식이다.

인공신경망 자체는 꽤 오랫동안 존재해 왔고, CNN이나 RNN과 같은 신경망 모델도 80년대에 활발히 연구되었던 주제다. 하지만 당시 컴퓨터의 연산성능으로는 사실상 쓸만한 모델구현이 불가능했고, 십수 년동안 이론적인 방법으로만 여겨졌다. 그리고 2000년대에 들어서야, 그 이론들이 현실로 다가온 것. 물론 20년 동안 컴퓨터만 발달했던 것은 아니다. 하지만 한동안 학계에서 "인공신경망"이란 단어가 논문에 들어가면 퇴짜맞는다는 소문이 있었을 정도로 학계가 무관심을 넘어서 혐오했었고[3], 소수의 소신있는 연구자들만 인공신경망 연구를 진행해 왔다. 이런 기조가 달라진 것은 2006년 DBN이 발표되면서부터이다. 2009년 엄청난 신드롬을 일으킨 이후 인공지능 분야의 구세주로 추앙받고 있다. 예를 들면, 페이스북의 딥러닝 기반 얼굴인식 모델인 deepface는 인식률 97%를 돌파하며 인간과 거의 성능차이가 없을 정도이며, 물체인식 대회에서 딥러닝의 일종인 CNN(Convolution Neural Network)은 그간 이어져오던 물체 인식 알고리즘을 모두 순위권 밖으로 몰아내며 랭킹 줄세우기를 하였으며, 음성인식 분야에서는 아무것도 모르고 그냥 가져다 박기만 했는데 인식률이 20%가 넘게 향상되었다는 소문이 들리고 있고, 구글은 아예 이를 이용하여 게임하는 방법을 스스로 학습하는 인공지능을 만들거나 검색결과를 이용해 고양이의 개념과 생김새를 학습하는 머신을 만들어낼 정도이다. 네이버와 카카오와 같은 국내 기업도 딥러닝을 적극적으로 연구중에 있다.

딥러닝의 가장 큰 특징은 모델의 부피를 키우고, 데이터를 쏟아부으면 무조건적으로 그만큼의 성능향상을 보인다는 점이다.[4] 네이버의 Deview2013에서 딥러닝에 대한 세션이 있었는데 딥러닝 이전과 이후를 각각 청동기 시대와 철기 시대에 비유할 정도로 딥러닝을 높게 평가했다.

다만 어떤 사람들은 딥러닝을 다른 기계학습과 동떨어진, 마법의 기술처럼 착각하는 경향이 있는데, 사실 딥러닝은 기계학습 알고리즘의 한 종류라고 볼 수 있다. 즉, 딥러닝 ⊂ 기계학습이다. 예를 들어 딥러닝 이전에 가장 유행했던 SVM도 결국 activation 없는 (linear) single layer perceptron에다 hinge loss function + Frobenius norm regularization 을 사용한 것이다. Logistic regression 은 말할 것도 없고. 또, 한번 언급되었지만, 인공신경망류 기법들은 통계학적으로 보면 아주 크고 복잡한 혼합 회귀 모델의 일종이라고 볼 수 있다.

딥러닝이 일반적인 MLP에 비해 가장 문제가 되는 것 중 하나는 다수의 hidden layer을 사용한다는 거다. 이게 무슨 뜻인지 간단하게 설명하자면, 매 층을 지날 때마다 정답을 낼 수 있는 공식의 교정과정이 일어난다고 보면 된다. 다만 그 교정과정이 1부터 0까지의 숫자를 계속 곱하여 수정하는 방식이기 때문에 깊은 히든 레이어인 경우 차츰 공식의 기울기가 0에 가까워지는 문제가 존재한다.[5] [6] 이 때문에 기울기 소멸 문제는 한때 인공신경망 학계를 고사시킨 전례가 있는데, 다행히도 현재는 크게 다음과 같은 해결책이 있다. 현재 기준으로 자주 쓰이는 방식에는 볼드 처리를 했다.
  • 가중치 초기화: 초기 가중치를 Xavier 초기화 방식이나 He 초기화 방식을 이용해 설정한다.
  • 사전학습 (pretraining): 가중치를 무작위로 초기화하지 말고, 데이터를 사용하여 비지도학습에 의해 초기 가중치를 결정한다.
  • 부분적 가중치 학습(Dropout): 각 학습 단계에서 모든 가중치를 조정하지 말고, 무작위로 선택한 일부 가중치만 조절한다. DropOut라는 단어 뜻 그대로 일부 뉴런을 비활성화한 상태로 학습을 하는 것이다. 단, Test 단계에서는 Dropout이 해제된다.
  • 같은 층의 여러 노드가 동일한 가중치를 공유해서 사용한다.
  • 배치 정규화 (Batch Normalization): 값(feature)를 -1 에서 1 사이로 정규화 시킨 다음에 ax+b (a와 b는 변수)를 수행한다. 원래는 기울기를 흐르게 하는 목적으로 고안되었지만 학습을 빠르게 하고, 약간의 일반화 효과도 있다.
  • 전달 함수 변경: 인공신경망은 결과값(yo)에 추론값(y*)을 대입시켜서 나오는 오차(yo-y*)를 다시 히든레이어라는 행렬값(x1 ~ xn)에 되먹임(Feedback)하는 오류 역전파알고리즘(Error BackPropagation)을 기반으로 한다. 여기서 그냥 오차를 되먹임(빼주는 것)을 하는것은 변동성을 심하게 주게 되어 변동성에 쿠션역할을 할 수 있는 함수를 사용하게 된다. 오래 전 나왔던 것으로는 시그모이드(Sigmoid) 함수가 있는데 (sigmoid 함수의 구조는 오차가 작아질 수록 급하게 0에 수렴하는 함수이다.) sigmoid 함수는 앞서 말한 것처럼 0에 수렴하는 함수이기 때문에, 깊은 레이어를 가지고 있을수록 gradient 값이 0에 가까워져서 기울기 소멸 문제를 촉진할 수 있다. 현재 가장 많이 사용되는 ReLU[7], Leakly ReLU[8], PReLU[9], ELU[10]같은 등 부분적으로 선형적인 함수를 사용하여 해결할 수 있다. [11]
  • 층(layer)를 건너뛰는 연결(skip connection): 레이어를 계속해서 쌓음과 동시에 상위 레이어와 하위 레이어 중간을 건너뛰어 연결하는 계산을 넣으면 (말 그대로 skip connection), 이러한 계산을 따라서 기울기가 흐를 수 있다. 이때 많이 쓰는 연결함수 중 하나는 덧셈. 말 그대로 f'(x) = f(x) + x 꼴로 만드는 것이다. 덧셈은 기울기를 그대로 흘려보내기 때문에 가능하다. 게다가 기울기를 흐르게 하는 역할 외에, 모델이 값 자체가 아니라 값의 오차(residual)을 배우게 해서 수렴 속도가 빨라지는 부가 효과도 있다. 이 방식을 사용해서 ResNet은 레이어를 152개 씩이나 쌓기도 했다.이를 위해 concat[12]이나 add[13]와 같은 연산이 주로 사용된다.


실체를 모르는 높으신 분들에게 뭐든지 다 할 수 있는 마법의 기술처럼 취급되는 경향이 있다.[14] 그러면 그냥 기계학습으로 여러 개의 모아둔 값에서 가장 많은 것을 또 오차계산해서 역계산, 조금씩 수정해서 정확한 윤곽을 만드는 기술[15]이라고 말을 드리자. 기계학습으로 학습한 가장 빈도수가 많은 값에 오차 보정 알고리즘을 더했다고 보면 된다. 수학적으로 왜 학습된 모델의 파라미터 값이 작동하는지는 설명할 수 없지만[16] kernel trick 으로써 이해하면 된다. 딥러닝 모델은 그 구조상 특징을 추출하는 feature extractor 와, 이를 통해 추출된 feature map을 통해 실질적인 작업을 진행하는 linear layer 의 조합으로 주로 이루어져 있는데, GAP 등의 FCN 모델 등을 제외하면 linear seperability 를 갖게하는 feature map 을 kernel regression 으로 우회해서 학습하는 것이 아닌, 고차원으로의 feature map을 즉각적으로 학습하는 기술이다. 즉 비선형 데이터의 집합에 선형성을 부여해주는 projection matrix 를 배우는 방법인 것이다.

만약 노이즈가 제거된 정제한 데이터를 머신러닝에 사용하면 레이어 수에 상관없이 일정한 값에 쉽게 수렴을 한다. 또한 그 예측력도 일반적으로 사용되고 있는 회귀모델에 비해서 결코 우수하지 않다.[17]

그러나 고전적인 회귀모델을 쓰지 않고 행렬방식의 인공지능을 쓰는 가장 큰 이유는, 첫째, 데이터 노이즈를 귀납적인 행렬연산으로 필터링할 수있고, 둘째, 고정된 수학적인 모델값이 아니라 데이터 변화에 대한 학습을 통해 예측모델을 진화시킬 수 있다는 점이다.일반적인 경우, 딥러닝과 일반 머신러닝과의 차이를 히든레이어의 수로 설명하는 사례가 많은데 틀린 말은 아니나, 정확한 설명은 아니다.히든 레이어의 개수가 머신러닝으로 최적해를 찾는 것을 도와주는 것이 아니라, 정제되지 않는 방대한 데이터의 노이즈를 해소하고 빠르게 예측된 해를 찾게 해 주는 것이다.

예컨대, 히든레이어(Hidden Layer)가 많으면, 피드백 회수가 적더라도 수학적으로 빠른 수렴(최적의 해)을 할 수 있고, 데이터 노이즈에 별 영향을 받지 않고 최적 예측값을 구현할 수 있다. 히든레이어의 역할은 복잡한 문제를 간단한 문제로 바꾸어 빠른 수렴을 가능하게 하는 것과 데이터 노이즈 영향을 어느정도 회피할 수 있게 만드는 것이다. 이는 노를 젓는 사람이 많으면 물살에 영향을 극복하여, 빠른 속도로 배를 움직이게 하는 원리와 같다. 바꾸어 말하면 아무리 히든레이어가 많다고 해도, Garbage in Garbage out (나쁜 데이터는 나쁜 결과가 나온다) 이다. 혹은 과잉수렴(Overfitting)을 하게 되어 나쁜결과를 예측할 수도 있다. 인공지능 프로그램들은 그러한 과잉수렴을 막기 위해 데이터 세트(Set)를 해석(Test)과 검증(Validation) 데이터로 나누고, 해석 데이터로 예측모델을 만들어 검증용 데이터로 다시 예측모델을 평가하는 방법을 쓴다.

MLP는 머신러닝의 한 종류이며 이때 hidden layer의 수가 1개인 경우 ANN, 다수인 경우 DNN이라 구분한다. 딥러닝의 '딥(deep)'이란 단어는 어떤 깊은 통찰을 얻을 수 있다는 것을 의미하는 것이 아니며, hidden layer의 수가 많다는 의미이다. MLP는 지도학습으로 분류되며, 딥러닝 또한 지도학습이다.

예를 들어보자, 어느 특정한 아이스크림 판매량과 기온과의 상관관계를 이용하여 일기예보를 통해 아이스크림 수요를 예측하는 인공지능 예측 시스템을 구현한다고 하자. 일반적인 머신러닝 기법을 사용하여 알고리즘을 만든다면,[18] 기상청에서 온도이력 데이터 수집하고, 과거 아이스크림 일 판매량 데이터를 매칭시켜

28도일 때 → 100개 판매
30도일 때 → 120개 판매라는 예측모델을 만들 수 있을 것이다.

그러나 딥러닝적 방법은 여기서 논리적인 사고 학습을 하게끔 모델링을 시키는 것이다. 즉, 습도와 날씨 조건을 온도라는 학습데이터에 선택적으로 학습을 하여 예측하는 프로세스를 적용한다.[19]

if 비가 올 때 → 학습 1
if 비가 안 올 때 → 학습 2
if 습도가 높을 때 → 학습 3
if 습도가 낮을 때 → 학습 4

이렇게 논리적으로 자가 분기를 시켜 학습하는 것이 딥러닝과 일반 머신러닝의 가장 큰 차이점이다. 그러면 decision tree도 딥러닝인가


앞서 언급한 비지도학습[20]의 경우 최근 몇년 사이 딥러닝에서 크게 발전한 분야라고 볼 수 있다. 지도학습에서 문제가 되는 것은 매번 레이블(label)이 필요하다는 점인데, 이를 일일이 사람손으로 달아주는 것은 매우 어렵고 시간 낭비가 크다고 할 수 있다. 따라서 데이터의 특징 자체를 배우고, 레이블 정보가 필요없는 비지도학습이 크게 유행하게 되었다. 자연어처리의 연구동향을 살펴보면 대부분이 언어 모형(language model)에 힘을 쏟는 것을 볼 수 있는데, 이 또한 비슷한 맥락이다. 레이블 데이터를 직접적으로 이용하는 것보다, 언어 자체를 이해하는데 많은 노력을 가하고있다 [21]. 이는 ULMFIT, ELMo, BERT로 이어지는 언어 모형의 차이를 보면 쉽게 이해가 가능하다. 또한, 이의 장점은 지도학습에 대한 fine-tuning시 수렴이 매우 빠르다는 점이다 [22]. BERT의 경우 아예 비지도학습을 통한 문장 수준의 임베딩부터 fine-tuning까지 하나의 구조로 이를 가능케함은 물론, 모든 자연어처리 task에서 최고 수준의 성능을 내기까지 했다. 그러나, 비지도학습이 딥러닝과 머신러닝을 나누는 근간이라고 보기는 어렵다.

앞서 말한 것처럼 분기가 딥러닝과 머신러닝의 가장 큰 차이라고 가정해보자. 그렇다면 tree계열의 머신러닝과 그외 방법론의 차이는 무엇인가? Tree 분기가 MSE를 낮추거나 엔트로피를 낮추는 것과 별반 다를 것이 없어진다.

딥러닝과 머신러닝의 가장 큰 차이는 representation learning이라 불리는 것으로, 머신러닝의 경우 명시적인 feature engineering 과정을 거치지만, 딥러닝은 레이어와 비선형함수의 조합으로 이를 해결한다. 컴퓨터 비젼에서 backbone 혹은 feature extractor를 통해 object detection, video understanding 등의 task나, 자연어처리에서 tf-idf, LSA, LDA 등의 embedding 과정을 거치지 않고, look up table을 통해 embedding layer로 표현하는 것이 이러한 representation learning의 예시라고 할 수 있다. [23]

알파고는 바둑승률에 대한 역대 기보 데이터를 찾아 학습하고, 바둑의 행렬위치 (가로 세로 19 * 19) 별 다양한 기보속에서 학습한 결과에 대한 승률을 계산하여 승률이 가장 높은 위치 값에 바둑알을 놓은 방식을 구현한 것이다.[24] 말은 이렇게 쉽게 했지만,어려운데요 그 구현 방식은 매우 어려웠을 것이다. 실제 알고리즘도 알고리즘이지만, 딥러닝의 핵심 작업인 기보 데이터의 전처리 과정만 생각해봐도 굉장히 고난이도의 준비작업이었을 것이다.

자율주행 자동차의 딥러닝 학습은 이미지 학습에 의한 사물인지와, 사물속도(위치변화/시간), 주행차량 속도 3가지 큰 영역으로 나누고 1초 뒤 , 5초 뒤를 선 예측한 후, 가장 안정적인 방법으로 사물회피를 통해 안정적 주행을 위한 핸들링, 속도제어를 하는 것이다.[25]

크게 보면 이미지 학습과 인지 쪽에 인공지능이 많이 연계되어 있고, 나머지 주행영역은 예측제어 영역이다.

3. 딥러닝을 효과적으로 공부하려면??

개요 파트에 간단히 기술되어 있지만, 기술의 발달에 따라 컴퓨터의 계산 속도가 빨라지고 점차 새롭게 생겨나는 데이터가 많아지고 있다. 이에 맞춰서 머신러닝 기술 중 비정형 데이터[26] 처리 능력이 뛰어난 인공신경망과 딥러닝 기술이 점차 각광받기 시작했고, 점점 가속화되는 기술의 발달 속도를 생각한다면 앞으로 가장 각광받게 될 인공지능 기술 중 하나가 될 것은 분명해 보인다.[27] 이런 이유로 딥러닝 기술에 대한 사람들의 관심이 점차 늘어나고 있으며, 2020년대에 들어서 직접 딥러닝을 배우고 싶어하는 사람들도 늘고 있다.

하지만, 인공지능 기술 자체가 최근[28]에 급부상한 기술이고, 보통 하나의 기술이 완전히 자리잡는 데 걸리는 시간이 20~30년이라는 점을 생각한다면 아직 인공지능 기술의 발전 단계는 초기 상태이다.[29] 학계에서도 아직 인공지능 기술에 대한 명확한 정의가 없으며, 특히 한국의 경우 2020년대에 진입한 시점에서야 인공지능 기술의 중요성을 깨닫고 전문가를 양성해야 한다는 분위기가 형성되는 중이라, 아직 인공지능 전문가가 되기 위한 제대로 된 커리큘럼이 없다고 봐도 무방하다. 이로 인해 인공지능을 제대로 배우고 싶어도 처음부터 막막한 사람들이 많은 게 현재 한국의 안타까운 현실이다(...) 전반적인 머신러닝 기술들도 이런 상황인데, 머신러닝보다 더 신기술 취급을 받고 있는 딥러닝은 뭐... 더 이상의 자세한 설명은 생략한다.

따라서 이 문단은 정말로 딥러닝에 관심이 있고 공부하고 싶은 사람들에게 도움을 주자는 취지에서 만들었다고 봐도 무방하다. 앞으로 계속 업데이트 될 예정이며 딥러닝에 관심과 지식이 많은 사람들은 언제든지 자유롭게 추가하길 바란다.

3.1. 공부를 시작하기 전에

우선 본인이 어떠한 목적으로 딥러닝을 공부하는지 확실히 답할 수 있어야 한다. 즉, 딥러닝을 공부하는 명확한 이유가 있어야 한다. 단순히 "딥러닝이 요즘 핫하다던데 나도 한번 공부해볼까??" 라는 마인드로 공부를 시작한다면 얼마 못 가 포기할 것이다(...) 딥러닝은 지금도 계속해서 새로운 알고리즘이 탄생하고 있고, 발전 속도가 말도 안 되게 빠른 기술이기 때문에 아무리 천재라고 해도 딥러닝의 모든 부분을 공부하는 것은 불가능하다. 그래서 더더욱 딥러닝을 공부하는 목적이 명확해야 한다. 목적이라는 말이 잘 와닿지 않는 사람들을 위해서 예를 들어보자면..
"회사에서 주어진 과제를 효과적으로 해결하려면 딥러닝 기술이 필요하네?? 그럼 공부해 봐야겠다!"
(딥러닝에 관한 책을 읽고) "오, 딥러닝 알고리즘은 이러한 원리로 작동하는구나! 꽤 흥미로운데? 나도 이런 알고리즘을 만들어 보고 싶다!''
" 테슬라 자율주행차는 도대체 어떠한 기술적 원리로 구현되는거지? 한번 알아볼까?"
-> "아하! 자율주행 기술을 이해하려면 CNN[30]의 원리를 반드시 알아야겠네! CNN에 대해서 공부해야겠다!"
"2025년이 되면 인공지능 교육이 의무화되네? 그럼 내가 딥러닝을 공부해서 알기 쉽게 가르쳐주는 사업을 한다면?"
(우연히 네이버 AI 연구팀에 대한 컨텐츠를 접하고) "와.. 저기 분위기 X쩐다. 나도 저기에 들어가고 싶다!"

이 정도의 예시면 말하고자 하는 것이 무엇인지 알 것이다. 정리하자면, 딥러닝 공부의 시작은 딥러닝을 공부하는 목적을 정하는 것이라는 점을 잊지 말자.

3.2. 딥러닝 알고리즘을 이해하기 위한 기본기

  • 컴퓨터 관련 전공자는 상관없지만, 기본적인 자료구조와 알고리즘에 관한 내용을 알고 있는 것이 좋다. 딥러닝 기술도 결국은 알고리즘으로 구현되기 때문에 도움이 되면 되었지 도움이 안 될 확률은 없다. 전공자 수준으로 깊게 알고 있다면 물론 좋지만, 비전공자나 일반인, 10대 입장에서는 전반적으로 대자료구조와 알고리즘의 의미가 무엇인지 정도만 알고 넘어가도 상관없다. 관련 강좌로는 네이버 부스트코스 사이트에서 CS50 강좌를 검색하자. 하버드에서 만든 모두를 위한 컴퓨터 과학 교양 강좌로 이 강좌의 내용을 이해할 수 있다면 충분하다.
  • 딥러닝을 공부하면 필연적으로 마주치게 되는 수학. 어쩔 수 없이 기본은 공부해야 한다(...) 우선 고등학교 때 배운 미분과 편미분 개념이 생각난다면 축하한다. 딥러닝의 핵심인 경사하강법, 오차 역전파를 무리 없이 이해할 수 있다. 그 다음은 선형대수학을 공부해야 한다. 당연하지만 수많은 데이터를 행렬 형태로 표시한다는 점과 딥러닝 알고리즘의 기본이자 시초격인 회귀 분석은 선형법으로 푼다는 점에서 이 과목의 개념을 모르면 딥러닝에 대한 이해 자체가 불가능하다. Next Level은 바로 확률과 통계. 고등학교 때 배운 정규분포, 조건부 확률 등이 생각나면 당연히 좋지만 이런 개념이 가물가물해도 괜찮다. 처음부터 다시 배우면 되니까. 딥러닝 알고리즘을 모델링하기 전 데이터를 처리하는 과정에서 다양한 확률 분포가 쓰이고, 위에서도 언급한 회귀 분석에는 조건부 확률 개념도 쓰인다. 그러니 기본적인 확률의 개념, 조건부 확률, 여러가지 확률 분포, 확률 추정 등의 개념은 반드시 알고 있어야 한다. 다행히 위에서 언급한 선형대수학, 확률과 통계의 모든 개념들은 대학교 1학년 전공 기초 또는 교양 수준의 난이도이니 겁먹지 말고 도전해보자. 강의로 공부하고 싶다면 역시 부스트코스의 확률론 기초, 모두를 위한 선형대수학을 추천한다. 진짜 본인이 수포자여서 수학을 공부하기가 겁난다 싶다면 서점에 가서 인공지능을 위한 수학류의 책을 하나씩 살펴보고, 가장 쉬운 책을 골라서 그거라도 공부하자.
  • 수학적 기초를 쌓았다면, 이제 회귀 분석을 공부하자. 현대의 인공지능은 주로 예측, 분류, 생성 등의 문제를 해결하는 데 특화되어 있고 이는 딥러닝도 예외가 아니다. 애초에 머신러닝의 하위 개념이다. 회귀 분석에서 배우는 선형 회귀, 로지스틱 회귀, 다중 회귀, 소프트맥스 회귀 등은 예로부터 예측과 분석 문제를 수학적으로 모델링해서 풀어 내는데 유용하게 쓰였으며, 현대 인공신경망의 기술적 원리이기도 하다. 역시 전공자 수준으로 깊게 공부할 필요는 없고, 수학적인 원리를 이해한 후 간단한 예제를 풀어보자. 참고로 대부분의 딥러닝 라이브러리는 기본적인 데이터 셋을 가지고 있으니 이것을 통해 연습해보면 더 좋다. 정말 간단하게 공부하고 넘어가고 싶다면 선형 회귀, 로지스틱 회귀, 소프트맥스 회귀의 개념만 알고 넘어가도 좋다.

3.3. 딥러닝 관련 사이트

• Teachable Machine(https://teachablemachine.withgoogle.com)
:구글이 만든 사이트.

3.4. 딥러닝 관련 책, 강의자료

3.4.1.

3.4.2. 강의

  • 스탠포드 Andrew Ng 강좌 : 코세라와 유튜브, 부스트코스에서 만나볼 수 있는 딥러닝의 고전 강좌. 딥러닝 강좌의 본좌로 불리고 있으며 딥러닝 하면 대표적으로 떠오르는 유명한 강좌이다. 3.2 문단에 적힌 기초를 익힌 사람이라면 누구나 부담 없이 들을 수 있다. 다만 코세라와 유튜브의 경우 언어적 장벽이라는 단점이 존재.
  • 네이버 부스트코스 강좌
    • 딥러닝 기초 다지기
    • 텐서플로로 시작하는 딥러닝 기초
    • 파이토치로 시작하는 딥러닝 기초

4. 같이보기


[1] 이유는 당연히 컴퓨터의 계산 능력 발달과 디지털 기술의 발달로 인해 폭발적으로 늘어나는 데이터의 양과 종류이다. [2] 이해하기 쉽게 설명하자면, 1차 함수 식 y = ax + b가 존재한다고 가정하자. 일반적으로 우리가 배워 온 방식은 a,b가 주어진 상태에서 x,y의 해를 찾는 방식이다. 하지만, 회귀 분석의 경우 이와 반대로 무수히 많은 x,y값이 존재할 때, 그 수많은 x,y쌍의 분포 형태를 가장 잘 나타내는 a,b값을 찾는 과정이다. 이때 x의 경우 독립 변수, y의 경우 보통 종속 변수라 하고 독립 변수가 많은 경우 다항 회귀라고 부른다. [3] 인공지능 학계에서는 이 시기를 AI 겨울(AI winter)라 한다. [4] 다만, 거대한 딥러닝 모델을 만들고 최적화하는 것은 절대 쉬운일이 아니므로 쉽게 생각해서는 안된다. 또한 쏟아 붓기에 적절한 데이터를 확보하는 것도 절대 쉬운 것이 아니다. 그리고 이 많은 데이터를 그 큰 모델에 넣으려면 그만큼 많은 연산서버가 필요하다. 즉 돈이 필요하다. 비좁은 방 안에서 내는 것과 큰 기업이 연구한 결과물 사이의 격차는 크다. 알맞은 조건에서 대부분의 노동력을 대체할 수 있다는 파급력과 엮여 괜히 자본가가 시장공급을 독점하고 많은 사람을 빈민으로 내몰 거라는 예상이 나도는 게 아니다. 실현되면 자본 독점으로 망한 나라가 하나 둘씩 생기고 나서야 나아지겠지… [5] 예를 들어 0과 1사이의 소수 0.9를 계속 곱하다 보면 결국 0에 가까운 값이 되어버린다. [6] 후술하겠지만 이는 딥러닝 자체의 문제라기보단, 레이어를 수정할 때 sigmoid 함수를 통해 수정하기 때문에 벌어지는 일이다. sigmoid함수는 모든 데이터를 0과 1사이의 값으로만 표현하기 때문이다. [7] rectified linear unit: 음수인 경우 0에 수렴하고 양수인 경우는 x = y를 그대로 사용하여 기울기 소멸 문제를 방지한다. [8] ReLU함수가 max(0, x)라면 Leakly ReLU는 max(ax, x), a는 작은 수. 예를 들어 0.01 [9] Leakly ReLU는 max(ax, x)의 a를 bias와 같은 파라미터로 두는 것. [10] x>0 일때는 x, x<0 일때는 α(e^x-1) [11] Reconstruction 이나 DE solver 에 활용되는 Implicit Neural Network 에서는 sin 함수도 사용한다 [12] DenseNet이 대표적인 예 [13] ResNet이 대표적인 예 [14] 다만 실제 업계에서는 사용하기 가장 꺼려지는 방법 중 하나이다. 실제 현장에서 일하는 사람들은 그렇게 나오는지가 중요한데, 딥러닝의 가장 큰 단점이자 장점은 설명이 힘든 블랙박스형 알고리즘이기 때문.딥러닝하니까 나왔어요/아 그렇구나 로 끝나는 경우가 없다는 이야기 [15] 딥러닝 책에 나오는 퍼셉트론 개념을 생각하면 이 말이 제일 정확한 표현이다. 전공자가 아닌 사람을 위해 설명하자면 참과 거짓을 가르는 경계값이라고 말하면 얼추 맞는다. [16] 그 이유는 백터행렬을 하나의 식으로 표현했기 때문이다. 그것도 최소 수만 개가 넘는 데이터들을 모두 백터와 행렬로 표현한 것이다. 이 말을 뒤집어보면 최소 수만개의 계산이 이루어진다는 것이고 당연히 수학적으로 설명이 불가능하다. [17] 물론 기존 기계학습의 끝판왕으로 알려졌었던 SVM 과 같은 회귀모델의 경우 딥러닝의 기본인 퍼셉트론과 유사한 모델이기도 하고. [18] 온도 데이터를 독립변수로 사용하고 판매량을 독립변수로 사용하도록 지정해 주는 것은 딥러닝도 동일하다. [19] 딥러닝 뿐 아니라 일반적인 지도학습에 해당하는 내용이다. [20] 얀 르쿤의 경우 이를 비지도 학습이라 부르기보단 자기지도학습(self-supervised learning)으로 부르는 것을 선호하는 듯 하다. https://www.facebook.com/722677142/posts/10155934004262143/ [21] 언어 모형이 하는 일은 이전 단어들을 통해 다음 단어를 예측하는 것이다. 즉, input 데이터 자체가 label이 된다. [22] 사람으로 생각하면 각 언어를 매번 새롭게 배우는 것과 언어학에 대한 이해도를 높혀 언어를 익히는 것과 동일하다. 후자가 빠른 것은 두말하면 잔소리 [23] 위키피디아만 봐도 Deep learning (also known as deep structured learning) is part of a broader family of machine learning methods based on artificial neural networks with representation learning.이라고 표현하고 있다. 즉, 딥러닝의 근간은 뉴럴네트워크와 representation learning에서 오는 것이다. [24] 실제로는 행렬보다는 기보의 이미지를 보고 학습했다. 즉 바둑판의 '형태'를 이미지화하여 학습용 데이터로 활용했다는 것. [25] 이런 방법으로 인해 레이더, 라이더 센서 등 거리를 측정하는 센서가 따로 없이 오직 카메라 센서만으로 자율주행 구현이 가능하다. 이론상이 아니라 아직은 반자율주행 레벨이지만 실제 일부 양산차에 적용된다. 물론 주위 장애물의 위치를 초당 수천번 읽어내는 초고성능 라이더 센서에 비할 바는 아니지만 그런 센서들의 정신나간 가격을 생각해 보면 딥러닝으로 탁월한 단가 절약을 이루어낸 것. [26] 수치로 쉽게 표현할 수 없는 데이터. 예를 들면 이미지, 영상, 문장 등이 있다. [27] 일부 인공지능 전문가들은 앞으로 딥러닝을 포함한 인공지능 기술의 민주화를 예상하고 있다. 쉽게 말하면 미래에는 인공지능 기술을 코딩 없이도 엑셀처럼 자유자재로 사용할 수 있는 시대가 온다는 이야기. [28] 2010년대 후반 [29] 다만 전 세계를 뒤흔든 전염병으로 인한 비대면 수요가 늘어나면서 인공지능 기술은 이보다 더 빨리 자리잡을 수도 있다. [30] 합성곱 신경망. 잘 알려진 딥러닝 알고리즘 중 하나이다.

분류