안녕하세요 양콩공입니다 !!!!!!!! 인사를 드린 포스팅은 처음인 것 같아요😊
저는 작년에 빅데이터 개발자 과정 국비를 수강하면서 마지막에 추천 시스템 딥러닝 공모전에 참여하게 되었습니다! 🤞

그때 딥러닝 관련 기초 개념들에 대해 국비 교육으로 이해하기에는 한계가 있어서 '혁펜하임'님의 유튜브 강의가 큰 힘이 되었습니다!

그런데 이번에 패스트 캠퍼스에서 딥러닝을 주제로 강의를 찍으셔서 체험단에 참여하게 되어 강의 후기에 대해 자세하게 풀어보고자 합니다 ㅎㅎ

아직 velog 포스팅에는 어색하지만 최선을 다하겠습니다 .. !


본 게시글은 패스트 캠퍼스 [혁펜하임의 AI DEEP DIVE] 체험단 활동을 위해 작성되었습니다.


왜 gradient는 가장 가파른 방향으로 향할까요?

인공 신경망을 한마디로 정의하면 어떻게 될까요? 

Vanishing gradient의 해결 방안들은 어떤 것들이 있을까요? 

Overfitting을 방지하는 방법들에는 어떤 것들이 있을까요?

RNN의 한계점은 무엇인가요?

저는 위의 질문들로 [혁펜하임의 AI DEEP DIVE]의 강의를 소개하고 싶습니다.

혹시 모두 대답하실 수 있을까요?

혁펜하임의 AI DEEP DIVE 강의를 보시면 모두 대답할 수 있고, 암기가 아닌 이해로 기억할 수 있게 됩니다!

혁펜하임의 AI DEEP DIVE 강의에서는 딥러닝을 위한 필수 기초 수학부터 분류, 깊은 인공신경망의 고질적 문제와 해결 방안, CNN, RNN까지 끊임없이 한 개념에 대해 WHY?에 대해 분석하고 이해할 수 있는 힘을 길러주게 해주십니다. 간단한 소개는 이렇게 마치고, 제대로 강의에 대해 소개해 드리겠습니다!


1. 딥러닝에 대한 본인의 이해 정도, 학습 태도

먼저, 강의를 듣기 전 저의 딥러닝에 대한 이해 정도나 학습 태도에 대해 설명해 드려야 할 것 같습니다!

저도 강의 후기를 찾아볼 때 항상 저랑 비슷한 학습 성향과 이해도를 가지고 있는 사람이었는지 확인했기 때문입니다.

딥러닝에 대한 본인의 이해 정도

저는 인공신경망에 대해서 어렵게 정의를 내려서 계속 노트를 찾아보곤 했습니다. 혹시 저처럼 딥러닝을 대한 사람이 계실까요?

아마 많으실 거라고 생각합니다

입력 데이터가 들어가면 layer가 데이터를 변환해주고 ,,,

인공 신경망을 통과해서 모델이 예측한 결과 데이터가 나오면 진짜 타깃 데이터와의 차이를 손실 함수가 계산하고 ,,,

이 손실 값이 최소화되는 방향으로 가중치가 업데이트가 되고 ,,,

이런 암기 과목처럼 인공 신경망에 대해서 이해하지 못한 채 계속 찾아보면서 공부를 했었습니다

심지어 코딩으로 구현할 때는 그저 epoch와 같은 파라미터를 바꾸는 정도에서 끝이 났었어요

그래서 원래 딥러닝 기초 개념 정도는 알고 있는 저는 강의를 들으면서 정말 감탄했습니다

오랜만에 정말 희열을 느끼면서 강의를 들었달까요

원래 알고 있던 개념과 기초부터 탄탄하게 이유까지 따져보면서 이해했을 때의 개념을 서로 비교하면서 알게 되니 더 소름이 돋았던 것 같습니다

학습 태도

저는 원래 학습태도가 느릿느릿 천천히 거북이 🐢 같달까요 ....

시간이 너무 오래 걸린다는 단점이 있지만 모르는 게 생기면 잘 넘어가지 않고 계속 WHY?를 던지면서 공부를 하는 편입니다

