블로그 이미지
윤영식
Frontend Application Architecter, Full Stacker, KnowHow Dispenser and Bike Rider

Publication

Statistics Graph

Recent Comment

선형 대수학 강좌를 정리한다. 




Matrix vs Vector vs Scalar


Matrix = m * n = 행*렬 = row * column

Vector = m * 1 형태의 Matrix  = 크기와 방향을 가짐

Scalar = Matrix * 상수 = 크기만 가짐



Matrix Vector Multiplication (곱)


[ m * n ] [ n * 1 ] = [ m * 1 ]


가설 방정식을 이와 같이 표현할 수 있음. 예로 집값 예측 방정식을 수식으로 표현하면 4차원 벡터가 (4 dimensional vector) 나온다. 





Matrix Matrix Multiplication


matrix vector 곱의 결과를 모아 놓은 형태로 보면됨.



결과는 다음의 형태가 된다. 




각 가설을 다시 matrix matrix multiplication으로 만들면 각 가설의 결과값이 column으로 나온다.




Matrix properties (속성)


A, B가 일반 행렬이고, I 가 항등 행렬이라고 하면 


- 교환 법칙:  A * B != B * A  성립하지 않는다. 

- 행렬곱 주의: A * (B * C) = (A * B) * C

- 항등행렬: n*n 으로 행과 열이 같으면서 대각선은 1이고 나머지는 0인 행렬 (identity matrix),  A * I = I * A = A




Inverse matrix (역행렬)


Matrix을 inverse해서 역행렬하고 matrix과 곱하면 항등행렬을 얻는다. 이때 역행렬을 얻을 수 있는 것은 정방행렬(행과 열의 수가 같은 행렬)뿐이다. 



역행렬을 가질 수 없는 예로 0으로 채워진 행렬은 역행렬을 가질 수 없다. 이를 singular matrix 또는 degenerate matrix라 칭한다. 



Matrix transpose (전치행렬, transposition)


m * n 을 n * m으로 만들기





참조


- 앤드류응 교수의 선형대수학 강좌

posted by peter yun 윤영식

앤드류 응교수님의 ML 강좌를 정리한다.





Gradient Descent


hypothesis 함수를 적절한 parameter를 가지고 검증할 필요가 있다. 아래 그림과 같이 특정 파라미터 값에 따라 하강한 위치가 틀려 질 수 있다. cost 함수를 최소값을 찾는 것인데, 잘 못된 곳으로 내려가면 해당 값이 최소인것으로 오인할 수 있다. 


- 하강의 스텝(learning rate, 얼마의 보폭으로 하강하는지 정도)은 알파이다. 

- 하강의 방향(direction)-기울기-는 미분(derivative)으로 계산한다.

- starting point가 틀리면 도착한 지점이 틀리게 나왔다. 



- 수학적으로 Gradient descent algorithm을 사용한다. 

   알파: Learning rate * 미분계수

   := 대입기호, = truth assertion

   temp0, temp1을 구한다음 세타0, 세타1에 대입한다. 







미분계수를 이용한 Gradient Descent 알고리즘 이해 


함수의 tanzent값을 구함. 즉, 기울기를 구함. 


- 세타1이 최소값보다 클때 미분계수에 의한 탄젠트 기울기값은 양수이다. 

- 세타1이 최소값보다 작을때 미분계수에 의한 탄젠트 기울기값은 음수이다. 




- 알파(learning rate)에 따라 하강 step이 정해진다.

  + 알파값이 작으면 최소값을 찾는데 느리고

  + 알파값이 크면 최소값을 못 찾고 멀어진다. 




- 하강 기울기가 줄어들 때마다 세타1의 값이 점점 작아진다. 이것은 공식에서 세타1 - 알파*미분계수(기울기 slop값) 을 빼주기 때문에 가능하다. 알파값은 상수 유지 가능.

- J(세타1) 이라는 cost function 그래프에서 미분계수값이 최소가 되는 곳의 세타1의 값을 알 수 있다.

즉, 미분계수 0을 찾는게 목적이다. 


세타1 := 세타1 - 알파 * 0 







비용함수와 기울기 하강 함수를 같이 사용하기


