'머신러닝&딥러닝 교육'에 해당되는 글 16건

  1. 2017.12.23 Vector examples
  2. 2017.12.21 Multiplying a vector by a scalar
  3. 2017.12.21 Adding vectors algebraically and graphically
  4. 2017.12.20 Real coordinate spaces
  5. 2017.12.20 Vector intro for linear algebra
  6. 2017.11.20 [TIP] Machine Learning 학습 방법

Vector examples

 

이번 영상은 기초로 돌아가서 예시 위주의 강의이다.

 

는  순서가 주어진 2-튜플로서 모든 순서쌍의 집합이다.

 

 

벡터 a = (-1, 2), 벡터b = (3, 1).

 

벡터 a와 벡터 b를 성분별로 더한다.

 

보통 벡터는 어떤 점에서든 시작할 수 있다는게 관습이다.

(x1, x2)에서 시작한다고 했을때 벡터 a를 나타내보면 (x1 - 1, x1 + 2)가 된다.

 

(-4, 4) 시작접에서 벡터a를 나타내고 싶다면, 벡터 a의 첫 번째 성분에 -4를 더하고 벡터a의 두 번째 성분에 4를 더한다.

 

(-4, 4)에서의 벡터a

 

 

 

 

(-4, 4)에서의 벡터a를 그리면 아래와 같다.

 

수평으로 -1만큼, 수직으로 +2만큼 가는 벡터a는 어느 지점에서든지 나타낼 수 있다.

 

벡터b를 나타내면 다음과 같다.

standard position은 (0, 0) 이다. 표준점에서 벡터a, 벡터b, 벡터a + 벡터b 를 나타내면 다음과 같다.

벡터 a와 벡터b를 더했을 때 그 관계를 명확하게 표현해 주기 위해서 벡터a에 벡터b를 연결하는 것이다. 즉 벡터 a의 끝점에 벡터b의 시작점을 연결하라는 것이다.

정리하자면 표준점에서 시작한 a의 끝점에서 b를 시작하는 것이다. 그리하여 벡터 a의 시작점이랑 벡터 b의 끝점이랑 이으면 그게 바로 벡터의 합이 된다.

 

Vector에 양수의 Scalar를 곱하면 Magnitude만 확장된다

 

벡터 v, 벡터v * 2

 

x - y 그래프

 y - x

 

 

y - x 그래프

x 와 -x는 평행하며, 방향만 정반대이다.

 

 

벡터 a = (0, -1, 2, 3), 벡터 b = (4, -2, 0, 5)

 

벡터 4a - 벡터 2b 

 

 

 

 

 

이 포스팅은 머신러닝/딥러닝을 위한 선행학습으로 칸 아카데미(Khan Academy)Linear algebra(선형 대수) Vector examples 강의의 대한 학습노트입니다.

Posted by 이성윤

Multiplying a vector by a scalar

 

값이 (2,1)인 벡터 a가 있다.
 

 

 

Vector에 양수의 Scalar를 곱하면 Magnitude만 확장된다.

 

벡터 a에 3을 곱한다고 하면 3 x (2,1)과 같다. 3은 그저 숫자이며, 벡터는 얼마만큼 어느 방향으로 움직여야 하는지 크기와 방향, 둘 다 알려준다.

각각의 성분에 3을 곱하게 되면, 2와 1이 벡터의 각 성분이니 이들을 3으로 곱한다. (3 x 2)와 (3 x 1)이 된다. 스칼라를 곱한 벡터는 여전히 2차원 벡터(6, 3)이다.

 

벡터 a 와 스칼라 3을 곱한 그래프로 표현하면 아래와 같다.

 

위의 스칼라 곱을 하였을 경우 방향은 여전히 같은 방향을 가지고 있으며, 크기는 바뀌었다. 스칼라(scalar)가 확대(scale up)를 해주며, 스칼라(scalar)와 확대하다(scale up)의 어원이 같다. 스칼라의 곱은 벡터를 확대한다고 정리 할 수 있다.

 

각각의 성분에 -1을 곱하게 되면, 2와 1이 벡터의 각 성분이니 이들을 -1으로 곱한다. (2 x -1)와 (1 x -1)이 된다. 스칼라를 곱한 벡터는 여전히 2차원 벡터(-2, -1)이다.

 

 

 

 

Vector에 음수의 Scalar 곱을 하면 Direction은 반대방향이 되며 Magnitude도 확장된다.

 

 

 

 

이 포스팅은 머신러닝/딥러닝을 위한 선행학습으로 칸 아카데미(Khan Academy)Linear algebra(선형 대수) Vectors and spaces의 Multiplying a vector by a scalar 강의에 대한 학습노트입니다.

Posted by 이성윤

Adding vectors algebraically and graphically

 

벡터 a와 벡터 b 2차원 벡터 두 개가 있고, 벡터 a와 벡터 b의 합을 어떻게 정의할 수 있을까?

 

 

 

차원이 같은 두 vector의 합은 각 Component를 더한다.  벡터 두 개의 합은  벡터가 된다.

 

 

 

 

벡터(a)와 벡터(b) 둘다 의 벡터이다.

 

 

 

 

 

시각적인 혹은 개념적인 방향에서 이 벡터들을 그래프에 그려보자

 

 

중요한 것은 크기와 방향이다. 크기는 벡터의 길이로 표현되고, 방향은 벡터가 가리키는 방향이다. 크기와 방향이 같은 벡터는 어느 곳에 그려도 똑같은 벡터가 된다.

 

보라색 벡터(a)와 녹색 벡터(a)를 더한 것이 파란색 벡터(a + b)와 같다. 더하는 순서를 바꿔도 결과는 같다.

 

 