그런데 국비를 들으면서는 방대한 개념을 짧은 시간 안에 습득하다 보니 제 학습 태도가 맞지 않는다는 생각이 들었어요

프로젝트에서 응용을 하고, 개념은 그냥 대충대충 남들 하는 정도만 알고 넘어가자의 식이었습니다

주변에 개발자분들도 제가 책 하나를 가지고 계속 오래 파이썬을 공부하니까 이런 식으로 코딩 공부하면 안 된다고 혼난 적도 있어서 더 원래의 성향에서 벗어나는 학습을 하려고 했던 거 같습니다.

그래서 이게 공부를 하는 거 같지가 않았는데 혁펜하임님의 강의를 들으면서 제 학습 태도가 틀리지 않다는 것을 알게 되었습니다

혁펜하임님은 정말 WHY?의 변태입니다(장난)

저도 들으면서 안 돼 그만 ~!~!~!! 그만 WHY.... 하고 힘겨울 때가 많았지만 뒤로 갈수록 의문을 던지면서 해결하는 학습 태도가 힘이 됨을 많이 느꼈어요

아무튼! 저와 비슷한 학습 성향과 딥러닝 이해 정도를 가지신 분들은 이 글을 끝까지 정독해 주시길 바랍니다... 추천 쾅

2. Chapter 별 소개

chapter 별로 제 방식대로 소개를 하겠습니다! 강의 사이트에는 더 직관적으로 나와있어서 같이 보시면 더 좋을 거 같습니다!

강의 주소입니다. click!

01. 딥러닝을 위한 필수 기초 수학

• 함수와 다변수 함수
• 로그 함수
• 벡터와 행렬
• 극한과 입실론-델타 논법
• 미분과 도함수
• 연쇄 법칙
• 편미분과 그라디언트
• 테일러 급수
• 스칼라를 벡터로 미분하는 법
• 왜 그라디언트는 가장 가파른 방향을 향할까?
• 벡터를 벡터로 미분하는 법
• 벡터를 벡터로 미분할 때의 연쇄 법칙
• 스칼라를 행렬로 미분하는 법
• 행렬을 행렬로 미분하는 법
• 확률 변수와 확률 분포
• 평균과 분산
• 균등 분포와 정규 분포
• 최대 우도 추정
• MAP
• 정보 이론 기초

사실 저는 chapter1이 가장 힘들었는데요 ... level1, 2, 3로 점점 어려운 것을 알려주시는데 강의 시간이 20분이면

필기하고 이해하는데 해서 level3는 정말 한 시간 걸려서 들은 것 같습니다..

그래도 정말 chapter1이 저는 가장 끝에 갈수록 어마무시한 힘을 발휘하는 파트라고 생각해요

언급이 안 되는 개념이 하나도 없었습니다 강의 특징에서도 언급하겠지만 혁펜하임님의 강의 구성은 정말 감탄스러워요

전 개념이 후 개념에 무조건 쓰이고, 쉬운 것부터 심화 과정까지 차근차근 밟아주십니다!

처음에 함수로 시작해 주시는 것을 보면 정말 선수 지식이 없어도 고등 기초 수학부터 다뤄주시는 것을 알 수 있습니다.

함수라고 해서 무시하시면 안 됩니다. 나중에 인공 신경망을 정의할 때 '인공신경망은 함수다'라고 정의합니다.

강의에서 언급하신 단어 중에 함수를 가장 많이 언급하셨습니다

그리고 저는 여기서 가장 좋았던 파트는 '벡터와 행렬' 부분입니다.

저는 행렬을 배웠던 때가 아니라서 개념도 잘 몰랐고 와닿지가 않아서 거의 행렬로 그냥 암기를 한 거 같아요

그런데 연립 일차 방정식의 정의부터 정말 기초부터 다뤄주셔서 좋았습니다.

그리고 다음 과정들 보면 아시겠지만

  • 스칼라를 벡터로 미분하는 법

  • 벡터를 벡터로 미분하는 법

  • 벡터를 벡터로 미분할 때의 연쇄 법칙

  • 스칼라를 행렬로 미분하는 법

  • 행렬을 행렬로 미분하는 법

그냥 행렬과 벡터에서 나올 수 있는 미분의 경우의 수를 끝장을 보십니다