Gradient Descent 알고리즘과 비용 함수 J(세타1, 세타2)




- 좌측 좌표가 가운데로 하강을 할 수록 기울기가 점점 변경된다. 선형 회귀는 항시 하나의 최적값을 갖는 밥그릇의 Convex(볼록) 모양을 갖는다. 




결론 Cost function j의 해답을 얻기 위해 하강 기울기 알고리즘을 사용한다. 






Gradient Descent for Linear Regression


선형 회귀의 경우 새로운 형태의 Gradient Descent방정식이 도출된다. 

 - m: training set 사이즈

 - 세타0: 초기시작값 - 상수

 - 세타1: 기울기값 - 변경값 

 - xi, yi: training data set



Gradient Descent 식에 J(세타)즉 cost founction을 넣어서 식을 간략히 하면 다음과 같이된다. 





참조


posted by peter yun 윤영식

앤드류응 교수님의 코세라 강좌를 정리한다. 





Supervised Learning


지도학습과 자율학습에 대한 개념이해 


지도학습

- 정답을 주고 학습

- regression과 classification이 있음

- regression: 여러 개 중 하나 

- classification: 0 또는 1

In supervised learning, we are given a data set and already know what our correct output should look like, having the idea that there is a relationship between the input and the output.


Supervised learning problems are categorized into "regression" and "classification" problems. In a regression problem, we are trying to predict results within a continuous output, meaning that we are trying to map input variables to some continuous function. In a classification problem, we are instead trying to predict results in a discrete output. In other words, we are trying to map input variables into discrete categories.


Example 1:


Given data about the size of houses on the real estate market, try to predict their price. Price as a function of size is a continuous output, so this is a regression problem.


We could turn this example into a classification problem by instead making our output about whether the house "sells for more or less than the asking price." Here we are classifying the houses based on price into two discrete categories.


Example 2:


(a) Regression - Given a picture of a person, we have to predict their age on the basis of the given picture


(b) Classification - Given a patient with a tumor, we have to predict whether the tumor is malignant or benign.


예) Housing Prices 예측 - regression 문제



linear regression


training set을 통해 학습 알고리즘을(learning algorith) 적용해서 가설식(hypothesis)을 만든다. 



cost function

- 가설의 정확도를 측정하기 위해 사용한다

- 공식: 가설의 결과값 - 실제값의 제곱의 합 

- 점진적 감소 (gradient descent)를 위해 1/2를 사용한다. 

- 정확도 측정 J 함수를 얻음.




 세타0을 값 zero로 놓고 간략히 표현한 수식

-  x 값을 줄 때 시작점 세타0과 기울기 세타1의 상수 값을 찾아야 한다. 

- 비용함수인 J(세타0, 세타1)에서 세타0 을 zero로 놓으면 시작점이 zero부터 시작해서 비용함수 J(세타1)을 구하는 것이다. 





- J 공식 결과가 0 이면 가장 작은 비용을 들인 경우이다. 이때 J(세타1)에서 세타1의 값이 1일 때 비용이 전부 0으로 나온다. 



- 만일 세타1값이 0.5라면 cost function 처리 값은 다음과 같이 0.58이 나온다. 



- 음수의 영역을 이동하면 cost function 은 가설값 - 실제값의 제곱의 합이므로 다음과 같이 등고선 그래프가 나온다. 





등고선 그래프로 세타0, 세타1 눈으로 확인하기 


등고선을 입체적으로 보면 다음과 같다. 

- 수평선은 세타1, 세타0 이다.

- 수직선은 cost function의 결과값 J(세타0, 세타1) 이다.

세타1=기울기, 세타0은 시작점



이것을 다시 평면으로 H(x) 와 비교하기위해 평면 등고선을 가지고 눈으로 세타0, 세타1의 값을 가지고 가설의 선을 검증할 수 있다. 

예1) 같은 등고선에 있는 3개의 x는 값은 높이 값, 즉 비용함수 결과값을 갖는다. 이것을 h(x)상에 세타0, 세타1을 이용해 그리면 다음과 같이 나온다. 