이 포스팅은 머신러닝/딥러닝을 위한 선행학습으로 칸 아카데미(Khan Academy)Linear algebra(선형 대수) Vectors and spaces의 Adding vectors algebraically and graphically 강의에 대한 학습노트입니다.

'머신러닝&딥러닝 교육 > Linear algebra - khanacademy Course' 카테고리의 다른 글

Unit vectors intro  (0) 2017.12.23
Vector examples  (0) 2017.12.23
Multiplying a vector by a scalar  (0) 2017.12.21
Real coordinate spaces  (0) 2017.12.20
Vector intro for linear algebra  (0) 2017.12.20
Posted by 이성윤

Real coordinate spaces 

 

는 2-dimensional real coordinate space(2차원 실수 좌표 공간)을 의미한다.

2는 우리가 다루는 차원을 의미하고 R은 실수좌표공간을 의미합니다

2D real coordinate space는 실수값을 가진 모든 2-튜플(all possible real valued 2 tuples) 말한다.

 

  

 

 

가로축으로 4만큼 세로축으로 3만큼 이동

 

 

크기와 방향만 같으면 같은 벡터

 

 

우리가 를 다룬다는 것은 모든 가능한 실수값을 가지는 2-튜플을 다루는 것이다. 따라서 이 공간위의 모든 벡터들이 어디에 있는지 알수 있으며, 그리고 그 벡터는 각 성분들은 실수로 이루어져 있다.

 

3과 4가 성분이 될 수도 있고 -3과 -4가 성분이 될 수도 있다.

 

 

가로축으로 -3만큼 세로축으로 -4만큼 이동

 

 

는 3차원 실수좌표공간이다. 가능한 모든 실수값을 가지는 3-튜플을 이용할 수 있다는 말이다.

 

 

x벡터와 b벡터는라는 집합의 원소라고 할 수 있다. 실수값을 가지는 3-튜플이다.

 

를 시각화 하였고, 이를 좌표로도 그려보았다. 3차원을 시각화하는 일은 홀로그램이나 여러가지 경험을 통해 이미 해봐서 그렇게 어렵지는 않다. 하지만 3차원을 넘어서서 계속해서 차원을 확장할 수 있다. 4차원, 5차원, 6차원, 7차원, 20차원, 100차원 까지도, 물론 이것은 명백하게 점점 더 어려워지겠지만 시각화하는것은 불가능하더라도 적어도 그것을 n-튜플 벡터라고 수학적으로 표현할 수 있다.

 

n-dimensional real coordinate space를 의미한다.

 

 

 

이 포스팅은 머신러닝/딥러닝을 위한 선행학습으로 칸 아카데미(Khan Academy)Linear algebra(선형 대수) Vectors and spaces의 Real coordinate spaces 강의에 대한 학습노트입니다.

Posted by 이성윤

Vector intro for linear algebra 

 

vector는 크기와 방향을 동시에 가지는 것이다.

vector() = magnitude() + direction()

 

"한 시간에 5마일의 속력으로 움직인다고 말할 수 있다" 하지만 이정보는 벡터가 아니다.

 

5mph(Speed)의 정보는 단지 크기의(Magnitude) 정보만 주기때문에 벡터가 아니라 속도(Scalar)이다.

 

누군가 "이 물체는 시속 5마일의 속력으로 동쪽으로 움직이고 있다" 라고 말 할 수 있다.

 

 

"시속 5마일로", "동쪽으로" 라는 정보가 합쳐져서 벡터가 되었다. 더이상 "속력(speed)" 이라 부르지 않고 "속도(Velocity)" 라고 부르게 되며 이것이 vector이다.

 

이러한 정보를 2차원에서 표현할 수 있다. 선형 대수는 2차원 뿐만아니라, 3,4,5차원 이상을 확장할 수 있고 3차원 이상을 상상하기는 어렵지만 수학적으로 3차원을 넘어서 차원을 다룰 수 있다.

 

vector는 크기와 방향만 신경쓰면 된다. Magnitude와 Direction이 같은 두 vector는 같은 vector이다.

 

 

vector를 변수로 표현하고 싶다면 소문자를 사용해 표현한다.

 

+x(동쪽), -x(서쪽), -y(남), +y(북) 좌표계에서 (5, 0)은 다음과 같이 vector로 표현 할 수 있다.

 

첫 좌표는 수평으로 얼만큼 움직였는지를 나타내고, 두 번째 좌표는 수직으로 얼마나 움직였는지를 나타낸다.

 

수평 방향으로 +3, 수직 방향으로 +4만큼 움직이는 Vector는 다음과 같이 표현할 수 있다.

 

 

위의 Vector의 Magnitude(크기 또는 길이)는 피타고라스의 정리로 구할 수 있다.

 

 

 

 

이 포스팅은 머신러닝/딥러닝을 위한 선행학습으로 칸 아카데미(Khan Academy)Linear algebra(선형 대수) Vectors and spaces의 Vector intro for linear algebra 강의에 대한 학습노트입니다.

Posted by 이성윤

먼저,

머신러닝을 시작하게된 계기가 부서에서 하는 프로젝트 중에 VMS 솔루션을 개발하고 있다.

VMS라는 것은 영상관리시스템(?) 정도인것 같은데, 여기에 특장점으로 영상분석이라는 기능을 추가하기

위해서 우리팀에 역할이 주어졌다.


영상분석을 하기 위해서. 기존에 고객사에서는 비전 방식(?)에서 사용하는 기술(?)로 영상분석 기능을 도입했다.

이녀석은 성능은 우월하지만 정확도가 떨어진다. 아마 분석에 대한 에러율이 30%이상일 것이다.

기존에 고객사에서 제공하는 영상분석 라이브러리를 제거하고 자체 솔루션을 도입하기 위해 머신러닝 방식에 영상분석 솔루션을 도입하게 된것 같다.