저는 행렬과 벡터를 왜 배우는지 이해를 못 했는데, 딥러닝 이론들을 이해함에 있어서 함수처럼 정말 기초 개념으로 필요하더라고요.. gradient, loss 함수 증명 등 정말 많은 곳에 쓰입니다!

다른 개념 설명들도 다 너무너무 중요하지만 저는 가장 인상 깊은 건 '내적'입니다.

내적을 그냥 수식 정도로 간단하게 생각하고 있었는데 내적은 닮은 정도를 나타냅니다.

후에 CNN과 RNN에서 이 개념이 어떻게 쓰이는지 알 수 있어요!

02. 왜 현재 AI가 가장 핫할까?

• AI vs ML vs DL (Rule-based vs Data-based)
• 딥러닝의 활용 / CNN
• 딥러닝의 활용 / RNN
• 딥러닝의 활용 / GAN
• 머신러닝의 분류/ 지도 학습
• 비지도 학습
• 자기지도 학습
• 강화 학습

chapter1에서 기가 조금 빨리고 너무 많은 개념들이 들어와서 힘들 수 있지만

chapter2부터는 딥러닝에 대한 모델들을 간단하게 알려주고, 예시 설명도 재미있게 해주셔서 편하게 들으실 수 있을 거예요!

가장 인상 깊었던 부분들은 GAN, 자기 지도 학습, 강화 학습 파트입니다!

먼저, GAN 모델은 이름만 들어보고 안에 개념은 잘 몰랐는데 혁펜하임님의 비유로 이해할 수 있었습니다.

간단하게 설명드리자면 G,D 두 개의 네트워크로 구성된 GAN 모델이 있는데 해당 모델은 real 한 이미지를 만드는 model입니다. GAN에서 A는 adversarial로 적대적이라는 뜻을 가지고 있죠?

G는 가짜 지폐 이미지가 출력되게 하고, D는 이를 판단합니다.

G는 D가 속게끔 학습되고, D는 G에게 안 속게끔 학습되니까 둘의 학습 방향은 반대라는 의미에서 적대적이라는 표현을 쓴 것입니다! 그리고 동시에 학습되는 게 아니라 번갈아가며 학습이 이루어지게 됩니다.

학습이 끝나면 오른쪽처럼 real 한 사진이 나오게 됩니다!

다음으로 자기주도 학습은 어떤 이유로 하는지, 어떤 식으로 진행이 되는지 잘 몰랐는데, 강의자료와 설명만을 듣고 이해를 하게 되었습니다! 혁펜하임님의 강의 자료와 설명을 들으며 적은 저의 필기를 보시면 이해가 되실 겁니다!

마지막으로 강화 학습 파트도 재미있었는데요, 원래 강화 학습의 개념을 왼쪽에 강아지가 간식(Reward)를 받기 위해 훈련을 하는 것과 같이 생각하고 있었는데, 다양한 예시를 보여주셔서 더 이해하기에 쉬웠습니다!

마지막에는 Q-learning과 Exploration, discount factor에 대해서도 짚어주셨습니다.


03. 왜 우리는 인공 신경망을 공부해야 하는가?

• 인공 신경망, weight와 bias의 직관적 이해
• 인공 신경망은 ___다!!
• 선형 회귀, 개념부터 알고리즘까지 step by step
• Gradient descent (경사 하강법)
• 가중치 초기화 기법 정리
• GD vs SGD (Stochastic Gradient descent)
• mini-batch SGD
• Moment vs RMSProp
• Adam
• Training vs Test vs Validation
• K-fold Cross Validation

해당 Chapter부터 제가 원래 알고 있던 딥러닝 개념과 대비되면서 정말 희열을 느끼면서 들었던 파트입니다 ...

처음에 인공신경망에 대해 신경 세포의 예시를 들으면서 암기식의 weight와 bias에 대해 주입시키는 것이 아니라

'필요성'에 대해 알려주시면서 직관적인 이해를 시켜주십니다. weight는 부위별 중요도를, bias는 민감도!

그리고 인공 신경망은 weight를 곱하고, bias를 더하고 activation 해주는 것의 반복이고, 주어진 입력에 대해 원하는 출력이 나오도록 하는 함수를 알아내는 것이다. 인공 신경망은 함수다!라고 한마디로 정의해 주십니다.

