2021. 09. 30 목요일 25일차

 

3-4-2 for Several Samples - Theory

오늘의 강의는 저번 시간에 이어 여러 개의 학습에 대해 배웠다. for Several Samples - theory 라는 강의 제목에서도 알 수 있듯이 여러 개의 샘플을 학습하는 방법의 이론에 대해서 배웠다. 이번 강의에 수식이 많이나오지만 그래도 지금까지 들은 강의가 있어서 맷집(?) 면역(?)이 생긴건지 그렇게 어려워보이지는 않았다. 

이번 수업의 내용은 모델의 loss와 cost를 구하는데, 여러 개의 샘플에 대해 구하는 것을 직접 하나하나 알려주시는 수업이었다. 수업자료 준비도 힘드셨을텐데.. 수식 입력이 진짜 귀찮기도 하고 시간이 오래 걸리는 작업인데 이 많은 수식을 이렇게 다 하나하나 유도해주셔서 정말 감사하게 들었다. 중복되는 내용이 많긴했지만, 여러 개라고 하니 또 어렵게 보이는 부분이 있기도 했다. 오늘의 수업도 100% 이해한 것은 아니지만 한 67%랄까.. 애매하게 이해했지만 그래도 어디가서 유도과정을 한 번 해봤다고는 할 수 있을 정도인 것 같다.

강의 마지막 즈음에 강사님께서 대중교통으로 이동하는 시간에 다시 한 번 생각해보며 득도할 때까지 한 번 생각을 해보라고 하셨는데, 이 수식을 기억하면서 가는 것도 대단한데 머릿 속에 섬광이 번뜩일 때가 있다는 것도 신기하다..

오늘 랩미팅에서 교수님도 심심할 때 보면 좋을 것 같다고 수식 유도 과정 유튜브 영상 링크를 주셨는데 정말 천재들의 세계란.. 너무 넘사벽인 것 같다.

▼패캠 강의 리스트▼

https://bit.ly/37BpXiC

 

*본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.*


#패스트캠퍼스, #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기 #수학적으로_접근하는_딥러닝_올인원_패키지_Online #대학원생공부 #인공지능독학 #머신러닝 #딥러닝

2021. 09. 29 수요일 24일차

 

3-4-1- for Several Samples - Computational Efficiency and Mini-batch

 

오늘의 강의는 미니배치는 무엇이고, 미니배치를 왜 사용하는지에 대해서 배웠다.

제목을 살펴보면, 여러 개의 샘플들을 학습하는 방법에 대해서 다루고, 컴퓨터의 효율성과 미니배치에 대해 배운다는 것을 알 수 있다.

여러 개의 샘플을 학습하는 방법에 대한 수식이나 이론적인 부분들은 다음 수업에서 배운다. 이번시간에는 미니배치에 대해서만 배웠다.

딥러닝은 수학적인 연산을 컴퓨터로 하게된다. 일반적인 연산이라면 컴퓨터 연산량에 과부하가 올 정도는 아니지만, 딥러닝을 할 때는 수 많은 파라미터와 변수를 사용하게 된다. 그리고 연산된 값을 여러 개의 유닛에 보내고, 각 유닛마다 엄청난 연산을 하므로 그냥 컴퓨터를 사용하게 되면 엄청난 과부하가 온다.

그래서 나온 것이 병렬(Parallel) 학습이다. 어려운 개념은 아니고, 말 그대로 병렬적으로 학습하는 것이다.

100개의 데이터를 학습해야한다면 10개의 데이터를 컴퓨터 1이 하고, 그 다음 10개의 데이터를 컴퓨터 2가 하는 식으로 총 10대의 컴퓨터가 나누어 학습한다고 보면 된다. 그리고 이렇게 컴퓨터(CPU)들을 합쳐놓은 것이 GPU이다.

이렇게 딥러닝에서 GPU를 사용하는 이유를 배웠다.

그리고 이렇게 나누는 것이 mini-batch라는 것을 배웠다.

batch는 데이터 집합이라고 생각하면 되고, mini-batch는 그 배치를 조금씩 묶어 나눈 것이라고 보면 된다.

 

▼패캠 강의 리스트▼

https://bit.ly/37BpXiC

 

*본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.*


#패스트캠퍼스, #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기 #수학적으로_접근하는_딥러닝_올인원_패키지_Online #대학원생공부 #인공지능독학 #머신러닝 #딥러닝