딥러닝에서 CNN이라는 기술이 화두고, 머신러닝에 기초도 없는 상태에서 CNN을 공부하는게 무리라는 생각이 들었다.


내가 공부를 진행해온 과정을 보면,


구글에서 '머신러닝 강의' 라는 키워를 가지고 3가지 정도의 강좌를 찾았다.

1. 홍콩 과기대 김성훈 교수 강의 - 모두를 위한 머신러닝/딥러닝 강의

 - http://hunkim.github.io/ml/

2. KAIST 오혜연 교수 강의 - K-MOOC(인공지능과 기계학습)

 - http://www.kmooc.kr/courses/course-v1:KAISTk+KCS470+2017_K0202/about

3. Standforad 대학의 Andrej Karpathy 강의 - CS231n: Convolutional Neural Networks for Visual Recognition

 - http://cs231n.stanford.edu/syllabus.html

4. 모두의 연구소의 Chanwoo Jacob Lee - 딥러닝 강의


이중 내가 선택한 강의는 홍콩 과기대 김성훈 교수의 강의를 선택했다.

※ 먼저 말하자면, 1번 김성훈 교수의 강의는 10번쯤 본거 같고, 4번 강의는 중간중간 참고하였으며, 3번 강의는 현재 팀에서

1강부터 세미나를 진행하고 있어서 진행중이다. 2번 강의는.. 볼 여력이 없었다. 8월초부터 시작하여 현재까지의 공부한 내용들을 기록해보겠다.


강의는 총 12강으로 구성되어 있지만, 서브 주제들이 있어서 대략 30강 정도 되는거 같다.

강의 시간은 10~20분 사이에 짧은 시간으로 되어 있으며, 교수님도 언급을 하지만, 최대한 수학과 프로그래밍을

모르는 사람을 대상으로 가르치려고 노력한것 같다.


강의를 보기로 마음 먹은날, 11강 'Convolutional Neural Networks' 강의를 아무 생각 없이 먼저 들어봤다.

CNN 강의가 총 6개로 구성되어져 있는데 다 들어봐도 무엇을 가르치려고 하는지 의도파악이 전혀되지 않았다.

그래서 처음부터 듣지 않으면 안되겠다고 생각하여 정독하게 된다.


0강 - 수업의 개요

-> 그냥 들으면 된다. 무난하다.

0강 - 김성훈교수님

- https://www.youtube.com/watch?v=BS6O0zOGX4E


1강 - 머신러닝의 개념과 용어

-> 머신러닝의 기본 개념에 대해서 간략히 설명한다.

1강 - 김성훈 교수님

- https://www.youtube.com/watch?v=qPMeuL2LIqY


2 - Linear Regression 의 개념

이제부터 본격적이다. 내가 주로 참조한 블로거들이 있는데 초기에는 '꿈을위한단상'이라는 블로거의 글을 많이 보았으며,

중기 이후에는 '파이쿵'이라는 사람의 블로그를 많이 보았다.

'꿈을 위한 단상' 이라는 블로거의 글쓴이는 나처럼 수식에 대한 증명까지 못참고 시작하게 된거 같다.

'파이쿵' 이라는 블로거의 글쓴이는 김성훈 교수님의 강의를 듣고 그 강의를 정리한 사람이다.


키워드 :

가설 함수(Hypothesis), 회귀분석, Linear Regression, Cost


여기에서 알아야 할 점은 회귀분석이다.

내가 참고한 사이트들은 아래와 같다.

2강 - 김성훈 교수님

- https://www.youtube.com/watch?v=Hax03rCn3UI

2강 정리

- http://pythonkim.tistory.com/7?category=573319

회귀분석정의

- http://math7.tistory.com/118

선형 회귀 분석 간단 정리

- http://mazdah.tistory.com/749?category=598657

- http://mazdah.tistory.com/756?category=598657



3강 - Linear Regression cost함수 최소화

여기서부터는.. 수학이 필요하다.

고등학교때.. 수학을 좋아했지만, 게임때문에 수학을 등한시 했던 참담함이 이제서야 들어나기 시작했다.

전직장에서, 같이 살던 동생이 내가 수학공부를 해둬야겠다고 말하자 친히 자기가 공부했던 정석 풀세트

까지 집에서 가져다 주면서 공부해보라고 했는데.. 그 기회를 놓친것이 참으로 아쉽다.

어쨋든, 난 이 고비를 넘기고 싶어서. 여기서 강의를 이어가지 않고 한달동안 중-고딩 수학 수업을 듣기 시작했다.


요즘은 너무나도 공부하기 좋은 환경이 아닌가 싶다. 지금 머신러닝을 공부하기 위해서 강의를 듣는것처럼.

수학도 여러 선생님들이 강의를 잘 올려 두었다. (아주 다행인 일)


이 강의에서 내가 수학을 공부해야겠다고 생각하게된 이유는 '미분' 때문이다.

미분을 공부하기 위해서 내가 선택한 강의는 아래와 같다.


1. 수학의 정석인강 기본정석 미적분1 김강용

- https://www.youtube.com/playlist?list=PLZ-sYD4cFpbzqR6QprwOfjd3C-ySwYGsI

여기서 내가 들은 강의는

1강 - 수열의 극한1

2강 - 수열의 극한2

5강 - 함수의 극한

6강 - 함수의 연속1

7강 - 함수의 연속2

8강 - 미분계수와 도함수1

9강 - 미분계수와 도함수2


2. 개념원리 미적분2 - 도정

https://www.youtube.com/playlist?list=PLufHu9rBg_0ijjZYlfXLAizzXWCiU9nZJ

이 사람은 원래는 유투브에 무료로 배포했지만, 변심해서 지금은 유료가 되었다.