위에서 인공 신경망을 노트에 적었던 것이 한마디로 표현이 된다는 게 너무 충격이었습니다 ,,,

그 이후에는 GD, SGD, RMSProp, Adam과 같은 optimizer 알고리즘에 대해 설명해 주십니다!

마찬가지로 저는 원래 Adam이 제일 좋대... SGD는 GD에서 배치 데이터가 무작위로 선정된 거야... 정도로 가볍게 알고 있었는데 혁펜하임님이 정말 용어부터 하나하나 짚어주시고 심지어 모멘텀 설명하실 때는 관성까지 몸으로 표현해 주십니다

아래 사진은 경사를 보고 조심조심 눈치 보면서 가는 RMSProp를 몸으로 설명해 주십니다 ,,,,

그리고 혁펜 하임님 강의 장점에서 또 말하겠지만 정말 대충 넘어가지 않으시고, 작은 수식부터 하나하나 다 계산하고 이해를 도와주셔요



이렇게 m1, m2, m3와 같이 식 연산을 하나하나 다 풀어서 해주시는 건 정말 기본입니다.

한 m6까지 있어도 거의 다해주셔서 나중에는 안돼 그만 ~!!~!! 할 정도로 대충이라는 단어를 모르시는 게 분명합니다

수업 듣고 굿 노트 약한 버전.. 아무튼 인공 신경망 작동하는 방식, 하이퍼 파라미터, activation 등등 기초 개념들을 잡아주는 chapter였습니다!

04. 딥러닝, 그것이 알고 싶다.

• DNN, 단 한 줄의 수식으로 표현하기 (행렬과 벡터의 식)
• 왜 non-linear activation이 중요할까?
• Backpropagation: 깊은 인공신경망의 학습
• 행렬 미분을 이용한 Backpropagation
챕터 구성을 보시면 알 수 있듯이 해당 파트에서는 non-linear activation의 중요성, chain rule을 적용한 backpropagation에 대해 설명해 주십니다!

linear activation으로는 입력과 출력 간의 선형적 관계만 가지게 되기에 non-linear activation이 중요합니다!

입력, 출력 간의 비선형 관계도 나타낼 수 있고, 깊을수록 복잡한 함수를 표현할 수 있기 때문입니다.

강의를 보면 아시겠지만 의문점들을 계속 제시해 주십니다.

여기서 기억나는 질문은!

linear -> non-linear -> linear -> non-linear

이렇게 하면? 

강의를 들으시면 바로 맞출 수 있습니다 ㅎㅎ 저도 멈춰놓고 바로 맞췄어요!

backpropagation은 chapter 1에서 배웠던 편미분과 chain rule, 행렬 미분의 개념이 사용됩니다

여기서도 하나하나 chain rule을 적용하면서 식을 전개해 주시는데

규칙성을 발견할 수 있습니다! 액웨액웨액웨..액앤!

05. 이진 분류와 다중 분류

• 선형 분류와 퍼셉트론
• Sigmoid를 이용한 이진 분류
• MSE vs likelihood (왜 log-likelihood를 써야 할까?)
• 인공신경망은 “MLE 기계”다!
• Softmax를 이용한 다중 분류
• Summary (인공신경망에 대한 정리)

저는 chapter5가 1 다음으로 가장 중요하고, 강의 중 가장 감탄했던 파트입니다.

일단 이진 분류와 다중 분류에 대한 직관적인 설명은 물론이고,

loss 함수에 대한 통찰력을 얻게 될 수 있습니다.

저는 책으로 딥러닝을 공부할 때, 이진 분류는 binary_crossentropy, 회귀는 MAE.. 하고 외워서 손실 함수에 대해 각각 공부했었는데 '딥러닝의 뿌리 이론'이라고 level 3 정도 수준의 개념을 다뤄주시는데 Loss 함수는 각각 공부하는 것이 아니라 같은 뿌리를 가졌다는 내용으로 풀어주십니다.

06. 인공 신경망, 그 한계는 어디까지인가?