2021. 09. 28 화요일 23일차

 

3-3-2 for One Sample - Analysis

오늘의 수업은 지난시간 수업과 완전히 이어진 수업이라고 생각하면 될 것 같다.

제목에서도 알 수 있다시피 Analysis 해보는 수업이고, 이 수업 또한 코드와 이론적인 부분을 설명해주신다.

정말 감사했던게 지난 시간 리뷰를 앞에 잠깐 해주신다.

분명 어제 들었는데도 잘 기억이 안 나는 신기한 현상 때문에 이 리뷰시간이 없었더라면 오늘 수업은 이해하기 힘들었을 것 같다. 나는 챌린지를 하고 있어서 매일매일 하고 있어 사실 없어도 되는 부분이었지만, 만약 시간이 없어 일주일에 한 번이나 띄엄띄엄 듣는 사람에게는 이 리뷰시간이 정말 필요할 것 같다.

 

사진에 있는 강의자료 부분은 learning rate가 크면 발산할 위험이 높고, 작으면 너무 느리지만 최적화하는데 좋다고 했는데 그게 진짜 학습에서 어떤 그래프를 그리는지 보여주는 부분이다. 이렇게 디테일하게 확인시켜주시고, 실습해보고하는 강의는 처음이라 너무 좋으면서도 강의를 열심히 들으며 필기를 했다. 

뒤에는 θ(세타)의 initialization에 대한 부분도 나온다. 간단히 말하자면 어떤 값으로 세타를 시작해야 최적의 세타로 수렴하기가 좋을까 에 대한 것인데 결론은 그냥 랜덤 초기화를 시켜도 결과적으로 최적의 세타로 수렴할 수 있다.

다른 수업에서는 배울 수 없었던 부분을 이렇게 가르쳐주시고, 강의 중간중간 강사님도 공부하면서 어려웠던 부분이었고, 이런 부분을 어느 수업에서도 가르쳐주지 않았기 때문에 이 강의를 만드셨다는 게 느껴졌다.

딥러닝을 전공하는 대학원생 입장에서는 정말 감사한 수업이다.

 

 

▼패캠 강의 리스트▼

https://bit.ly/37BpXiC

 

*본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.*


#패스트캠퍼스, #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기 #수학적으로_접근하는_딥러닝_올인원_패키지_Online #대학원생공부 #인공지능독학 #머신러닝 #딥러닝

2021. 09. 27 월요일 22일차

 

3-3-1 for One Sample - Implementation

 

오늘의 강의는 SVLR sample에 대한 코드 implementation(구현)에 대한 강의였다.

SVLR은 Single-Variate Linear Regression without Bias Term

즉, bias term이 있는 하나의 변수에 대한 선형회귀이다.

쉽게 볼 수 있는 y = ax + b 꼴의 모델에 대한 샘플 구현 코드에 대한 강의였다.

오늘 다른 koBERT 구현하다가 loss랑 cost에 지쳐있었는데 선형회귀 식을 보자마자 지쳐버렸다.

그런데..! 다름 아닌 구현을 말씀해주셔서 내가 지금 고치고 있던 코드와 겹쳐보이면서 역시 강의 듣길 잘했다 하는 생각을 또 했다.

어제 딥러닝 모델이 어떻게 학습을 하는지를 배웠다면, 오늘은 딥러닝 모델이 학습하는 과정을 코드로 구현한 것이다.

사실 이런 부분은 잘 안 해주시는 강의가 많았다. (무료강의여서 그런가..)

이론을 설명해주시고 이 부분은 과제로 내드리겠습니다. 라던가 이론만 수업하는 강의였기 때문에 코드를 다루지 않는다던가... 이론을 알려주시고, 어디선가 가져온 코드를 해주셔서 본인이 잘 이해를 못한다던가, 모르는 부분이 있다던가... 했었다.

어쨌든 이론과 구현의 괴리가 있던 부분이었는데, 이론을 배우고, 그 이론을 가르쳐주신 분이 코드 구현을 하신 뒤에 코드를 하나하나 다 알려주셔서 정말 강의 질이 다르다는 생각을 했다.

 

오늘도 어렵지만 유익했던 딥러닝 공부 끝!

 

▼패캠 강의 리스트▼

https://bit.ly/37BpXiC

 

*본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.*