돈 없는 학생들을 위해서 좋은 강의를 공유하고 있구나 생각했는데.. 아쉽다 ㅋ

이 강의를 듣게된 이유는 미분을 하다보니, 지수함수랑 로그함수를 알아야 하며 또한, 지수/로그 함수 그래프를

알아야 한다. 여기에서 들은 강의는

1-1강 - 지수함수(1)

1-1강 - 지수함수(2)

1-2강 - 로그함수(1)

1-2강 - 로그함수(2)

1-2강 - 로그함수(3)


3. 이외의 생각나는 강의

중학교 수학이 생각 안나서, 유리수, 지수, 로그 등도 찾아서 들었고,

자연상수, 자연로그e 뭐 이런것들도 더찾아서 들었던것 같다.


여튼 약 1달 동안 와이프랑 함께(ㅋ) 수식 풀고 증명하고 이러한 과정을 거쳐왔다.


다시 김성훈 교수님의 3강으로 돌아오면,

미분을 알아야 하는 이유는 Gradient Descent Algortithm 때문이다.


키워드 :

Hypothesis, Cost, Gradient Descent Algorithm, 미분, 편미분, 기울기, 절편


내가 참고한 사이트들은 아래와 같다.

3강 - 김성훈 교수님

- https://www.youtube.com/watch?v=TxIVr-nk1so

3강 정리

- http://pythonkim.tistory.com/10?category=573319

기울기와 절편

- http://mazdah.tistory.com/761?category=598657

시그마와 미분

- http://mazdah.tistory.com/762?category=598657

수학 - 수치 미분

- http://blog.naver.com/PostView.nhn?blogId=mykepzzang&logNo=220072089756&parentCategoryNo=16&categoryNo=&viewDate=&isShowPopularPosts=true&from=search

수학 - 미분계수

- http://terms.naver.com/entry.nhn?docId=2073828&cid=47324&categoryId=47324

수학 - 도함수

- http://terms.naver.com/entry.nhn?docId=2073829&cid=47324&categoryId=47324&expCategoryId=47324

수학 - 미분 정리

- https://www.youtube.com/watch?v=oZyvmtqLmLo&feature=youtu.be

- https://ko.wikipedia.org/wiki/%EB%AF%B8%EB%B6%84


4강 - 여러개의 입력(feature)의 Linear Regression


이 강의에서 가장 중요한 점은 행렬이다. 또 한.. 머신러닝.. 딥러닝에서 가장 중요한 개념이 행렬이 아닌가 싶다.

또 여러 블로거들을 지나치다가 "행렬'이 머신러닝을 이해하는 가장 중요한 첫걸음이라는 글을 본것 같기도하다.

하지만, 내가 저강의를 들을때쯤에는, 아래 그림을 이해하는데 어려운게 없어서 크게 개의치 않고 넘어갔던것 같다.


중요하다고 생각되는부분이, 단순선형회귀 함수를 그래프로 그려 시각적으로 확인하는 것은 크게 어렵지 않다. 

Multi-Variable이라는 개념에서부터. 3차원 그래프까지는 예상이 되지만, 차원이 넘어갈 수록 시각적으로 그려지는

모습이 떠올려지지 않는다.


그래서 어떤이가. 행렬을 배우기에 좋은 사이트를 소개해줬다.

* 칸아카데미 선형대수 강의

- https://www.khanacademy.org/math/linear-algebra/vectors-and-spaces/vectors/v/vector-introduction-linear-algebra


아직 이강의를 듣지 못했다. 하지만 조만간에 이강의를 들을 예정이다.


키워드 :

Matrix, Transpose, 행렬, 행렬의 곱, 다중 선형 회귀


내가 참고한 사이트들은 아래와 같다.

4강 - 김성훈 교수님

- https://www.youtube.com/watch?v=kPxpJY6fRkY&feature=youtu.be

4강 정리

- http://pythonkim.tistory.com/13?category=573319

다중 선형 회귀

- http://mazdah.tistory.com/764?category=598657

- http://www.holehouse.org/mlclass/04_Linear_Regression_with_multiple_variables.html


4강까지 정리

- http://pythonkim.tistory.com/15?category=573319


5-1강 - Logistic (Regression) Classification - Hypothesis 함수 소개

로지스틱 회귀분석을 알기 위해서 상당한 시간이 필요했다.

수학적인 개념이 가장 많이 요구되는 시간이기도하다. 하지만 로지스틱회귀 분석을 넘어서면 조금 자신감도 붙고

재미가 있어지는 시기이기도 한것 같다. 참고로 딥러닝에서 유명한 알고리즘들(네트워크)은 로지스틱 회귀분석을

거쳐 로지스틱회귀가 전신인 소프트 맥스라는 함수를 사용하고 있다.


"꿈을 위한 단상" 블로거의 글이 가장 큰 도움이 되었으며, 저 사람은 문과생이라서 나와 같은 입장에서 알아가고

글을 쓴게 아닌가 싶다.

3강에서 배운 선형회귀분석은 예측을 위한 함수이다.

5강에서 가르치는 로지스틱회귀부터는 분류에 개념을 가지고 있다.

또한 이부분에서 가장 많은 블로깅과 강의를 본게 아닌가 싶다.


키워드 :

예측, 분류, 로지스틱 회귀, 자연상수 e, 자연로그, 로그, 로그함수의 그래프, 극한(무한대), 시그모이드, 오즈비, 로짓 변환


5-1강 - 김성훈 교수님

- https://www.youtube.com/watch?v=PIjno6paszY&feature=youtu.be

5강 정리

- http://pythonkim.tistory.com/16?category=573319

로지스틱 회귀 분석 이해를 위한 수학 지식

- http://mazdah.tistory.com/769?category=598657