• Universal Approximation Theorem (왜 하필 인공신경망인가?)
• Universal Approximation Theorem (실습을 통한 확인)
• Beautiful insights for ANN (AI가 스스로 학습을 한다는 것의 실체)

해당 chapter에서는 FC layer가 굉장히 비효율적이고, hidden layer 한 층만 있어도 어떠한 연속 함수를 표현할 수 있기에 인공 신경망에는 한계가 없다는 Universal Approximation Theorem에 대해 설명해 주시는 파트입니다!

그리고 미분만 가능하면 우리만의 layer를 표현할 수 있다는 것을 알려주십니다.

딥러닝에 대해 진입장벽이 높다고 생각했는데 이 chapter를 들으면서 나도 새로운 아이디어를 제시할 수 있구나라는 희망을 얻었습니다!

그리고 해당 파트부터는 Colab 환경으로 실습을 해주십니다!

원래 구글 드라이브를 사용하셨던 분들은 꼭 경로 복사하셔서 자기 경로를 넣어서 실습 진행하시면 될 거 같아요!

07. 깊은 인공신경망의 고질적 문제와 해결 방안

• 직관적으로 이해하는 vanishing gradient
• Vanishing Gradient의 해결 방안들
• BN 직관적으로 이해하기
• Vanishing gradient 실습
• Loss landscape 문제와 skip-connection
• Loss Landscape 실습
• Overfitting 과 해결 방안들
• Dropout 과 Regularization, 수식을 넘은 직관적 이해
• Autoencoder에 Dropout 적용, 실험 결과 공유
• Regularization 실험

해당 chapter는 기술 면접 질문을 준비하기에 좋은 파트라고 하셨습니다!

여기서는 Vanishing Gradient, Overfitting을 어떻게 해결하면 좋을지에 대한 것이 큰 주제고, 세부 개념들은 해당 문제들에 대한 해결 방안들에 대해서 강의해 주십니다!

그리고 chapter7은 실습 파일이랑 동영상을 제공해 주셔서 나중에 코드 응용해서 실험하기도 좋았고, 동영상 파일 보면서 복습하기에 더 용이하고 좋았습니다! 강의 들으면서는 강사님이 말해주시는 해석 적느라 사람이 바빠지고요 ,, ,



08. 왜 CNN이 이미지 데이터에 많이 쓰일까?

• CNN은 어떻게 인간의 사고방식을 흉내냈을까?
• CNN이 잘될 수밖에 없는 이유 (MLP와의 비교)
• CNN은 어떻게 특징을 추출할까?
• Padding & Stride & Pooling
• CNN의 feature map 분석
• CNN feature map 실습
• VGGnet 모델 읽기 & YOLO 감상
• VGGnet 실습
• Beautiful insights for CNN

저는 CNN은 정말 거의 무지에 가까운 상태였는데요 진짜 이건 강의를 보셔야 하는데 .... 다양한 사진과 예시로 설명을 직관적으로 해주셔서 개념을 머리에 채워 넣을 수 있었습니다.

이미지를 FC layer에 넣으면 정말 픽셀 하나하나를 쪼개서 너무 자세히 보려 할 텐데, 그건 인간이 이미지를 볼 때의 사고방식과는 정말 다릅니다. 그냥 딱 보고 강아지 면 강아지, 고양이면 고양이 알아야 하잖아요?

그래서 사전 정보인 위치, 배치가 중요하다는 것으로 개념을 잡아주십니다. convolution 연산을 통해 위치별 특징을 찾아내는 것입니다!

그래서 convolution 연산을 통해 어떻게 특징을 추출하는지, 컬러 사진일 때는 어떤 식으로 작동되는지,

padding, stride, pooling, VGGnet에 대한 내용도 잡아주십니다

이번에도 실습 파일을 통해서 구글 이미지를 직접 넣어보면서 CNN이 각 특징별 채널에 대해서 얼마나 특징을 잘 파악하는지에 대해 직관적으로 이해할 수 있었습니다!


09. 왜 RNN보다 트랜스포머가 더 좋다는 걸까?