#패스트캠퍼스, #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기 #수학적으로_접근하는_딥러닝_올인원_패키지_Online #대학원생공부 #인공지능독학 #머신러닝 #딥러닝

 

2021. 09. 26 일요일 21일차

 

3-2-1 for One Sample - Theory

오늘 강의 진짜 너무 좋았다!!

오늘의 강의는 1개의 샘플에 대한 iteration을 알려주셨다.

딥러닝이 많은 데이터를 여러 번 학습해서 알고리즘을 학습하는건 알겠는데, 그 학습을 어떻게 하는거지? 에 대해서 배웠다.

그냥 다들 식을 세우고 loss를 계산하고 gradient를 계산해서 loss를 낮추는 방향으로 학습을 한다 까지만 얘기한다.

그런데 신경식 강사님은 달랐다!!

모델이 뭐고, 어떤 식을 학습하고, loss는 뭐고, gradient는 어떻게 하고, descent는 어떻게하고 등등 그 iteration이라는 것에 대한 풀이를 엄청 자세히 해주셨다.

다른 곳에서는 한 개의 샘플에 대해서 설명하는 것도 아니고 그냥 여러 개를 한꺼번에 말해주니 좀 어렵게 느껴졌던 것 같기도 하다. 수학이란게 한 개의 예제 대해서 설명해주고 일반화시켜주셔야 이해가 될락말락인데 다들 이정도는 쉬운건지 일반화부터 시작을 해서.. 너무 어려웠다.

진짜 어디서도 배울 수 없었던 거였는데 이렇게 알려주셔서 너무 좋았다. (사실 내가 공부를 많이 안 했던 것일 수도....)

다른 곳에서 알려주는 곳이 있었다 하더라도 설명이 너무 어려워서 못 알아들었을 수도 있는데

이 강의에서는 비교적 쉽게 설명해주셔서 진짜 이해가 잘 됐다. 

여러 번 복습하면서 설명할 수 있을 정도로 공부해야겠다.

 

 

오늘의 딥러닝 공부 끝!

▼패캠 강의 리스트▼

https://bit.ly/37BpXiC

 

*본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.*


#패스트캠퍼스, #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기 #수학적으로_접근하는_딥러닝_올인원_패키지_Online #대학원생공부 #인공지능독학 #머신러닝 #딥러닝

2021. 09. 25 토요일 20일차

 

3-1-8 Basic Building Nodes

 

이전 까지는 learning rate이나 gradient descent method나 딥러닝을 공부해본 사람이라면 한 번쯤은, 아니 여러 번 들어봤을 법한 (그리고 이해가 안돼서 뭐지? 하면서 몇 번이고 돌려봤을 법한 것들) 그런 것들에 대한 강의였다.

그리고 오늘은 Basei Building Nodes.

[1차 시청]

이름부터 신기하고 새로웠다.

node를 새롭게 쌓는다는건가? 뭘 배우는거지? 하며 기대만발이었었다.

그.런.데.

plus, minus 등 5가지의 class를 만들고 forward, backward를 시키셨다.

음.... 어... 분명 설명을 하시는데 이게 뭐지 하면서 듣고있어서 강의를 다시 들었다.

 

[2차 시청]

알았다 알았다!

처음에 강의를 시작할 때 간단히 오늘 배울 것에 대해 설명해주시면서 "오늘 배울 것은 간단해요."라고 말씀하셨었는데, 정말 알고나니 간단했다.

구현해놓으신 class 안에 forward, backward 가 있었는데 처음엔 이해 못했지만 이해하니 쉬웠다.

 

plus node, minus node 등이 있는데 이 node 앞에 붙은 plus, minus 등은 forward 혹은 backward propagation을 할 때 덧셈을 하며 propagation을 할건지, 뺄셈을 하며 propagation을 할건지 그것을 나타내 준 것이었다.

그러니까 propagation에 대한 함수였던 것이다.

 

오늘도 힘들었던 공부 끝...

 

▼패캠 강의 리스트▼

https://bit.ly/37BpXiC

 

*본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.*


#패스트캠퍼스, #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기 #수학적으로_접근하는_딥러닝_올인원_패키지_Online #대학원생공부 #인공지능독학 #머신러닝 #딥러닝

2021. 09. 24 금요일 19일차

 

3-1-7 Learning Rate

오늘은 사진이 어둡군

 

오늘의 강의는 Learning Rate(학습률)에 대한 강의였다.