위키 - 오즈비, 로짓 변환, 로지스틱회귀

- https://ko.wikipedia.org/wiki/%EB%A1%9C%EC%A7%80%EC%8A%A4%ED%8B%B1_%ED%9A%8C%EA%B7%80

자연상수와 자연로그

- http://mazdah.tistory.com/770?category=598657

자연로그와 자연상수e 심화학습

- http://mazdah.tistory.com/773?category=598657

모두의 연구소 노트 설명- 비용함수(로지스틱 회귀)

- https://www.youtube.com/watch?v=XvB5u7YSeUk

기타 블로거들

- http://gnujoow.github.io/ml/2016/01/29/ML3-Logistic-Regression/

- http://jihoonlee.tistory.com/19

- http://gnujoow.github.io/ml/2016/01/29/ML3-Logistic-Regression/

- http://gentlej90.tistory.com/69

- https://b.luavis.kr/ml/Logistic-regression

- https://medium.com/mathpresso/mathpresso-머신-러닝-스터디-4-회귀-분석-regression-2-4f938f1f1c2d

- http://bcho.tistory.com/1142

- http://kkokkilkon.tistory.com/19

- https://ratsgo.github.io/machine%20learning/2017/04/02/logistic/


5-2강 - Logistic (Regression) Classification - Cost 함수 소개


이부분에서부터 그래프에 대해서 생각을 해보게 된것 같다. 난 기본적으로 지수함수의 그래프 로그함수의 그래프가

바로 떠올려지지 않았다. 사실 배운적도 없는것 같다. 그래서 다시 중학교 과정의 수학 지수와 로그를 공부했고

다시 고등학교 과정의 지수함수의 그래프와 로그함수의 그래프를 보게 된것 같다.



키워드 :

그래프, 지수, 로그, 지수함수의 그래프, 로그함수의 그래프, Gradient Descent, 자연상수e, Cross-Entropy


5-2강 - 김성훈 교수님

- https://www.youtube.com/watch?v=6vzchGYEJBc&feature=youtu.be

5-2강 정리

- http://pythonkim.tistory.com/22?category=573319

로지스틱회귀의 비용함수 이해

- http://mazdah.tistory.com/783?category=598657

로지스틱 회귀 비용함수로부터 Cross-entropy 도출하기

- http://mazdah.tistory.com/791?category=598657

수식을 그래프로 그려주는 사이트

- https://www.desmos.com/calculator



6-1강 - Softmax Regression (Multinomial Logistic Regression) - Multinomial 개념 소개

궁극적으로 CNN의 마지막 단계에 Softmax Regression을 사용하게 된다. 반드시 이해해야 한다.

로지스틱 회귀를 넘어섰다면, 크게 어렵지 않게 다가 올수 있다.


키워드 : 소프트맥스, Multinomial Classification, 행렬, 시그모이드, 확률, 1


6-1강 - 김성훈 교수님

- https://www.youtube.com/watch?v=MFAnsx1y9ZI&feature=youtu.be

6-1강 정리

- http://pythonkim.tistory.com/19

다항 로지스틱 회귀의 이해

- https://www.youtube.com/watch?v=MFAnsx1y9ZI&feature=youtu.be

모두의 연구소 노트 설명- 비용함수(소프트맥스)

- https://www.youtube.com/watch?v=jeOp8aIm1x8

기타 블로그

- http://copycode.tistory.com/164

- http://goodtogreate.tistory.com/entry/Softmax-Function

- http://coolingoff.tistory.com/26

- http://eehoeskrap.tistory.com/144

- http://eyeofneedle.tistory.com/3

- http://dytis.tistory.com/36


6-2강 - Softmax Regression (Multinomial Logistic Regression) - Cost 함수 소개

이번 강의에서는 Cross-Entropy 라는 개념이 나온다. 퓨쳐시스템에서 DDoS장비 펌웨어 개발업무를 할 때, 임계치 자동 설정을 위해 매일, 매주, 매달의 평균 CPS, TPS, PPS 통계를 학습하여 임계치를 자동설정해주는 기능이 있었다. 그때는.. 엔트로피가 수학적이라는 개념이라는 정도로만 알고 있었고 더 나아가서 공부해보려는 생각을 하지 못했다. 이제 이렇게 공부를 하게 되니 반갑기도하고 제대로 알아보자는 마음도 생긴다.


키워드 : Cross-Entropy, 소프트맥스, Multinomial Classification, 행렬


6-2강 - 김성훈 교수님

- https://www.youtube.com/watch?v=jMU9G5WEtBc&feature=youtu.be

6-2강 정리

- http://pythonkim.tistory.com/20?category=573319

로지스틱 회귀 비용함수로부터 Cross-entropy 도출하기

- http://mazdah.tistory.com/791?category=598657


7-1강 - ML의 실용과 몇가지 팁 - 학습 rate, Overfitting, 그리고 일반화 (Regularization)

여기 까지 왔으면 머신러닝에 이용되는 기본적인 알고리즘들을 학습했다고 볼 수 있을것 같다. 여기서 부터는 조금씩

딥러닝에 세계로 들어가는 시점인것 같다. 이번 주제에 대해서는 실질적으로 텐서플로우를 이용하여 학습하고 그 결과에

대해서 튜닝하는 과정에 이용되는 TIP 이라고 보면 될것 같다.


키워드 : 학습율, Overfitting, Regularization, L2


7-1강 - 김성훈 교수님

- https://www.youtube.com/watch?v=1jPjVoDV_uo&feature=youtu.be

7-1강 정리

- http://pythonkim.tistory.com/23?category=573319

표준화/정규화

- https://brunch.co.kr/@rapaellee/4

기타 블로그

- http://leechanho.tistory.com/24