• 연속적인 데이터 예시와 RNN의 개념
• RNN, 행렬, 벡터 식으로 5분 만에 이해하기
• RNN의 backpropagation과 구조적 한계를 직관적으로 이해
• plain RNN 실습
• RNN의 여러 유형과 seq2seq
• seq2seq 실습
• seq2seq의 문제점과 attention 개념
• RNN + attention의 문제점과 트랜스포머의 self-attention
• Beautiful insights for RNN
• 강의 마무리 (딥러닝 연구는 뭘 잘해야 할까?)

마지막 chapter에서는 RNN의 개념, 동작 방식은 어떠한지!

해당 chapter에서 가장 강조하는 구조적 한계가 무엇인지.

구조적 한계 설명을 굿 노트로 필기하는데 정말 어마 무시했습니다..


RNN의 구조적 한계를 이해해야 발전된 형태인 seq2seq에 대해 이해할 수 있고,

또 seq2seq의 문제점은 무엇인지.

RNN이 어떻게 트랜스포머로 발전할 수 있었는지를 이해할 수 있습니다!

마지막으로 Attention is all you need라는 논문을 소개해 주시면서 RNN의 본질적 문제인 갈수록 흐려지고, 멀리 갈수록 잊혀지는 문제를 self-attention으로 해결할 수 있다는 것을 이해시켜주십니다.

그리고 강의의 마지막에 딥러닝 연구에 대해 한 페이지로 풀어주시면서 새로운 아이디어를 우리도 도출해낼 수 있다는 희망을 키워주십니다!


완강하시면 이렇게 혁펜하임님의 눈웃음과 박수를 받을 수 있습니다 ㅎ.ㅎ 이렇게 해서 길고 길었던 저의 chapter 후기를 마치겠습니다!

3. 강의의 차별점

마지막으로 강의의 장점, 추천하는 이유, 차별점에 대해 설명드리려고 합니다!

저는 이런 분들이 [혁펜하임의 AI DEEP DIVE]을 들었으면 좋겠습니다!

딥러닝의 기초 개념부터 응용 개념까지 배우고 싶은 사람

파라미터만을 조절하며 딥러닝을 다루고 있었던 사람

파편화된 딥러닝의 지식을 제대로 정리하고 싶은 사람

기술 면접을 준비하는 사람

제가 모두에 해당했기 때문에 진심으로 너무 추천드리고 싶습니다!

언급했던 것처럼 딥러닝의 기초 개념부터 응용 개념까지 단단하게 쌓을 수 있기에 스스로 학습하고 응용할 수 있는 힘을 기를 수 있습니다.

그리고 정말 대충 넘어가시는 개념 하나도 없이 작은 개념부터 큰 개념까지 자세히 풀어주시고, 강의 내용 자체도 무겁고 진입 장벽이 높다기 보다 예시가 진짜 이해가 쏙쏙 박히게 잘해주시고, 그리고 재미있으세요 ,,, 가장 이해가 잘 되었던 이해는 CPU vs GPU였는데 CPU는 카이스트 박사 1명이고, GPU는 초등학생 1000명이라고 해주셨습니다 ㅋ.ㅋ

앗! 그리고 가르치는 일을 정말 사랑하시는 강사님이라는 생각이 들었습니다! 유튜브 라이브 방송으로 소통으로 질문도 받아주시고 해당 강의를 들으면 오픈 채팅방에서 혁펜하임님이 직접 질의응답을 해주십니다! 저도 들어와있어요 ㅎㅎ

마지막으로 그저 파라미터만을 조절하면서 파편화된 지식으로 딥러닝을 대하고 있었다면 이번 기회에 혁펜하임님의 직관적인 설명으로 다양한 통찰력을 얻어 AI의 인사이트를 확보할 수 있었으면 좋겠습니다!


이상으로 강의를 한 바퀴 다 들은 후에 제가 강의에 대해 추천해 드리고 싶은 점, 각 chapter 별 후기 등에 대한 포스팅이었습니다!

저는 한 번 더 강의를 듣고, 개념을 정리하는 포스팅을 올리면서 전체 개념에 대한 사고의 폭을 넓히고자 합니다!

강의를 저와 같이 들으시면서 제 포스팅을 함께 봐주시면서 같이 고민하고, 피드백도 얻고 할 수 있었으면 좋겠습니다! 🐰

profile
👩‍💻

0개의 댓글