학습률(learning rate)은 많이 들어왔고, 어려운 개념이 아니라서 약간 만만하게 생각하고 들었다.

일단, 이렇게 Learning Rate에 대해서만 한 강의로 들은 것은 처음이다. 보통 Gradient Descent 강의를 하면서 최적의 θ를 찾는데 얼만큼 빠르게 찾을 것인가 혹은 최적의 θ를 찾는데 몇 걸음을 걸어갈 것인가 (보폭설정) 등으로 그냥 포함된 것처럼 설명하고 넘어가신다.

그런데 이렇게 한 강의로 빼셔서 20분 정도 강의를 해주셔서 정말 꼼꼼하게 준비해주신 것을 느낄 수 있었다.

 

언제 배웠는지 까먹었지만 파형을 배울 때였나..(물리) 미분을 배울 때였나..(수학) 진동과 수렴, 그리고 발산을 배운다.

그 개념이 여기서 아주 잘 활용된다.

learning rate가 매우 작으면 아주 조금씩 움직여서 최적의 θ 포인트를 찾는데 시간이 오래 걸리지만, 점점 수렴하는 모양으로 찾아갈 수 있다.

learning rate가 조금 크면 성큼성큼 움직여서 최적의 θ 포인트를 찾을 때까지 진동하는 모습을 보이며 최적의 포인트를 찾아간다.

learning rate가 꽤 크면 작은 그래디언트를 보이면 점을 찾아서 발산해가면서 최적의 θ 포인트에서 아주 멀어질 수 있다.

 

뒤에서 θ1과 θ0의 학습 속도차이에 따라서 learning rate에 따라 이 차이가 어떻게 보이는지도 설명해주셨다.

이 부분은 100% 완벽하게 이해하지는 못했다.

하지만 파라미터가 많으면 많을 수록 learning rate에 따라 학습에 영향이 있을 수 있다는 것을 알았다.

 

아직도 배울게 너무 많다...

 

▼패캠 강의 리스트▼

https://bit.ly/37BpXiC

 

*본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.*


#패스트캠퍼스, #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기 #수학적으로_접근하는_딥러닝_올인원_패키지_Online #대학원생공부 #인공지능독학 #머신러닝 #딥러닝

2021. 09. 23 목요일 18일차

 

3-1-5 Gradient Descent Method 2

 

저번 시간에 이어 Gradient Descent Method에 대해 배웠다.

 

강의 내용을 정리해보자.

loss 함수 그래프가 아래로 볼록한 그래프라고 생각해보자.

출처https://plusthemath.tistory.com/225

이미지를 두고 설명하면 좋을 것 같아 어디선가 퍼온 사진이다.

A점과 B점이 있다하면, 우리는 그 지점의 그래디언트만 알고 있다.

아래로 볼록한 전체 함수의 개형은 모르는 것이다.

그래서 그래디언트를 기반으로 해서 최적점을 찾으려면 어느 방향으로 가야하는지(오른쪽으로 갈지 왼쪽으로 갈지) 그것만 알고 있는 상태인 것이다. 

우리는 그 그래디언트로 우리가 만든 모델(ex. y = θ1x1+θ0) 의 파라미터들(θ1,θ0) 을 학습시킨다.

우리가 가진 데이터들을 일반화할 수 있도록 하는 가장 최적의 파라미터가 될 수 있도록 학습시킨다.

 

그런데 이때, θ1과 θ0의 학습속도가 다를 수 있다. θ0는 느리게 학습하고 θ1은 엄청 빠르게 학습을 하면 같은 학습을 했을 때 어떤건 최적이 아닐 수 있게 된다.

그리고 파라미터를 예시에서는 2개로 두었지만, 실제 문제에서는 10개, 20개, n개 만큼 둘 수 있으므로 파라미터들의 학습 속도가 모두 다르면 학습 속도 차이 때문에 학습이 잘 안 될 수 있다.

따라서 파라미터는 자신의 bias가 전체 cost에 얼마나 영향을 주었는지만 편미분으로 계산하여 업데이트한다.

즉, 파라미터는 각각 업데이트된다.

 

▼패캠 강의 리스트▼

https://bit.ly/37BpXiC

 

*본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.*


#패스트캠퍼스, #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기 #수학적으로_접근하는_딥러닝_올인원_패키지_Online #대학원생공부 #인공지능독학 #머신러닝 #딥러닝

+ Recent posts