- http://blog.naver.com/PostView.nhn?blogId=cattree_studio&logNo=220703210504

- http://studioplug.tistory.com/264


7-2강 - ML의 실용과 몇가지 팁 - Training/Testing 데이타 셋

이번 강의는 데이터를 학습시키기 위한 이론적인 방법론에 대한 설명이다.


키워드 : Training, Test, Accuracy, Performance, Evaluation


7-2강 - 김성훈 교수님

- https://www.youtube.com/watch?v=KVv1nMSlPzY&feature=youtu.be

7-2강 정리

- http://pythonkim.tistory.com/24?category=573319


8-1강 - 딥러닝의 기본 개념과, 문제, 그리고 해결 - 시작과 XOR 문제 비디오

이번 강의는 딥러닝의 역사와 거쳐온 문제와 해결 과정들을 알아갈 수 있다. 참으로 신기한게 인간의 뇌를 흉내낼 생각을 했다는 것과 그것을 컴퓨터 과학으로 옮기려 했던점. 아무튼 천재들이 많은것 같다. 나는 김성훈 교수님 강의를 다 듣고 이글을 쓰고 있다. 뭔가 부족한 점을 매우기 위해 "밑바닥부터 시작하는 딥러닝"  이라는 책을 일회독 한 상태이다. 지금은 말 할 수 있지만 AI 역사에서 겪었던 여러문제들이 생각보다 간단한 부분에서 해결을 하지 못하고 10~20년 이라는 세월이 흘러가버린거 같다.

Marvin Minsky교수님이 AI계를 열었다고 해도 무방한 분이신데 저 사람때문에 10~20년이라는 세월이 퇴보했다고 평가하고 있다. (이유는 해결하지 못한다는 논문을 너무 잘 쓰셔서 이다.)

 


키워드 : 인간의 뇌, Marvin Minsky, 퍼셉트론, XOR, Hinton, Lecun, CNN 


8-1강 - 김성훈 교수님

- https://www.youtube.com/watch?v=n7DNueHGkqE&feature=youtu.be

8-1강 정리

- http://pythonkim.tistory.com/31?category=573319

퍼셉트론

http://www.datamarket.kr/xe/index.php?mid=board_LCmL04&listStyle=gallery&document_srl=25685

신경망

http://astrod.github.io/2017/02/19/19.html

http://psiyblg.tistory.com/4


8-2강 - 딥러닝의 기본 개념과, 문제, 그리고 해결 - Back-propagation 과 2006/2007 '딥'의 출현

이번 강의 역시 딥러닝의 역사에 대한 강의이다. Back-Propagation 이라는 것은 뒤에 강의에서 나오겠지만 딥러닝의 학습에 대한 가장 쟁점이 되는 중요한 기술이다. 꼭 이해해야 한다. 그리고 이번 강의에서 왜 우리들이 딥러닝을 공부해야 하는지 그리고 아직 늦지 않았다는 것. 그리고 지금부터라도 꼭 시작해야 한다는 점을 강조하신다. 나 또한 같은 생각이다. 지금부터 시작해도 아직 늦지 않았다. 3년전에 AI를 시작한 사람과 지금의 내가 다른점이 있다면 TensorFlow, Cafe와 같은 프레임웍을 다루는 숙련도일 것이라고 보기 때문이다. 자바를 오래한 사람이, C언어를 오래한 사람이 이제 막 시작한 사람보다 더 잘할것이라는 보장은 없기 때문이다고 생각한다.


키워드 : CIFAR, Imagenet, CNN, History, Deep Learning


8-2강 - 김성훈 교수님

- https://www.youtube.com/watch?v=AByVbUX1PUI&feature=youtu.be

8-2강 정리

- http://pythonkim.tistory.com/32?category=573319



9-1강 - Neural Network 1 - XOR 문제와 학습방법

드디어 딥러닝으로 들어서는 Neural Network이다. 이번 강의에서는 Minksy 교수가 절대로 풀지못할거라며 논문을 썻던 XOR문제에 대한 설명이 나온다. Neural Network의 전신은 Percept 이론이다. 퍼셉트론은 Minksy교수님이 고안했고 AI계를 시작하는 초기 이론이된다. 나는 김성훈 교수님의 강의를 통해 전체적인 흐름을 잡았지만, "밑바닥부터시작하는 딥러닝" 이라는 책을 공부함으로써 살이 붙은것같다. 사실 "밑바닥부터시작하는 딥러닝"이라는 책이 도움이 많이 되었다.


키워드 : Neural Network, Perceptrons, XOR, Train, Minsky


9-1강 - 김성훈 교수님

- https://www.youtube.com/watch?v=GYecDQQwTdI&feature=youtu.be

9-1강 정리

- http://pythonkim.tistory.com/33?category=573319


9-x강 - Neural Network 1 - 특별편: 10분안에 미분 정리하기

이번 강의는 보너스 강의이다. 김성훈 교수님이 수포자들을 위해서 특별히 만드신것 같다. 사실... 나는 미분을 공부한적이

없기 때문에 이 강의를 소화하지 못했다.. 고딩 수학을 듣고서야 이 수업을 이해하게 되었다. 김성훈 교수님의 여러 가지 측면에서 베푸는 마음이 느껴진다.




키워드 : 미분, 편미분, 합성함수, Chain Rule


9-x강 - 김성훈 교수님

- https://www.youtube.com/watch?v=oZyvmtqLmLo&feature=youtu.be

9-x강 정리

- http://pythonkim.tistory.com/35?category=573319


9-2강 - Neural Network 1 - Backpropagation (1986 breakthrough)

