딥러닝의 원리
뉴런을 여러 층 쌓은 신경망이 어떻게 계산하고, 역전파로 어떻게 배우며, CNN·RNN·트랜스포머가 데이터의 구조를 어떻게 이용하는지 작은 예를 직접 계산한 그림으로 따라간다.
목차 (12)
뉴런과 활성화 함수
딥러닝은 머신러닝 가운데 여러 층의 신경망을 쓰는 갈래다. 그 단위인 인공 뉴런은 단순하다. 입력마다 가중치를 곱해 더하고 편향을 더한 뒤, 활성화 함수에 통과시킨다. 1958년 로젠블랫의 퍼셉트론이 이 꼴의 시초다(그때는 문턱을 넘으면 1, 아니면 0인 계단 함수를 썼다).
활성화 함수가 없으면 층을 아무리 쌓아도 선형 변환을 여러 번 한 것이라 결국 선형 함수 하나와 같다. 꺾이거나 휘는 함수를 끼워야 층을 쌓는 의미가 생긴다.
- 시그모이드·tanh: 예전의 기본값. 입력이 크면 양 끝이 평평해져 기울기가 0에 가까워지므로, 깊은 망에서 학습이 멈추기 쉽다(아래 기울기 소실).
- ReLU max(0, x): 양수 쪽 기울기가 늘 1이라 깊은 망도 잘 배우고 계산도 싸다. AlexNet 이후 표준이 됐다.
- GELU: 0 근처를 부드럽게 만든 ReLU. BERT·GPT 계열 트랜스포머가 쓴다.
여러 층과 보편 근사
뉴런을 나란히 놓으면 층, 층을 이어 붙이면 다층 퍼셉트론(MLP)이 된다. 입력과 출력 사이의 층을 은닉층이라 하고, 은닉층이 많으면 "깊다(deep)"고 한다.
보편 근사 정리는 은닉층 하나라도 뉴런이 충분하면 (구간 위의) 연속 함수를 원하는 만큼 가깝게 흉내 낼 수 있다고 말한다. ReLU로 보면 직관이 쉽다. ReLU 하나는 한 자리에서 꺾이는 직선이므로, 여럿을 더하면 원하는 자리마다 꺾이는 꺾은선이 된다. 꺾는 자리를 늘리면 곡선에 얼마든지 가까워진다. 다만 정리는 "그런 가중치가 존재한다"는 말일 뿐, 그 가중치를 학습으로 찾을 수 있다거나 뉴런이 몇 개면 된다는 보장은 아니다. 실제로는 넓은 한 층보다 깊은 여러 층이 같은 함수를 훨씬 적은 뉴런으로 표현하는 경우가 많아, 앞 층은 단순한 무늬를, 뒤 층은 그 조합을 배우는 식으로 쌓는다.
출력층과 손실: 소프트맥스와 교차 엔트로피
망의 마지막 층이 내는 것은 부류마다 점수 하나씩인 로짓이다. 분류에서는 이것을 소프트맥스(각 점수의 지수를 지수의 합으로 나누기)로 합이 1인 확률로 바꾸고, 손실은 정답 부류에 준 확률의 음의 로그, 곧 교차 엔트로피를 쓴다. 정답 확률이 0.9면 손실은 약 0.1, 0.1이면 약 2.3이라 틀린 채 자신만만할수록 크게 벌받는다. 두 부류만 가르면 시그모이드 하나와 이진 교차 엔트로피, 연속값을 맞히는 회귀면 출력층에 활성화 함수 없이 평균 제곱 오차(MSE)가 기본이다.
분류에 MSE를 쓰지 않는 이유는 기울기다. 소프트맥스와 교차 엔트로피를 함께 미분하면 로짓의 기울기가 (예측 확률 − 정답) 꼴로 깔끔하게 떨어져, 많이 틀릴수록 크게 고친다. 시그모이드에 MSE를 붙이면 출력이 0이나 1 근처에 붙은 채 틀렸을 때 시그모이드의 평평한 끝 때문에 기울기가 거의 0이 되어 학습이 멈칫한다.
- 미니배치·이터레이션·에포크: 기울기를 한 번 구하는 예제 묶음이 미니배치, 미니배치 하나로 가중치를 한 번 고치는 것이 이터레이션(스텝), 학습 데이터 전체를 한 바퀴 도는 것이 에포크다. 데이터 1만 개를 배치 100으로 학습하면 1에포크가 100스텝이다.
- 배치 크기: 크면 기울기 어림이 정확하고 GPU를 꽉 채우지만 메모리가 많이 든다. 배치를 키우면 학습률도 함께 조정하는 것이 보통이다.
역전파: 기울기를 거꾸로 전하기
신경망도 머신러닝 노트의 경사 하강으로 배운다. 문제는 가중치가 수백만~수천억 개라 각 가중치의 기울기를 따로 구하면 너무 느리다는 것이다. 역전파(backpropagation)는 미분의 연쇄 법칙을 써서, 출력 쪽에서 구한 기울기를 한 층씩 거꾸로 곱해 전하며 모든 가중치의 기울기를 순전파 한 번과 비슷한 비용으로 구한다.
- 어떤 가중치의 기울기 = (그 가중치가 이어 주는 뒤쪽 뉴런의 기울기) × (그 가중치에 들어온 입력).
- 어떤 뉴런의 기울기 = 뒤쪽으로 나간 모든 연결의 (기울기 × 가중치)의 합에, 자기 활성화 함수의 기울기를 곱한 것. ReLU라면 꺼져 있을 때 0, 켜져 있을 때 1이다.
PyTorch·JAX 같은 프레임워크는 순전파 계산을 기록해 두었다가 이 과정을 자동으로 해 준다(자동 미분). 아래 작은 망에서 숫자를 직접 따라가 보면, 기울기가 수치 미분과 정확히 같고 한 걸음 뒤 손실이 줄어드는 것을 볼 수 있다.
입력 x = (1.0, 0.5), 목표 t = 1. 가중치는 아래 줄에 적었다. 먼저 앞으로(순전파) 계산한다.
최적화기: SGD, 모멘텀, Adam
손실 지형은 방향마다 가파른 정도가 크게 다른 길쭉한 골짜기인 경우가 많다. 이때 보통의 SGD는 가파른 방향으로 넘치지 않을 만큼 학습률을 작게 잡아야 해서, 완만한 방향으로는 느리게 가고 가파른 방향으로는 좌우로 지그재그한다.
- 모멘텀: 지난 기울기를 속도처럼 쌓아 둔다. 꾸준히 같은 쪽을 가리키는 완만한 방향으로는 가속하고, 부호가 번갈아 바뀌는 방향은 서로 상쇄된다. 대신 관성 때문에 바닥을 지나쳤다 돌아오기도 한다.
- Adam: 기울기의 이동 평균(방향)을 기울기 제곱의 이동 평균(크기)의 제곱근으로 나눠, 가중치마다 걸음 크기를 따로 맞춘다. 기울기가 큰 축은 덜, 작은 축은 더 움직여 두 방향을 비슷한 보폭으로 간다. 학습률을 대충 정해도 잘 돌아가 기본값처럼 쓰이고, 가중치 감쇠를 분리한 AdamW가 LLM 학습의 표준이다.
- 실제 학습에서는 학습률을 처음에 천천히 올렸다가(warm-up) 점점 줄이는 스케줄을 함께 쓴다. 그림의 Adam이 바닥을 지나쳐 가는 것도 학습률을 줄이지 않았기 때문이다.
학습을 안정시키는 장치: 초기화, 정규화, 드롭아웃, 잔차 연결
층이 깊어질수록 신호와 기울기가 층마다 조금씩 커지거나 작아지는 것이 곱해져, 폭발하거나 사라진다. 2010년대 초중반에 나온 몇 가지 장치가 이를 다스려 수십~수백 층 망을 학습할 수 있게 됐다.
- 초기화: 가중치를 모두 0으로 두면 뉴런들이 똑같이 움직여 하나처럼 된다. 무작위로 두되, 층을 지나도 값의 분산이 유지되도록 입력 개수에 맞춰 크기를 정한다(시그모이드·tanh에는 Xavier, ReLU에는 He 초기화).
- 정규화: 층 입력을 평균 0, 분산 1로 맞춘 뒤 학습되는 배율·이동을 곱한다. BatchNorm은 미니배치 안에서 특징마다, LayerNorm은 샘플 하나 안에서 특징 전체로 평균·분산을 구한다. BatchNorm은 배치가 작으면 통계가 흔들리고 학습과 추론의 동작이 달라, 문장 길이가 제각각인 트랜스포머는 LayerNorm(또는 더 단순한 RMSNorm)을 쓴다.
- 드롭아웃: 학습 중 뉴런을 일정 확률로 꺼서 특정 뉴런에 기대지 못하게 한다. 여러 작은 망을 함께 학습해 평균하는 것과 비슷한 규제 효과가 있다. 추론 때는 끈다.
- 잔차 연결: 층 몇 개를 건너뛰는 지름길로 입력을 출력에 그대로 더한다. 층은 입력과의 차이만 배우면 되고, 기울기는 지름길로 곧장 흘러 깊은 곳까지 줄지 않고 닿는다. ResNet 이후 거의 모든 깊은 망, 트랜스포머까지 이 구조를 쓴다.
- 기울기 클리핑: 기울기 벡터의 길이가 정한 값을 넘으면 그 길이로 줄여서 쓴다. 가끔 튀는 큰 기울기 한 번에 가중치가 망가지는 기울기 폭발을 막는 값싼 보험이라, RNN과 LLM 학습에서 기본처럼 켠다.
합성곱 신경망(CNN)
사진을 MLP에 그대로 넣으면 픽셀마다 가중치가 따로 붙어 수가 폭발하고, 고양이가 왼쪽에 있을 때 배운 것을 오른쪽에서 다시 배워야 한다. 합성곱은 작은 필터(예: 3×3, 가중치 9개)를 이미지 전체에 밀며 같은 가중치를 되풀이해 쓴다. 가까운 픽셀끼리만 보고(국소성), 어디서나 같은 무늬를 찾는다(가중치 공유).
- 필터 하나가 무늬 하나(세로 경계, 특정 색 얼룩)를 찾고, 한 층에 필터를 수십~수백 개 둔다. 필터 값은 사람이 정하지 않고 학습된다.
- 풀링은 2×2 칸마다 최댓값(또는 평균)만 남겨 크기를 줄인다. 계산량이 줄고, 무늬 위치가 조금 어긋나도 결과가 덜 바뀐다. 요즘은 보폭(stride) 2짜리 합성곱으로 대신하기도 한다.
- 층을 쌓을수록 한 칸이 보는 범위(수용 영역)가 넓어져, 앞 층은 경계·질감을, 뒤 층은 눈·바퀴 같은 부분과 물체 전체를 알아본다. LeNet(1998)에서 AlexNet(2012), ResNet(2015)으로 이어졌고, 지금은 이미지를 조각으로 잘라 트랜스포머에 넣는 ViT도 널리 쓰인다.
입력은 왼쪽 위에서 오른쪽 아래로 내려가는 밝은 띠다. 필터는 오른쪽 열에서 왼쪽 열을 빼므로, 오른쪽이 더 밝은 곳(세로 경계)에서 크게 반응한다.
사진이 몇천 장뿐이라면 처음부터 학습하지 않는다. ImageNet 같은 큰 데이터로 미리 학습한 망을 가져와 마지막 분류 층만 내 부류 수에 맞게 바꾸고, 그 층만(또는 뒤쪽 몇 층까지) 작은 학습률로 다시 학습한다. 이것이 전이 학습이다. 앞쪽 층이 배운 경계·질감 검출기는 어느 사진에나 쓸모 있기 때문이다. 함께 쓰는 것이 데이터 늘리기(augmentation)다. 학습할 때마다 사진을 무작위로 자르고 뒤집고 색을 조금 바꿔 넣으면, 같은 사진도 매번 다르게 보여 외우기 어려워지고 "조금 옮기거나 밝기가 달라도 같은 물체"라는 성질을 배운다. 다만 숫자 6과 9처럼 뒤집으면 뜻이 바뀌는 데이터에는 그 변형을 쓰지 않는다.
RNN · LSTM과 기울기 소실
문장·음성처럼 순서가 있는 데이터를 위해 순환 신경망(RNN)은 같은 층을 시간마다 되풀이해 쓰며, 앞 단계의 은닉 상태를 다음 단계 입력에 함께 넣는다. 학습할 때는 시간 방향으로 펼친 아주 깊은 망이 되어, 기울기가 시간을 거슬러 갈 때마다 같은 가중치와 활성화 기울기가 거듭 곱해진다. 그 곱이 1보다 작으면 기울기가 지수적으로 사라지고(기울기 소실), 크면 폭발한다. 그래서 보통 RNN은 몇 낱말 앞의 정보만 겨우 쓴다.
LSTM은 덧셈으로 이어지는 셀 상태를 따로 두고, 무엇을 잊고(잊기 게이트) 무엇을 쓰고 내보낼지를 0~1 사이 게이트로 학습한다. 잊기 게이트가 1에 가까우면 셀 상태를 따라 기울기가 거의 줄지 않고 흐른다. 잔차 연결과 같은 발상이다. GRU는 게이트를 줄인 간단한 변형이다. 다만 RNN은 앞 단계가 끝나야 다음을 계산할 수 있어 GPU로 병렬화하기 어렵다는 한계가 남았고, 이것이 트랜스포머로 넘어간 큰 이유다.
어텐션과 트랜스포머
RNN 인코더–디코더(Seq2Seq)는 입력 문장 전체를 벡터 하나에 눌러 담아야 해서 긴 문장에 약했다. 어텐션은 출력 낱말을 만들 때마다 입력의 모든 자리를 보고 "지금 어디가 중요한지" 가중치를 매겨 섞는다. 트랜스포머는 여기서 한 걸음 더 나가 순환을 아예 없애고, 문장 안의 토큰끼리 서로를 보는 셀프 어텐션만으로 문맥을 만든다.
- 토큰마다 질의(Q, 내가 찾는 것)·키(K, 내가 가진 것)·값(V, 내가 줄 내용) 벡터를 학습된 행렬로 만든다.
- 질의와 모든 키의 내적을 √(차원)으로 나눈 것이 점수다. 나누지 않으면 차원이 클 때 점수가 커져 소프트맥스가 한 곳에 쏠리고 기울기가 작아진다.
- 점수를 소프트맥스로 합이 1인 가중치로 바꾸고, 그 가중치로 값 벡터를 섞은 것이 그 토큰의 출력이다.
토큰마다 2차원 임베딩(장난감 값)이 있다. 질의 Q = XW_Q, 키 K = XW_K, 값 V = XW_V로 같은 벡터를 세 역할로 바꾼다(여기서 W_V는 단위 행렬).
트랜스포머 블록은 이 셀프 어텐션과 토큰마다 따로 적용하는 피드포워드 층을, 각각 잔차 연결과 LayerNorm으로 감싸 N번 쌓은 것이다.
- 멀티헤드: Q·K·V를 작은 차원 여러 벌(헤드)로 나눠 따로 어텐션한 뒤 이어 붙인다. 헤드마다 다른 관계(문법적 짝, 가리키는 대상 등)를 볼 수 있다.
- 위치 인코딩: 셀프 어텐션은 순서를 모른다(토큰을 섞어도 결과가 같이 섞일 뿐이다). 그래서 자리마다 다른 벡터를 임베딩에 더한다. 원 논문은 주기가 다른 sin·cos 값을 썼고, 요즘 LLM은 Q·K를 위치만큼 회전시키는 RoPE를 많이 쓴다.
- 모든 토큰을 한꺼번에 계산하니 GPU로 병렬화가 잘 되어 아주 큰 모델과 데이터로 키울 수 있었다. 대가로 어텐션 계산이 문장 길이의 제곱으로 늘어난다. GPT 같은 LLM은 앞 토큰만 보도록 가린 디코더 블록을 쌓은 것이며, 이어지는 이야기는 LLM 노트와 연산 측면은 GPU 노트에 있다.
원 논문의 트랜스포머는 입력을 읽는 인코더와 출력을 쓰는 디코더를 둘 다 가진 번역기였다. 이후 어느 쪽을 쓰느냐로 세 갈래가 갈렸다.
| 구조 | 어텐션이 보는 범위 | 사전 학습 과제 | 대표 | 잘하는 일 |
|---|---|---|---|---|
| 인코더 전용 | 앞뒤 모든 토큰 | 가린 낱말 맞히기 | BERT(2018) | 분류, 문장 임베딩, 검색 |
| 디코더 전용 | 앞 토큰만(인과 마스크) | 다음 토큰 맞히기 | GPT 계열, 오늘날 대부분의 LLM | 글 생성, 대화, 범용 |
| 인코더–디코더 | 인코더는 양방향, 디코더는 앞쪽 + 인코더 출력 | 가린 구간 되살리기 등 | T5(2019) | 번역, 요약처럼 입력과 출력이 뚜렷한 일 |
임베딩: 뜻을 벡터로
신경망은 수만 다룰 수 있으니 낱말·토큰·상품 같은 범주는 먼저 임베딩, 곧 학습되는 실수 벡터로 바꾼다. 낱말마다 번호를 매겨 원-핫 벡터로 쓰면 모든 낱말 사이 거리가 같아 "사과"와 "바나나"가 비슷하다는 정보가 없다. 임베딩은 학습 중에 비슷하게 쓰이는 것끼리 가까워진다.
word2vec(2013)은 "주변 낱말로 가운데 낱말 맞히기"(또는 그 반대)라는 단순한 과제로 낱말 벡터를 학습했다. 같은 문맥에 나오는 낱말은 비슷한 벡터가 되고, "왕 − 남자 + 여자 ≈ 여왕" 같은 관계가 벡터 뺄셈으로 드러났다. 비슷한 정도는 보통 코사인 유사도(두 벡터 사이 각도의 코사인, 길이는 무시)로 잰다. 지금 LLM 안의 토큰 임베딩, 검색에 쓰는 문장 임베딩도 같은 생각이며, 문장 임베딩을 모아 빠르게 찾는 벡터 검색은 데이터베이스 노트에서 다룬다.
흔한 오해
- "신경망은 뇌를 본뜬 것이라 뇌처럼 생각한다" — 이름과 첫 발상만 빌렸다. 인공 뉴런은 가중합과 활성화 함수일 뿐이고, 역전파 같은 학습 방식이 뇌에서 그대로 일어난다는 근거는 없다.
- "층을 깊게 쌓을수록 무조건 좋아진다" — 잔차 연결·정규화 없이 깊게만 쌓으면 기울기가 잘 흐르지 않아 학습 자체가 어려워진다(위의 학습을 안정시키는 장치 절). 데이터와 계산이 받쳐 주지 않으면 과적합한다.
- "학습 손실이 계속 줄면 잘 배우고 있다" — 검증 손실이 함께 줄어야 한다. 학습 손실만 줄고 검증 손실이 오르면 외우기 시작한 것이라 그 앞에서 멈춘다(early stopping).
- "어텐션 가중치가 곧 모델이 판단한 이유다" — 어텐션은 층과 헤드마다 많고 피드포워드 층도 계산에 끼어들어, 가중치 지도 한 장으로 판단 근거를 설명하기는 어렵다. 내부를 들여다보는 연구는 AI 안전 노트의 해석 가능성 절에 있다.
핵심 논문
트리 앙상블 같은 고전 머신러닝 논문은 머신러닝 노트, 분야 전체의 흐름은 논문 노트에 있다.
| 논문 | 연도 | 요지 | 원문 |
|---|---|---|---|
| The Perceptron (Rosenblatt) | 1958 | 입력에 가중치를 곱해 더하고 문턱을 넘으면 켜지는 인공 뉴런과, 틀릴 때마다 가중치를 고치는 학습 규칙을 내놓았다. | APA |
| Learning representations by back-propagating errors (Rumelhart · Hinton · Williams) | 1986 | 연쇄 법칙으로 오차를 거꾸로 전해 은닉층까지 학습시키면 은닉 뉴런이 쓸모 있는 표현을 스스로 만든다는 것을 보였다. | Nature |
| Approximation by superpositions of a sigmoidal function (Cybenko) | 1989 | 은닉층 하나짜리 망도 뉴런만 충분하면 연속 함수를 원하는 만큼 가깝게 흉내 낼 수 있다는 보편 근사 정리를 증명했다. | Springer |
| Long Short-Term Memory (Hochreiter · Schmidhuber) | 1997 | 게이트로 여닫는 셀 상태를 두어 기울기가 오래 보존되게 해, RNN이 수백 단계 떨어진 관계를 배우게 했다. | 저자 소속 기관 PDF |
| Gradient-based learning applied to document recognition (LeCun 외, LeNet) | 1998 | 합성곱과 풀링을 쌓은 망을 역전파로 학습해 손글씨 숫자를 읽고, 실제 수표 판독에 썼다. | 저자 공개 PDF |
| Understanding the difficulty of training deep feedforward neural networks (Glorot · Bengio) | 2010 | 층을 지날 때 신호와 기울기의 분산이 유지되도록 가중치 초기값의 크기를 정하는 방법(Xavier 초기화)을 제안했다. | PMLR |
| ImageNet Classification with Deep Convolutional Neural Networks (Krizhevsky · Sutskever · Hinton, AlexNet) | 2012 | GPU 두 장, ReLU, 드롭아웃, 데이터 늘리기로 큰 CNN을 학습해 ImageNet 대회에서 2위와 큰 차이로 우승, 딥러닝 붐을 열었다. | NeurIPS |
| Efficient Estimation of Word Representations in Vector Space (Mikolov 외, word2vec) | 2013 | 주변 낱말을 맞히는 얕은 망으로 낱말 벡터를 빠르게 학습하고, 벡터 덧셈·뺄셈으로 유추가 된다는 것을 보였다. | arXiv |
| Distributed Representations of Words and Phrases and their Compositionality (Mikolov 외) | 2013 | 네거티브 샘플링과 잦은 낱말 줄이기로 word2vec을 더 빠르고 정확하게 만들고, 구(phrase) 벡터로 넓혔다. | arXiv |
| Dropout: A Simple Way to Prevent Neural Networks from Overfitting (Srivastava 외) | 2014 | 학습 중 뉴런을 무작위로 꺼서, 여러 작은 망을 함께 학습하고 평균하는 것과 비슷한 규제 효과를 얻었다. | JMLR |
| Adam: A Method for Stochastic Optimization (Kingma · Ba) | 2014 | 기울기의 이동 평균(방향)과 제곱의 이동 평균(크기)으로 가중치마다 걸음 크기를 자동 조절하는 최적화기. 지금도 기본값처럼 쓰인다. | arXiv |
| Sequence to Sequence Learning with Neural Networks (Sutskever · Vinyals · Le) | 2014 | 한 LSTM이 입력 문장을 벡터 하나로 읽고 다른 LSTM이 그 벡터에서 출력 문장을 쓰는 인코더–디코더로 기계 번역을 했다. | arXiv |
| Neural Machine Translation by Jointly Learning to Align and Translate (Bahdanau · Cho · Bengio) | 2014 | 출력 낱말마다 입력의 어느 자리를 볼지 가중치를 학습하는 어텐션으로, 긴 문장을 벡터 하나에 욱여넣는 병목을 풀었다. | arXiv |
| Batch Normalization (Ioffe · Szegedy) | 2015 | 층 입력을 미니배치 평균·분산으로 맞춰 큰 학습률로도 안정적으로, 훨씬 빨리 학습되게 했다. | arXiv |
| Delving Deep into Rectifiers (He 외) | 2015 | ReLU 망에 맞춘 초기화(He 초기화)를 유도해, 아주 깊은 망도 처음부터 학습되게 했다. | arXiv |
| Deep Residual Learning for Image Recognition (He 외, ResNet) | 2015 | 입력을 그대로 더하는 지름길로 층이 잔차만 배우게 해, 152층 망을 학습시키고 ImageNet 대회에서 우승했다. | arXiv |
| Layer Normalization (Ba · Kiros · Hinton) | 2016 | 배치 대신 샘플 하나의 특징 전체로 정규화해, 배치 크기와 상관없고 RNN에도 쓸 수 있게 했다. 트랜스포머의 표준 부품이 됐다. | arXiv |
| Attention Is All You Need (Vaswani 외, Transformer) | 2017 | 순환을 없애고 셀프 어텐션과 피드포워드 층만 쌓아 번역 품질과 학습 병렬성을 함께 잡았다. 오늘날 LLM의 뼈대다. | arXiv |
| BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding (Devlin 외) | 2018 | 인코더만 쌓은 트랜스포머에 문장 중간 낱말을 가리고 맞히게 하는 사전 학습을 해, 양쪽 문맥을 함께 보는 표현을 얻고 여러 이해 과제에 미세 조정으로 옮겼다. | arXiv |
| Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer (Raffel 외, T5) | 2019 | 번역·요약·분류를 모두 "글을 받아 글을 내는" 문제로 바꿔 인코더–디코더 하나로 풀고, 사전 학습 목표·구조·데이터를 체계적으로 비교했다. | arXiv |
- The Perceptron (Rosenblatt) (1958)
- Learning representations by back-propagating errors (Rumelhart · Hinton · Williams) (1986)
- Approximation by superpositions of a sigmoidal function (Cybenko) (1989)
- Long Short-Term Memory (Hochreiter · Schmidhuber) (1997)
- Gradient-based learning applied to document recognition (LeCun 외, LeNet) (1998)
- Understanding the difficulty of training deep feedforward neural networks (Glorot · Bengio) (2010)
- ImageNet Classification with Deep Convolutional Neural Networks (Krizhevsky · Sutskever · Hinton, AlexNet) (2012)
- Efficient Estimation of Word Representations in Vector Space (Mikolov 외, word2vec) (2013)
- Distributed Representations of Words and Phrases and their Compositionality (Mikolov 외) (2013)
- Dropout: A Simple Way to Prevent Neural Networks from Overfitting (Srivastava 외) (2014)
- Adam: A Method for Stochastic Optimization (Kingma · Ba) (2014)
- Sequence to Sequence Learning with Neural Networks (Sutskever · Vinyals · Le) (2014)
- Neural Machine Translation by Jointly Learning to Align and Translate (Bahdanau · Cho · Bengio) (2014)
- Batch Normalization (Ioffe · Szegedy) (2015)
- Delving Deep into Rectifiers (He 외) (2015)
- Deep Residual Learning for Image Recognition (He 외, ResNet) (2015)
- Layer Normalization (Ba · Kiros · Hinton) (2016)
- Attention Is All You Need (Vaswani 외, Transformer) (2017)
- BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding (Devlin 외) (2018)
- Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer (Raffel 외, T5) (2019)
- LeCun · Bengio · Hinton (2015) — Deep learning (Nature 리뷰)
- Dive into Deep Learning — 코드와 함께 읽는 공개 교재
- Goodfellow · Bengio · Courville — Deep Learning (공개 교재)