데이터셋과 h(x) 선의 거리가 전혀 맞아 들어가지 않아 가설 선이 맞지 않음을 알 수 있다. 


예2) 좀 더 중심으로 이동한 빨간색 x는 등고선에서 세타0=360, 세타1=0 값을 가즌다. 이를 세타1=기울기, 세타0은 시작점으로 보면 h(x)는 수평선이 나온다. 이동 실 데이터의 거리값이 작지 않음을 보여준다.



중심으로 이동할 때 다음과 같이 최적의 가설 세타0과 세타1을 얻을 수 있다. 

세타0 = 250

세타1 = 0.12







Unsupervised

자율학습

- 확인된 답을 제공하지 않음 

   예) 고객이 어디 고객군에 속하는지 알 수 없다. 천문학등

- clustringr과 non-clustering 

Unsupervised learning allows us to approach problems with little or no idea what our results should look like. We can derive structure from data where we don't necessarily know the effect of the variables.


We can derive this structure by clustering the data based on relationships among the variables in the data.


With unsupervised learning there is no feedback based on the prediction results.


Example:


Clustering: Take a collection of 1,000,000 different genes, and find a way to automatically group these genes into groups that are somehow similar or related by different variables, such as lifespan, location, roles, and so on.


Non-clustering: The "Cocktail Party Algorithm", allows you to find structure in a chaotic environment. (i.e. identifying individual voices and music from a mesh of sounds at a cocktail party).





참고


- 앤드류 응교수님의 머신러닝 강좌

- 회귀 분석 예제

- 선형 회귀 분석 데이터 이해



posted by peter yun 윤영식
2018.07.13 16:10 Deep Learning/NN by Sung Kim

Q Network 강좌를 정리한다. 





Q Network 개념


실제 문제를 풀어가기에는 Q Table 구성 사이즈가 너무나 크다. 따라서 Network을 구성해서 푼다. 주어진 입력, 출력을 사용자가 조절하면서 State, Action주어 원하는 Output을 얻어낸다. 적은 table을 사용해서 원하는 결과를 얻어내는 것 



Gym Game에서 출력을 Action 4개로 보면 다음과 같다. 


상태만 주고 모든 가능한 액션을 얻어내자. 앞으로 아래 모델을 사용한다. 



 

비용에 대한 최소화를 공식화 하면 

- W: Weight, 

- y: 실제값

- cost: 비용




목표는 Optimal Q인 Q* 즉, y값을 구한다. Ws는 네트워크가 만들어낸 Q prediction이라 할 수 있다.  




Q hat을 붙이면 hat이 prediction을 의미한다. "시타 = 세타"를 weight 이다. 




이 알고리즘을 문장으로 풀어쓰면

- 초기 weight을 random하게 준다.

- 첫번째 상태를 준다. @(s) == 파이(에스) - one hot을 해준다.

- E-greedy를 사용해 가장 좋은 action을 취한다.

- 결과로 상태랑 reward를 준다.

- 학습을 한다. 


해당 알고리즘은 deep mind의 핵심 알고리즘이다. 코드화 하면



다음으로 학습을 시킨다. 



Yj값으 두개인데, Done이면 Rj이고, 중간 진행은 Rj + rmaxxQ(@=1,a:세타)이다. 

Q Network의 결과는 Q Table 보다 성능이 안좋다. 이를 좀 더 빠르게 할려면?

diverge(다이버즈): 분산되어 결과가 안 좋다의 뜻






DQN 개념 


강화학습의 가장 중요한 알고리즘이다. (강좌) 두가지 큰 문제는 2가지 이다. 



  - 샘플데이터간의 correlation: 샘플이 다양하지 않고 연관성(correlation)이 있다.   

  


  - target이 흔들린다. target은 Y Label 이다. 예) 화살을 쏘자 과녁이 움직이는 경우




DQN의 3가지 솔루션


1) Go deep

네트워크가 깊게 갈 수록 좋다. 


2) Experience replay

action의 state를 buffer에 저장한후 사용한다. D = buffer

 


buffer에서 random하게 가져오면 sample의 correlation을 해결할 수 있다. 



3) non-stationary targets 

