[Review] 박종훈의 AI 논문 스터디 - 1주차 후기
안녕하세요! K-DEVCON 그로스 매니저 박종훈입니다.
데브콘에서는 8월에 AI 논문 스터디 참여자를 모집하여 지난 8월 31일(월) 드디어 첫 스터디를 시작하였습니다.
이번 스터디는 「Sutskever's List: Foundational Ideas of Modern AI」 라는 책으로 진행해보기로 했습니다.
(모집글 보러가기)
이 책은 오늘날의 AI를 만든 핵심 논문들을 골라 소개합니다. 시대별로 어떤 문제가 있었고 어떻게 다음 아이디어로 이어졌는지, 그 맥락을 함께 따라가 보는 스터디입니다.
AI 논문 스터디는 처음 운영해보는 것이다 보니 모집을 시작하면서 걱정했지만, 다행히 많은 관심을 주셔서 좋은 분들과 함께 스터디를 시작할 수 있었습니다.
---
이번 시간에는 Alexnet 이라는 논문을 읽고 같이 논의해 봤습니다.
1. Alexnet 논문의 배경과 의의
AlexNet 이전의 컴퓨터 비전은 사람이 직접 특징(feature)을 설계하는 방식이었습니다. SIFT, SURF, HOG 같은 알고리즘으로 이미지에서 특징점을 뽑고, 그걸 SVM 같은 분류기에 넣는 식이죠.
마침 학부 시절 로봇 동아리에서 이 방식으로 영상 처리를 해보신 분이 계셔서 그때 이야기를 들을 수 있었습니다. 예를 들어 물병을 인식시킨다고 할 때, 물병이 뒤집혀 있으면 전통적인 컴퓨터 비전은 그게 물병인지 모릅니다. 그래서 변형되어도 찾을 수 있도록 엣지를 어떻게 정의할지, 어떤 특징점을 잡을지를 사람이 전부 알고리즘으로 짜야 했다고 하셨습니다. 예전 얼굴 인식도 마찬가지여서, 정면일 때는 잘 되다가 얼굴이 조금만 삐딱해지면 픽셀 패턴이 달라져 인식이 안 되니, 모든 케이스마다 사람이 규칙을 걸어줘야 했습니다.
AlexNet은 여기에 대고 "데이터만 충분히 있으면 그런 고차원 특징은 알아서 학습한다" 고 답한 논문입니다. CS231n 강의에서는 이를 data-driven approach라고 부른다고 합니다.
한 분은 이 흐름을 기호주의와 연결주의의 대결로 정리해주셨습니다. "깊게 쌓으면 학습이 안 된다", "피처를 사람이 주지 않으면 안 된다" 같은 공격에 대해 연결주의가 종합적으로 반박하고 증명해낸 결과물이 AlexNet이라는 것이죠.
결과로만 보면 2012년 ImageNet 대회에서 top-5 오류율을 26.2%에서 15.3%로 끌어내렸습니다. 이 격차가 워낙 커서 판이 뒤집혔습니다.
왜 GPU 2장이었나
논문 그림을 보면 네트워크가 위아래 두 줄로 나뉘어 있습니다. GPU 두 장에 모델을 쪼개 올린 건데, 여기서 질문이 나왔습니다.
"왜 4장도 8장도 아니고 하필 2장일까요? 많이 쓸수록 더 좋은 성능이 나오는 것 아닌가요?"
이야기하면서 나온 답은 몇 갈래였습니다.
첫째, 당시 하드웨어의 제약입니다. GPU끼리 파라미터를 주고받는 게 어려웠기 때문에, 2장을 쓴 것만으로도 그 시절에는 혁신적인 시도였습니다. 물리적으로 다른 곳에 있는 파라미터들이 같은 방향으로 학습되도록 맞추는 것 자체가 쉬운 일이 아니었으니까요.
둘째, 이건 조금 현실적이어서 슬픈 이야기인데 저자들이 대학원생이라 돈이 없었다는 것입니다. 아직 AI에 투자가 몰리기 전이었고, 돈을 모아 산 GPU 두 장을 집에 두고 하루 종일 돌렸다는 일화가 나왔습니다. 구글이 차고에서 시작한 것 같은 느낌이죠.
그리고 이 대목에서 엔비디아 이야기가 나왔습니다. 엔비디아는 게임으로 번 돈을 병렬 연산에 계속 쏟아부으며 욕을 먹고 있었는데, AlexNet이 등장하면서 상황이 바뀌었습니다. 당시 경쟁자들은 전부 CPU 슈퍼컴퓨터를 들고 나왔는데 GPU 두 장이 그걸 이겨버린 것이 충격 포인트였다는 것이죠.
CPU와 GPU의 차이를 이렇게 비유해주신 분이 계셨습니다.
CPU는 여러 가지를 두루 잘하는 소수 정예라면, GPU는 단순한 계산을 병렬로 하는 초등학생 300명입니다. 그림을 그린다고 하면 CPU는 한 획 그리고 다음 획 그리는 식인데, GPU는 화면 전체 픽셀을 한 번에 칠해버립니다.
NVIDIA의 영상에서도 그러한 특성을 잘 설명합니다.
2. AI 가 학습하는 방법
우리는 화이트보드를 꺼내서 경사 하강법과 손실 함수를 이해해봤습니다.
1. 가장 단순한 형태에서 출발합니다.
y = Wx + b
예를 들어 x를 학생의 공부 시간, y를 성적이라고 해봅시다. 철수가 1시간 공부해서 70점, 영희가 2시간 공부해서 85점. 이런 게 데이터가 됩니다.
여기서 W(weight, 가중치)는 기울기입니다. 공부 시간이 1시간 늘어날 때 점수가 얼마나 오르는지, 다시 말해 x가 y에 얼마나 큰 영향을 주는지를 나타냅니다. W가 크면 그 변수가 결과에 강하게 작용하는 것이고, 0에 가까우면 별로 상관이 없다는 뜻입니다.
b(bias, 편향)는 y절편입니다. 공부를 아예 안 했을 때(x = 0) 받게 되는 기본 점수에 해당합니다. b가 없으면 직선이 반드시 원점을 지나야 하기 때문에, 데이터가 모여 있는 위치로 선을 옮길 수가 없습니다.
위 데이터에 대입해보면 1시간에 70점, 2시간에 85점이니 시간당 15점씩 오르고(W = 15), 0시간일 때는 55점(b = 55)입니다. 즉 y = 15x + 55가 되고, 이제 "3시간 공부하면 100점"이라는 예측을 할 수 있게 됩니다.
우리가 만들고 싶은 건 "공부 시간이 주어졌을 때 점수를 예측하는 것"이니, 결국 구해야 하는 건 이 W와 b입니다. 데이터를 계속 넣어가면서 이 두 값을 찾아내는 과정이 곧 학습입니다.
2. 변수가 늘어납니다.
현실에서 성적에 영향을 주는 변수는 공부 시간 하나가 아닙니다. 전날 몇 시간을 잤는지, 컨디션이 어떤지 같은 것들이 다 들어가겠죠.
y = W₁x₁ + W₂x₂ + ... + Wₙxₙ + b
3. 그런데 이건 결국 행렬곱입니다.
철수, 영희, 민수… 데이터도 많고 변수도 많습니다. 사람을 행으로, 각 변수를 열로 두면 그대로 행렬이 되고, 여기에 가중치 벡터를 곱하면 모든 학생의 예상 점수를 한 번에 계산할 수 있습니다. 선형대수 시간에 배운 그 행렬곱이 여기서 나옵니다.
변수가 늘어난 만큼 찾아야 할 W도 늘어납니다. 요즘 모델을 두고 "파라미터 몇 billion" 이야기를 하는 게 바로 이 W와 b의 개수이고, 모델이 얼마나 많은 것을 담을 수 있는지를 나타냅니다.
4. 틀린 만큼 되돌려서 고칩니다.
실제 정답 y와 우리가 예측한 y의 차이가 에러(손실) 입니다. 이 에러가 낮아져야 좋은 모델이겠죠. 그래서 계산이 이뤄진 경로를 거꾸로 타고 들어가면서 W 값들을 조금씩 조정합니다. 에러라는 언덕에서 경사를 따라 내려가는 것이니 경사 하강법입니다.
5. 나머지는 전부 여기서 파생된 트릭입니다.
너무 빨리 내려가버리거나, 좌우로 튀면서 수렴을 못 하거나 하는 문제들이 생깁니다. 이걸 막기 위한 장치들이 계속 추가되는 것이고요.
최신 트랜스포머까지도 경사 하강법을 활용합니다. 손실 함수와 경사 하강법을 두고, 거기에 어떤 알고리즘과 어떤 트릭을 넣어서 학습을 돌파하느냐의 게임인 거죠.
그리고 이 이야기를 굳이 행렬곱까지 끌고 온 이유가 있습니다. GPU 연산이 정확히 이 행렬곱이기 때문입니다. 딥러닝이 필요로 하는 계산과 GPU가 잘하는 계산이 딱 맞아떨어졌던 것이고 앞에서 이야기한 "GPU 두 장이 슈퍼컴퓨터를 이겼다"가 여기서 설명됩니다.
3. 활성화 함수의 의미
논의가 가장 오래 이어진 주제였습니다. 처음에는 이런 식으로 이야기가 시작됐습니다.
y = Wx + b로는 현실을 반영할 수 없다. 공부 시간과 성적이 딱 직선으로 비례하지는 않으니까. 그래서 곡선이, 뭔가 변칙이 필요하다.
y = Wx + b를 두 번 쌓아보면 이렇게 됩니다.
W₂(W₁x + b₁) + b₂ = (W₂W₁)x + (W₂b₁ + b₂)
W₂W₁도 결국 행렬 하나고, 뒤쪽도 벡터 하나입니다. 정리하면 W'x + b', 다시 1층짜리 직선으로 돌아옵니다. 100층을 쌓아도 똑같습니다. "현실이 곡선이라서"는 결과이고, 원인은 선형 변환은 아무리 합성해도 선형이라는 데 있었습니다. 즉 활성화 함수가 없으면 깊이가 그냥 증발해버립니다.
그래서 층과 층 사이에 직선이 아닌 무언가를 하나 끼워 넣습니다. 이게 활성화 함수이고, 그중 가장 널리 쓰이는 것이 ReLU입니다.
이름은 거창하지만 하는 일은 아주 단순합니다. max(0, x), 즉 음수가 들어오면 0을 내보내고 양수가 들어오면 그대로 통과시키는 것이 전부입니다. 그래프로 그려보면 곡선도 아닙니다. 왼쪽은 납작하게 누워 있다가 0을 지나면서 위로 올라가는, 한 번 꺾인 직선일 뿐입니다.
그런데 이 단순한 꺾임 하나가, 여러 개 모이면 어떤 곡선이든 흉내낼 수 있습니다.
원을 떠올려보면 이해가 쉽습니다. 정육각형은 누가 봐도 각져 보이지만 변이 백 개쯤 되면 눈으로는 원과 구분이 안 됩니다. 직선 조각도 충분히 많이 이어 붙이면 곡선처럼 보인다는 뜻이죠. 컴퓨터 화면의 동그란 아이콘도 실제로는 네모난 픽셀 덩어리인 것과 같습니다.
비유는 여기까지 하고, 이제 실제 식에 숫자를 넣어보겠습니다. 직접 계산해보면 생각보다 단순합니다.
① 뉴런 하나는 "언제부터 켜지는 스위치"입니다.
뉴런 하나가 하는 계산은 ReLU(Wx + b)입니다. ReLU는 음수를 0으로 만드니까, 괄호 안이 음수인 동안에는 아무것도 안 하고 있다가(0), 양수가 되는 순간부터 직선으로 올라갑니다.
예를 들어 ReLU(x - 2)라면
- x가 2보다 작을 때 → 괄호 안이 음수 → 결과는 0. 가만히 있습니다.
- x가 2를 넘을 때 → 그때부터 올라가기 시작합니다.
즉 x = 2에서 한 번 꺾이는 것입니다. 여기서 -2가 앞에서 본 b이고, 이 값을 바꾸면 꺾이는 지점이 좌우로 움직입니다. ReLU(x - 5)면 5에서 꺾이는 거죠.
② 스위치를 여러 개 놓고 더해봅니다.
꺾이는 지점을 0, 1, 2 세 군데에 놓고 전부 더해보겠습니다.
y = ReLU(x) + ReLU(x-1) + ReLU(x-2)
| x | ReLU(x) | ReLU(x-1) | ReLU(x-2) | 합계 y |
| --- | ------- | --------- | --------- | ------ |
| 0 | 0 | 0 | 0 | 0 |
| 1 | 1 | 0 | 0 | 1 |
| 2 | 2 | 1 | 0 | 3 |
| 3 | 3 | 2 | 1 | 6 |
| 4 | 4 | 3 | 2 | 9 |
y가 0 → 1 → 3 → 6 → 9로 늘어납니다. 늘어나는 폭을 보면 1, 2, 3, 3입니다. 꺾이는 지점을 하나 지날 때마다 기울기가 1씩 더해지는 것이죠. 직선만 세 개 더했는데 점점 가팔라지는 곡선 모양이 나왔습니다. 꺾이는 지점이 세 개뿐이라 x=2 이후로는 기울기 3으로 고정되는데, 더 놓으면 그 뒤로도 계속 휘어집니다.
그림으로 보면 이렇습니다. 얇은 선 세 개가 각각 한 번씩 꺾인 것이고, 굵은 선이 그 합계입니다.
③ 내려가게 하려면 빼면 됩니다.
지금까지는 더하기만 했는데, 각 뉴런의 결과에 곱해지는 가중치는 음수일 수도 있습니다.
y = ReLU(x) - 2 × ReLU(x-2)
| x | 계산 | y |
| --- | ----- | ----- |
| 0 | 0 − 0 | 0 |
| 1 | 1 − 0 | 1 |
| 2 | 2 − 0 | 2 |
| 3 | 3 − 2 | 1 |
| 4 | 4 − 4 | 0 |
x = 2까지 올라가다가 그 뒤로 방향을 틀어 내려옵니다. 산 모양이 만들어졌습니다. 꺾이는 지점 두 개로 이게 됩니다.
올라가는 파란 선과 내려가는 주황 선이 x = 2에서 만나면서 합계가 위로 갔다가 아래로 꺾이는 것을 볼 수 있습니다.
정리하면 이렇습니다.
- 어디에서 꺾일지는 b가 정한다
- 꺾인 뒤 얼마나 가파를지는 W가 정한다
- 위로 꺾을지 아래로 꺾을지는 그 뉴런에 곱해지는 가중치의 부호가 정한다
꺾이는 지점 두세 개로도 산 모양이 나왔으니, 이걸 수백 개 수천 개 놓으면 어떻게 될지 짐작이 되실 겁니다. 꺾이는 지점이 촘촘해지면서 우리 눈에는 매끄러운 곡선으로 보입니다. 앞의 백각형 이야기가 여기서 실제로 일어납니다.
그리고 이 꺾이는 지점들을 어디에 몇 개나 둘지를 사람이 지정해주는 게 아니라, 학습을 통해 데이터에 맞는 위치와 기울기를 스스로 찾아간다는 것이 핵심입니다.
그래서 스터디에서 나온 "변칙이 필요하다"는 말은, 층 사이에 선형 붕괴를 막는 방해물을 하나씩 끼워 넣는다는 뜻으로 이해하면 딱 맞습니다. 그 방해물이 아주 단순해도(단순한 꺾임 하나여도) 충분하다는 게 포인트고요.
그럼 왜 sigmoid가 아니라 ReLU였나
여기서 기울기 소실 이야기로 이어집니다.
sigmoid나 tanh는 S자 곡선이라 양 끝단으로 갈수록 기울기가 0에 가까워집니다. 레이어를 거칠 때마다 0에 가까운 값이 계속 곱해지니, 0.5를 열 번만 곱해도 거의 0이 되는 것처럼 마지막 층에 도달할 즈음에는 학습 신호가 사라져버립니다. 층을 깊게 쌓고 싶은데 깊게 쌓을수록 학습이 안 되는 문제가 생기는 거죠.
ReLU는 음수를 0으로 잘라버리는 대신 양수 구간의 기울기를 1로 유지합니다. 신호가 죽지 않고 끝까지 전달되도록 한 겁니다. 계산도 단순해서 빠르고요.
물론 만능은 아니어서, ReLU는 기울기 소실(vanishing)은 완화하지만 폭발(exploding)까지 해결해주지는 못합니다.
한 분은 "ReLU는 양수 구간이 그냥 항등함수인데 그럼 선형 아닌가? 왜 굳이 이걸 썼을까"라는 좋은 질문을 주셨는데, 책에서는 "써봤더니 효과가 좋았다" 수준으로만 설명하고 넘어가서 조금 아쉽다는 이야기도 나왔습니다.
ReLU가 끝이 아니라는 이야기도 나왔습니다. 요즘 트랜스포머 계열 모델들은 ReLU 대신 GELU나 SwiGLU 같은 함수를 많이 쓴다고 합니다.
ReLU의 약점은 음수를 너무 단호하게 잘라낸다는 데 있습니다. 0 아래를 전부 0으로 만들어버리니 그 구간의 기울기도 0이고, 그래서 한번 음수 쪽으로 넘어간 뉴런은 학습 신호를 받지 못해 그대로 죽어버리는 일이 생깁니다. 흔히 dying ReLU라고 부르는 현상입니다. 노이즈처럼 보이는 작은 음수라도 어느 정도는 살려두고 싶을 때가 있는데, ReLU는 그걸 못 합니다.
그래서 GELU는 0 근처를 칼로 자르듯 꺾지 않고 완만한 곡선으로 부드럽게 넘어가도록 만들었습니다. 작은 음수가 완전히 죽지 않고 조금씩 살아남으니, 기울기가 유지되는 구간이 그만큼 넓어집니다. SwiGLU는 여기서 한 걸음 더 나가, 입력을 두 갈래로 나눠서 한쪽이 다른 쪽을 얼마나 통과시킬지 조절하는 게이트 역할을 하도록 만든 방식입니다.
물론 공짜는 아닙니다. ReLU는 max(0, x) 하나로 끝나는데 이 함수들은 계산이 훨씬 복잡하고, SwiGLU처럼 게이트를 두면 파라미터도 더 듭니다. 그 비용을 치를 만한 가치가 있느냐의 문제인데, 요즘 대형 모델들은 있다고 봤습니다.
버려진 아이디어도 있습니다
논문에는 LRN(Local Response Normalization) 이라는 기법도 등장합니다. 생물의 측면 억제 현상을 모사해서 인접한 채널 간 활성값을 정규화하는 것인데, 자연에서 관찰되는 현상을 어떻게든 수학으로 녹여보려 한 시도라는 점이 재밌었습니다.
그런데 이건 이후에 효과가 별로 없다고 판명되어 지금은 쓰이지 않습니다. 이후 배치 정규화 같은 것들에 밀렸습니다.
4. CNN 의미
AlexNet은 5개의 컨볼루션 층과 3개의 완전연결 층, 총 8층으로 되어 있습니다. 여기서 질문이 하나 나왔습니다.
"처음에는 11×11로 큰 필터를 쓰다가 뒤로 갈수록 3×3으로 작아지는데, 이유가 있나요?"
컨볼루션 필터는 이미지 위를 훑고 지나가면서 피처맵을 뽑아냅니다. 이때 원본보다 해상도가 압축되고, 이 과정을 반복하면서 점점 고차원의 특징을 뽑아갑니다.
필터 하나가 보고 있는 영역을 수용 영역(receptive field) 이라고 합니다. 처음에는 큰 필터로 넓게 보면서 전반적인 특징을 잡고 뒤로 갈수록 압축된 피처맵 위에서 세밀한 부분을 봅니다. 여기서 중요한 게, 피처맵이 압축되었기 때문에 뒤쪽의 작은 필터 하나가 실제로는 원본 이미지의 넓은 영역에 대한 정보를 담고 있다는 겁니다. 필터가 작아진다고 보는 범위가 좁아지지는 않습니다.
그래서 깊이별로 피처맵을 시각화해보면 처음에는 엣지 같은 것만 추출되다가, 그 엣지들이 모여서 동그란 형태가 되고, 결국 고양이가 나오는 식으로 조합되어 갑니다. 이 과정에서 필터가 몇 칸씩 건너뛰며 훑을지를 정하는 stride 값에 따라서도 결과가 많이 달라집니다.
이날 정리된 CNN의 핵심은 이랬습니다.
예전에는 사람이 규칙을 걸어서 뽑던 특징을, 이 아키텍처를 통해 모델이 데이터로부터 스스로 학습해서 뽑아낸다.
이걸 가능하게 하려고 붙은 장치들도 이야기했습니다.
- Data augmentation — 이미지 한 장을 여기저기 자르고 비틀어서 수십, 수백 배로 뻥튀기했습니다. 조금만 틀어져도 못 알아보던 기존 방식의 약점을 데이터로 정면 돌파한 셈입니다.
- Dropout — AlexNet은 뒤쪽 완전연결 층이 워낙 거대해서 과적합이 심했습니다. 그래서 학습할 때 뉴런의 50%를 무작위로 꺼버립니다. 뉴런들이 서로 의존하며 짝지어 학습되는(논문 표현으로는 co-adaptation, "공모") 것을 막기 위해서입니다. 이게 학습 때 쓰는 기법인지 추론 때 쓰는 기법인지를 두고 의견이 갈렸는데, 확인해보니 학습할 때 쓰고 테스트할 때는 끄는 것이 맞았습니다.
5. 한계
"그럼 이 모델이 지금도 최고인가?" 하는 질문이 나와서 찾아보신 분이 계셨는데, 꼭 그렇지는 않았습니다. AlexNet은 이미지 분류의 정답이 아니라 "딥러닝이 된다"는 것을 보여준 출발점에 가까웠습니다. 실제로 몇 가지 뚜렷한 약점이 있습니다.
8층은 얕습니다. 그 당시에는 획기적인 깊이였지만 지금 기준으로 보면 아주 단순한 모델입니다. 그런데 이건 "더 쌓지 그랬어"로 끝날 문제가 아니었습니다. 앞에서 이야기한 기울기 소실 때문에 깊게 쌓을수록 학습 신호가 앞쪽 층까지 전달되지 않아서, 당시 방식으로는 더 깊게 갈 수가 없었습니다.
뒤쪽 완전연결 층이 지나치게 무겁습니다. 6천만 개나 되는 파라미터 대부분이 여기에 몰려 있습니다. 그래서 과적합이 심하게 발생했고, dropout으로 뉴런의 절반을 강제로 꺼가며 억눌러야 했습니다. 구조 자체가 만든 문제를 별도 기법으로 막고 있었던 셈입니다.
설계 선택 중에 최선이 아니었던 것들이 있습니다. 앞에서 이야기한 LRN은 효과가 없다고 판명되어 사라졌습니다. 11×11이라는 큰 커널로 시작하는 방식도 마찬가지였습니다. 바로 다음 세대인 VGG가 정반대로 갔거든요. 커널을 3×3으로 아주 작게 잡고 대신 깊게 쌓았더니 성능이 더 좋았습니다.
아키텍처가 하드웨어에 묶여 있습니다. 네트워크를 위아래 두 갈래로 나눈 건 성능을 위한 설계가 아니라, GPU 두 장에 나눠 담아야 했기 때문에 나온 구조입니다. 지금 다시 만든다면 이런 모양이 나올 이유가 없습니다.
정리하면 더 깊게 쌓고 싶은데 쌓을 수가 없다는 것이 AlexNet이 남긴 숙제였습니다. 이걸 푼 것이 ResNet의 잔차 학습이고, 다음 시간에 읽을 3장의 내용입니다.
---
그 외에 나온 이야기들
본문 흐름에는 넣지 못했지만 재밌었던 이야기들입니다.
- 요즘도 이런 식으로 학습하나요? 백본으로 이미지 특징을 뽑아두고 뒤에 헤드만 갈아끼워서 분류, 객체 탐지, 세그멘테이션, 캡셔닝 등으로 쓰는 구조가 한동안 주류였습니다. 지금은 트랜스포머가 멀티모달로 대부분을 처리하고 있고요.
- 그럼 그냥 LLM 쓰면 되는 것 아닌가요? 도메인에 따라 다릅니다. 트랜스포머 기반 범용 모델은 느리고 온디바이스 환경에서는 여전히 쓰기 어렵습니다. 수십만 장의 고해상도 이미지를 분류하고 클러스터링해야 하는 작업이라면, 요청당 과금되는 LLM API보다 직접 추론 서버를 세우는 쪽이 훨씬 빠르고 쌌다는 실무 경험담을 들을 수 있었습니다. 현실적으로는 YOLO 같은 오픈웨이트 모델을 가져와 사내 데이터로 파인튜닝해 서빙하는 경우가 많다고 합니다.
- 스케일링 법칙과 창발. 데이터와 컴퓨팅 파워를 계속 투입하다 보면 어느 순간 학습시키지 않은 능력이 발현된다는 이야기입니다. 이건 책 6장에 나온다고 하네요.
다들 어떻게 공부하고 오셨나요
마지막에 각자의 학습법을 나눴는데, 이 부분이 생각보다 유익했습니다.
- 영어 원문으로 읽으면서 막히는 부분마다 AI에게 계속 질문하기
- "나는 영어도 모르고 수식도 모른다"고 전제를 깔고 비유를 섞어 설명해달라고 한 뒤, 이해되는 만큼 단계를 조금씩 높여가기
- 수도코드로 접근하기. 수식은 몰라도 코드는 읽을 수 있으니, 8층 아키텍처를 수도코드로 짜달라고 해서 주석만 읽어도 흐름이 파악됐다는 이야기가 나왔습니다.
- 수식을 만나면 "이 기호가 의미하는 게 뭐야", "이게 왜 0이 되는 거야", "왜 여기서 보정을 해주는 거야" 만 집중적으로 물어보기
추천 자료도 몇 개 나왔습니다.
- 3Blue1Brown — 딥러닝과 선형대수 시각화 영상입니다. 행렬곱이 왜 그렇게 생겼는지를 변환으로 보여주는데, 이걸 보고 놀랐다는 분이 여럿 계셨습니다.
- Google Colab — 무료로 T4 GPU를 쓸 수 있어서, 이 시대의 모델들은 직접 돌려보기에 충분합니다.
- CS231n — ImageNet을 만든 교수님의 컴퓨터 비전 강의입니다.
---
첫 시간이라 어떻게 진행해야 할지 저도 감이 없었는데, 다들 적극적으로 질문해주시고 아는 부분을 나눠주셔서 예상보다 훨씬 알찬 시간이었습니다. 참여해주신 분들 모두 고생 많으셨습니다.
다음 시간에는 3장에서 뵙겠습니다.