이번 강의는 가장 중요한 강의이다. Minsky 교수님께서 XOR문제는 2개의 뉴럴을 NAND, OR 게이트를 통해 AND 게이트를 수행하면 문제가 해결 된다는것을 밝혔지만, 학습을 시킬 수 없다고 단언하고 논문을 냈다. 이로 인해 20년동안 이문제가 해결이 안되었다고 한다. 사실 1970년도에 어떤 대학원생이 Backpropagation을 가지고 MINKSY교수님께 문제를 해결했다고 언급했지만 Minksy교수님은 이를 묵살했다고 한다.(본인도 해결 못했는데 니가 했을리 없다(?) 마음이셨던듯) 그후로 1986년도에 Hinton 교수님께서 Backpropagation을 논문으로 발표한 후 이 문제가 해결된다.



키워드 : 순전파, 오차역전파, Backpropagation, Minsky, Hinton, 미분, Chain Rule, sigmoid


9-2강 - 김성훈 교수님

- https://www.youtube.com/watch?v=573EZkzfnZ0&feature=youtu.be

9-2강 정리

- http://pythonkim.tistory.com/36?category=573319

기타 블로그

- http://www.datamarket.kr/xe/board_LCmL04/26808

- http://blog.naver.com/cjswo9207/221060205450


10-1강 - Neural Network 2 - XSigmoid 보다 ReLU가 더 좋아

Hinton 교수님에 의해 XOR 문제로 겪는 학습에 대한 문제점을 Backpropagation 기법으로 인해 해결이 되었다. 하지만 Backpropagation에서 레이어마다 사용되는 Sigmoid 함수 때문에 레이어가(층)이 깊어질 수록 학습에 영향을 주기 위한 값들이 상쇄 되는 효과가 발생한 것이다. 이 문제를 해결하지 못해 10년이상 또 후퇴 되었다고 한다. 현재는 sigmoid를 쓰면 안된다는 것이 분석이 되었고 이를 대항하여 ReLU라는 기법을 사용한다. 또한 ReLU라는 기법으로 해결이 된다는 것을 알게된 여러 학자들이 ReLU를 개선한 여러 기법들을 연구하고 있는 중이다.

참고로 말하면.. ReLU라는 기법이 어처구니가 없다. 0보다 작은값이 들어오면 0으로 치환하고 0보다 큰값만 영향을 미칠 수 있게 값을 조정한다는 것이다. 이러한 점이 10년이라는 시간을 어둡게 만들었다는게 참으로 놀랍다.



키워드 : Sigmoid, Relu, Backpropagation, CIFAR


10-1강 - 김성훈 교수님

- https://www.youtube.com/watch?v=cKtg_fpw88c&feature=youtu.be

10-1강 정리

- http://pythonkim.tistory.com/40?category=573319

기타 블로그

- http://coolingoff.tistory.com/39

- https://m.blog.naver.com/PostView.nhn?blogId=zzing0907&logNo=220693996517&proxyReferer=http:%2F%2Fwww.google.co.kr%2Furl%3Fsa%3Dt%26rct%3Dj%26q%3D%26esrc%3Ds%26source%3Dweb%26cd%3D8%26ved%3D0ahUKEwiNuMalyrXWAhUHpZQKHc6KCnUQFgg_MAc%26url%3Dhttp%253A%252F%252

- http://mongxmongx2.tistory.com/25

- https://wooil.gitbooks.io/mlearn/content/sigmoidbcf4-b2e4-relu-ac00-b354-c88b-c544.html


10-2강 - Neural Network 2 - Weight 초기화 잘해보자

이번 강의는 학습을 시키기 위한 초기값에 대한 강의이다. 이번 강의를 설명하시면서 김성훈 교수님께서도 어처구니가 없다는식으로 피식 웃으시는데.. 정말 그렇다. 초기 값이라는게 정말 중요한데. 여러 복잡한 알고리즘 RBM 등등이 있지만, Xavier/He라는 학자들이 어처구니 없는 결과를 보여준 것이다. 현재 HE의 초기 값으로 이미지넷 대회에서 Error 율이 3%로 밖에 되지 않는다고 한다. 참고로 인간은 5%이다. 하지만 이 분야는 아직도 많은 연구중에 있다고 한다.


xavier - 입력값과 출력값 사이의 난수를 선택해서 입력값의 제곱근으로 나눈다.
he - 입력값을 반으로 나눈 제곱근 사용. 분모가 작아지기 때문에 xavier보다 넓은 범위의 난수 생성.


키워드 : Xavier, He, Weight, 초기값 


10-2강 - 김성훈 교수님

- https://www.youtube.com/watch?v=4rC0sWrp3Uw&feature=youtu.be

10-2강 정리

- http://pythonkim.tistory.com/41?category=573319

기타블로그

- http://sanghyukchun.github.io/75/

- http://coolingoff.tistory.com/40


10-3강 - Neural Network 2 - Dropout 과 앙상블

이번 강의도 역시 Weight 초기값을 잘줘야 하는 것처럼 학습을 잘 할 수 있는 방법에 대한 설명이다. 하지만 이번 강의에서도 교수님께서 어처구니가 없어서 피식 웃으신다. 그러한 이유는 일반적으로 생각했을때 잘 안될것 같은데 결과가 좋게 나오기 때문이다.  대표적인게 아래의 그림이다. 여러개의 복잡한 네트워크 구조에서 일부의 노드들을 제거하여 특정 노드로만 학습을 시킨다는 것인데, 예를들어 설명한게 전문가가 너무 여러명이면 배가 산으로가니 특정 전문가들로만 학습을 하겠다는 것이다. 그냥 사람들의 일반적인 이론을 접목한것인데 잘 되는것이다.(아직 왜 잘 되는지 증명이 안된것으로 보인다)



키워드 : Dropout, Ensemble, 전문가, Train


10-3강 - 김성훈 교수님

- https://www.youtube.com/watch?v=wTxMsp22llc&feature=youtu.be