타겟이 움직인다. 세타 Weight을 update하면 target도 움직인다. Target의 세타를 그대로 둔다. 두개의 Network에서 첫번째 Network에서 target을 가져와서 두번째 Network에서 사용한다. 




2015년 Deep Mind가 Nature에 연재한 논문 알고리즘






참조


- 김성훈 교수님의 Q Network 강좌

- 김성훈 교수님의 DQN 강좌

'Deep Learning > NN by Sung Kim' 카테고리의 다른 글

[Reinforcement Learning] Q Network  (0) 2018.07.13
[Reinforcement Learning] 강화학습  (0) 2018.07.12
[RNN] Basic & Training 하기  (0) 2018.07.11
[RNN] Recurrent Neural Network 개념  (0) 2018.07.11
[CNN] Class, tf.layers, Ensemble  (0) 2018.07.11
[CNN] MNIST 99% 도전  (0) 2018.07.11
posted by peter yun 윤영식
2018.07.12 16:36 Deep Learning/NN by Sung Kim

강화학습 강좌를 정리한다.





RL 개념


환경(세상, Environment)에서 행동하는 액터(Actor)는 환경속에서의 상태가 변경됨. 매순간마다 잘했다 못했다는 보상(Reward)을 줌.

- 1997년 Tom Mitchell 나온 이야기이다. 

- 2013, 2015년에 부활함: 벽돌깨기 게임에서 사용




옛날 게임에 적용해서 학습해 보니 reinforcement learning이 사람보다 더 잘하더라~~~. 알파고가 deep-reinforcement-learning 사용한다. 

- 빌딩 에너지 관리

- 로보틱스

- 투자

- E-commerce 추천

- 광고 ads


Q = r + Q 수학 기본을 사용한다. Tensorflow/Python으로 실습가능 






OpenAI GYM Games


Agent가 움직이고, 상태와 보상을 받는다. gym 환경을 별도 제공한다. 




gym 코드






Q Learning


RL의 핵심이다. 

입력

  - 내가 있는 상태

  - 이런 행동을 할려고 합니다.

    Q(s, a) => s-state, a-action

출력

  - Q가 결과를 내줌




Optimal Policy = 파이*별표

Q가 있다고 가정했지만 Q를 어떻게 학습할 것인가가 중요 사항임.



==> r + maxQ(s1, a1)

r: reward

max: argmax

Q

s: state

a: action




Q값이 학습을 통해서 다음과 같이 생긴다. 



전체 Q 알고리즘 정리하면

- 그림처럼 Q(s,a) 테이블을 만들고 0으로 초기화 한다.

   

- state s 상태를 가져온다. 

- 끝날때까지 무한 반복하면서 action을 취하고 reward를 받으면서 S -> S1(prime)으로 이동한다. 

- Q 학습이 진행된다. 



r: 현재의 reward 값

maxQ(s1,a1): 다음에 얻을 수 있는 최고의 reward 값



Tensorflow 구현 코드 


-  Q table초기화: np.zeros

- env.reset() 현재의 상태값

- while not done 돌며 끝날때 까지 Q Learning(학습) 수행






Exploit vs Exploration


Exploit: 현재 있는 값을 이용한다.

Exploration: 모헙을 해본다.

예) 평일에는 가던곳을 하고 주말에는 안가보던 곳을 모험해 본다. 



E-greedy: exploration의 정도

Discounted future reward: 감마(0.9) 를 곱하여 미래의 reward를 줄여서 계산한다. 


Tensorflow code







참조


- 김성훈교수님의 강화학습 강좌

- 김성훈교수님의 Q Learning 강좌

- OpenAI GYM 설명

- 강화학습 이해하기

'Deep Learning > NN by Sung Kim' 카테고리의 다른 글

[Reinforcement Learning] Q Network  (0) 2018.07.13
[Reinforcement Learning] 강화학습  (0) 2018.07.12
[RNN] Basic & Training 하기  (0) 2018.07.11
[RNN] Recurrent Neural Network 개념  (0) 2018.07.11
[CNN] Class, tf.layers, Ensemble  (0) 2018.07.11
[CNN] MNIST 99% 도전  (0) 2018.07.11
posted by peter yun 윤영식