10-3강 정리

- http://pythonkim.tistory.com/42?category=573319

기타 블로그

- http://firmcode.tistory.com/13

- http://hexists.tistory.com/m/204

- http://bhappy0906.tistory.com/19

- http://newsight.tistory.com/106

- http://coolingoff.tistory.com/41


10-4강 - Neural Network 2 - 서브 주제

이번 강의는 Deep Learning의 기초를 마무리하는 시간이다. 교수님께서는 누구나 레고 블록처럼 모델을 만들 수 있다고 말씀하신다. 그러한 이유는 이미 우리는 Tensorflow와 같은 좋은 도구를 제공 받을 수 있음이지 싶다. 알파고는 CNN이라는 모델을 적용 했다고 한다. 그 밖에 RNN 등 다양한 모델들이 있는데 이것들이 결국 레고 블록처럼 자기 취향대로 조합을 했다는 것이다. 그러므로 우리도 우리의 모델을 자유롭게 만들 수 있다는 것이다. 





키워드 : CNN, RNN, 레고 블록


10-4강 - 김성훈 교수님

- https://www.youtube.com/watch?v=YHsbHjTBx9Q&feature=youtu.be

10-4강 정리

- http://pythonkim.tistory.com/43?category=573319

기타 블로그

- http://coolingoff.tistory.com/42

- https://wooil.gitbooks.io/mlearn/content/lec10/10-4-b808-ace0-cc98-b7fc-b137-d2b8-c6cd-baa8-b4c8-c744-b9c8-c74c-aecf-c313-c544-bcf4-c790.html



11-1강 - Convolutional Neural Networks - ConvNet의 Conv 레이어 만들기

처음 시작이 CNN 강의 부터 들었었다. 정말 그때는 무슨 소리인지 하나도 못알아 들었었는데. 지금은 전반적인 내용은 다 이해되고 있다. 하지만 아직까지도 그려지지 않은 부분이 있지만, 이제 공부의 시작이니 앞으로 나아가다 보면 자연스레 채워질 거라고 보고 있다. CNN은 고양이의 시신경을 연구하여 그 특징을 컴퓨터 과학에 접목 시켰다는 것이  참으로 놀랍다. 초기에 친구에게 CNN을 언급했더니 이상한 논문을 하나 던져줬었다. 쉽다며.. 이제 읽어볼 수있을것 같기도하다.


논문: Long-term Recurrent Convolutional Networks for Visual Recognition and Description

       https://arxiv.org/pdf/1411.4389.pdf





키워드 : 고양이, CNN, Convolutional, RELU, POOL, FC, Softmax, Layer


11-1강 - 김성훈 교수님

- https://www.youtube.com/watch?v=Em63mknbtWo&feature=youtu.be

11-1강 정리

- http://pythonkim.tistory.com/52?category=573319

Stanford

- http://aikorea.org/cs231n/convolutional-networks/

- http://cs231n.stanford.edu/index.html

CNN

- http://deeplearning.net/tutorial/lenet.html

- http://www.robots.ox.ac.uk/~vgg/practicals/cnn/

- https://www.slipp.net/wiki/pages/viewpage.action?pageId=26641520



11-2강 - Convolutional Neural Networks ConvNet Max pooling 과 Full Network

이번 강의는 듣는데 그렇게 어려움이 없다. 수학적인 부분도 산술연산정도 밖에 들어가지 않는다. 다만.. 왜 이렇게 하면 학습이 잘 되는지 그 원리가 아직 감이 안온다. 앞으로도 계속 공부를 이어가기 때문에 항상 염두해두면서 공부를 진행해야겠다.




키워드 : pooling, Layer, Fully Connected, Softmax


11-2강 - 김성훈 교수님

- https://www.youtube.com/watch?v=2-75C-yZaoA&feature=youtu.be

11-2강 정리

- http://pythonkim.tistory.com/53?category=573319


11-3강 - Convolutional Neural Networks - ConvNet의 활용예

이번 강의는 여러 논문들을 소개한다. 이제 드디어 저러한 논문들을 읽을 준비가 된것 같다. 여러 용어들 그 용어들이 어떠한 역할을 하는지를 알고 있기 때문이다. 다음 강의는 Neural Network의 꽃이라는 RNN이다.  하지만 나는 강의 듣는것을 이번 강의로 멈추었다. 언젠가 공부할 기회가 오겠지만 지금 필요한것은 이미지 학습에 관한 것이기 때문에 CNN까지만 공부를 하면 된다.



키워드 : CNN, LeNet, ResNet, AlexNet, GoogleNet, layer, filter, stride, padding


11-3강 - 김성훈 교수님

- https://www.youtube.com/watch?v=KbNbWTnlYXs&feature=youtu.be

11-3강 정리

- http://pythonkim.tistory.com/54?category=573319


마치며,

맨땅에 해딩하는 마음으로 시작하게 되었지만, 이제 제법 용어 정리도 되고 기초 지식 정도는 학습한것 같다. 8월 부터 11월 까지 공부한 내용을 대충 정리하자면

1. 김성훈 교수님 강의: 약 10회독

2. 모두의 연구소의 Chanwoo Jacob Lee 강의:  약 3~4회독

3. 밑바닥부터 시작하는 딥러닝: 약 1.5 회독

4. Standforad 대학의 Andrej Karpathy 강의: 은지 세미나로 1회독 중

 

다행히 팀 업무가 스터디라서 업무중에도 공부할 시간이 주어졌다. 업무 시간 이외에도 대략 새벽 1시까지는 공부했으니 하루 공부량은 꽤 되는거 같다.


이제부터는 공부한 내용을 그때그때 기록하는 습관이 갖추어 지길 바란다..

Posted by 이성윤