본문 바로가기

[IT/Programming]/Algorithm/Database

기계 학습 (Machine Learning - Deep Learning)

반응형
m.logPrint() is working!

<eq> and <eqq> tags are rendered to MathJax format, being enclosed by \ ( \ ) and \ [ \ ].

docuK-1 scripts started!
If this log is not closed automatically, there must be an error somewhere in your document or scripts.

Table of Contents is filled out.

Auto numberings of sections (div.sec>h2, div.subsec>h3, div.subsubsec>h4), <eqq> tags, and <figure> tags are done.

<cite> and <refer> tags are rendered to show bubble reference.

<codeprint> tags are printed to corresponding <pre> tags, only when the tags exist in the document.


Current styles (dark/bright mode, font-family, font-size, line-height) are shown.

disqus.js with id="disqus-js" is loaded.

kakao.js with id="kakao-jssdk" is loaded.

New ShortKeys (T: Table of Contents, F: Forward Section, D: Previous Section, L: To 전체목록/[Lists]) are set.

m.delayPad=0;
m.wait=512;
wait 388ms.
Doing delayed-load. : 1
▼ Hide
Toggle a mess
Go (FS)
TofC
DocuK Log
Backward
Forward
RRA
Lists
CmtZ
CmtX
Handle CmtZ
Log in
out focus
Mode: Bright; Font: Noto Sans KR; font-size: 18.0px (10.0); line-height: 1.6;
width: 1280, height: 720, version: 2.12.18
Canonical URI: https://kipid.tistory.com/entry/Machine-Learning
dg:plink (Document Global Permanent Link): https://kipid.tistory.com/67
document.referrer: Empty
This document is rendered by docuK (See also SEE (Super Easy Edit) of docuK and pure SEE).

기계 학습 (Machine Learning - Deep Learning)

공부 및 정리 중. 우선 ref 들만 정리식으로.
"Machine learning is the science of getting computers to act without being explicitly programmed."
[04]
Ref. [04] Coursera - Machine Learning (Stanford), 2014-03, by Andrew Ng
// 위 유투브 강의하신 분이랑 같은 사람인데, coursera에서도 강의가 있는듯. 이 쪽 강의가 온라인에서 듣기 더 잘되어 있는 듯 하네요. 더 최근 강의이기도 하고. Coursera에 가입하고 수강을 해야하긴 하지만... (지금 수강은 무료인듯.) 관심 있으신 분들은 청강해 보시길.
라고 하는데... not explicitly programmed 가 어떤 의미인지 천천히 살펴봅시다.
어차피 프로그래밍 된 대로만 돌아갈텐데 explicitly 가 뭔 차이인지는... 아마도 데이터를 쌓으면서 학습 (learning) 을 하고 그 학습 데이터를 바탕으로 돌아가는 알고리즘을 말하는듯? 즉, 학습하는 알고리즘 (Machine이니 학습한다기 보단 데이터를 분석해서 저장한다는 개념, 데이터가 더 쌓이고 바뀌면 꾸준히 update가 일어나는) 이 있고 이 학습으로부터 일을 해내는 알고리즘이 있을듯.
예를 드는것이 이해가 편할텐데, "수신한 이메일이 스팸인지 아닌지를 구분"하는 알고리즘을 생각하면 좋을듯. 기계 학습 (Machine Learning) 이 없는 알고리즘이라면 그저 스팸이 될만한 단어나 이상한 링크, 파일들이 있을때 스팸 처리하는 것이겠지만, 이런 방법만으로는 교묘하게 위장하여 보내는 스팸들은 처리할수가 없기에 사용자가 읽고 스팸처리하는 것들과 스팸통에 있는 메일 중 스팸해제하는 것들을 저장해놓고 분석해서 배우고 이후의 스팸처리에 활용하는 알고리즘을 기계 학습 (Machine Learning) 알고리즘이라고 이해하면 될듯.
뭐 각 회사마다 다양하게 스팸처리 알고리즘을 만들었겠지만, 대충 몇가지 가능한 시나리오들을 추측해 보자면.
  1. 다수의 사용자들이 스팸처리한 메일계정이라면, 이 계정에서 보낸 메일들은 스팸일 가능성이 클 것이다. 메일 계정별로 얼마나 많은 메일들이 스팸처리 당했는지 저장해놔서 많은 메일들이 스팸처리 당했다면 이후부터 계속 이 계정에서 보내는 메일들은 자동으로 스팸처리 한다.
  2. 위와 같은 이유로 스팸을 보내는 쪽에서 다수 계정을 이용해서 스팸을 뿌리는 경우도 많음. 이 때는 사용자들이 스팸처리한 이메일들 내용을 분석해서 많이 사용된 단어들을 분석한다던지 하는 방식으로 스팸여부를 결정하는 기계 학습 (Machine Learning) 알고리즘이 가능할듯.
  3. 사용자마다 스팸이라 느끼는 메일이 다를수도 있기에 "개인화 된 스팸처리"도 기계 학습 (Machine Learning) 알고리즘으로 가능할듯. 이 땐 한 사람만의 데이터로는 적어서 비슷한 사용자를 찾아내는 알고리즘도 필요할듯한.
뭐 이 외에도 여러가지가 있겠지만, 스팸을 보내는 쪽에서도 이런 알고리즘을 분석해서 자동으로 스팸에 안걸리게 메일을 보낼테니 머리를 잘 써야함.
이 외에도 "문자 인식 (필기 인식 : Optical Character Recognition)", "음성 인식", "사진/동영상 인식 및 분석 (Computer Vision : 여기서 더 확장되면 자율주행 자동차 같은것들로 발전됨)", "개인화 된 추천 (Personalized recommendation)", "증시 분석/거래", "빠른 길 찾기", "의학 분석", "번역 (Machine translation)", "문장 인식 및 질문에 대한 대답" 등 활용 가능한 분야가 무궁무진해 보임. (기계가 정보를 빼내고 분석하고 활용할 뿐이지만, 개인정보 침해, 사생활 침해 등은 주의해야 할듯.)
아무튼 이러한 강력한 알고리즘 (문제해결 방법론) 에 대해 알아봅시다.

TPH.Posting History

▼ Show/Hide

T1.Overview : Type or Classification

▼ Show/Hide

T1.1.What is Machine Learning?

따로 설명글을 독창적으로 작성하기는 귀찮고, 잘 정리된 글들 많으니 등을 참조하시길. 아래는
[04]
Ref. [04] Coursera - Machine Learning (Stanford), 2014-03, by Andrew Ng
// 위 유투브 강의하신 분이랑 같은 사람인데, coursera에서도 강의가 있는듯. 이 쪽 강의가 온라인에서 듣기 더 잘되어 있는 듯 하네요. 더 최근 강의이기도 하고. Coursera에 가입하고 수강을 해야하긴 하지만... (지금 수강은 무료인듯.) 관심 있으신 분들은 청강해 보시길.
Introduction - What is Machine Learning? 에서 일부를 긁어온것. 전 여기 설명이 잘되어 있다고 느끼니 링크 가셔서 전체 text 를 읽어보시는걸 추천드림.
Two definitions of Machine Learning are offered. Arthur Samuel described it as: "the field of study that gives computers the ability to learn without being explicitly programmed." This is an older, informal definition.
Tom Mitchell provides a more modern definition: "A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, improves with experience E."
아래쪽 문장을 간단히 해석해 보자면, "어떠한 임무 (T) 를 수행하는 프로그램의 성능 (P) 이 경험 (E) 과 함께 향상될때, 우리는 이 프로그램이 경험 (E) 으로부터 배운다고 이야기한다.". 즉 이것저것 데이터들/경험들을 프로그램에 잘 먹여서, 프로그램 성능을 향상시키는 것을 프로그램을 가르치는거다라고 이야기 할 수도 있다. (기계 입장에서는 배우는거, 우리 입장에서는 가르치는거)
여기서 말하는 가르친다는건 coding 을 한다는거랑은 다른 의미. (Machine learning code 는 사람이 직접 짜긴 해야지.) 이 이야기를 첫번째 문장이 한거라 볼 수 있음. Not explicitly coded/programmed.

T1.2.By learning type

Machine learning 은 learning type 에 따라 크게 supervised 와 unsupervised learning 으로 나눌수 있다고 한다.
예전에 쓴 글인데, 오개념 같음. :: 크게 supervised 와 unsupervised learning 으로 나눌수 있다고는 하는데, 내 개인적인 의견으로 모든 learning 은 supervised learning 일수밖에 없음. Unsupervised 로 무언가 해냈다고 할지라도 feedback 을 받아야 제대로 해냈는지 아닌지 판단이 될테니... 뭐 그런 의미로 supervised 와 unsupervised 란 이름을 붙인건 아니고, 한단계 낮은 단계에서 supervised 인지 unsupervised 인지에 따른 분류이긴 함. 헷갈릴 수 있는 개념 및 naming 같아서 우선 짚고 넘어감.
생각해보면 사람 + 어떤 지적 생명체든지간에 learning 의 과정은 다른것들과의 interaction 을 통해서 이루어지기 마련임. 혼자서 자율적으로 지식을 쌓을수는 있겠지만, 반드시 다른 지적 생명체와의 소통/feedback 을 통해서 "검증"을 받아야만 제대로 배웠는지 아닌지를 판단할 수 있을테니. 다르게 말하자면, 뭐 혼자서도 (독립적으로) 많은걸 해낼수 있고 결과에 대한 자기확신이 갈수는 있을텐데, 이걸 남들에게 팔아먹으려면/인정받으려면 interaction 이 있어야 한다는 뜻.
Supervision 이 감독/감시/지휘의 의미에서 확장해서 검증/검수 등의 의미도 가진다고 단어를 해석할 여지도 있기에... 여기선 제한된 의미에서의 supervision 으로서 분류 naming 에 쓰인 것.

T1.2.1.Supervised learning

The computer is presented with example inputs and their desired outputs, given by a "teacher", and the goal is to learn a general rule that maps inputs to outputs .
어떤 code 인지간에 input 이 들어왔을때 특정 output 을 내놓은 function 이라고 바라볼 수 있다. 이러한 input 이 들어왔을땐 이러한 output (desired output) 이 나오도록 하는 code 를 찾고 싶다고 했을때, "teaching data" 로서 {input, output} set 를 우선 준비해놓고 machine 을 가르치는 것을 "Supervised learning" (기계 입장에서는 배우는 거니까) 이라 한다.
"Teaching data" (Training Data) 에 없는 input 에 대해서도 적절한 output 을 내도록 만드는게 목표다.
대표적인 예로는 "문자 인식 (필기 인식 : Optical Character Recognition)", "음성 인식 (Voice recognition)", "사진/동영상 인식 및 분석 (Computer Vision : 여기서 더 확장되면 자율주행 자동차 같은것들로 발전됨)", "기계번역 (Machine translation)", "이메일 스팸처리" 등이 있겠다.

T1.2.2.Unsupervised learning

No labels are given to the learning algorithm, leaving it on its own to find structure in its input. Unsupervised learning can be a goal in itself (discovering hidden patterns in data) or a means towards an end .
"Teaching data" (Training data) set 없이 스스로 깨우치도록 만드는 것을 "Unsupervised learning" 이라고 말한다. 스스로 깨우치도록 만든다는게 좀 교묘한 말이긴 한데, 아무튼 당장은 대충 "Supervised learning" 과는 다른 형태/방식으로도 기계가 learning 할수 있고, 그런 방식을 "Unsupervised learning" 이라고 부르는구나 정도만 알아두자. (예제도 이것저것 보고, 실제로 다뤄봐야만 제대로 이해가 갈테니.)
"Unsupervised learning" 의 가장 간단한 예로 clustering algorithm 이 있다. 예를 들자면, 뉴스 기사들을 자동으로 카테고리화 (categorize) 한다고 했을때, 기사에 등장하는 단어들로 기사 A 와 기사 B 가 비슷한 category 에 있는 놈인지 완전히 다른 category 에 해당하는 기사인지 판단하는 식이다. 점점 데이터가 쌓이면서 clustering 하다보면 특정 기사들이 한군데로 묶일텐데 이렇게 묶인 카테고리에 naming 을 하는건 사람이 supervise 할지라도, 묶는 과정 자체는 알고리즘만 잘 만든다면 unsupervised 도 된다.
또다른 예로는 DNA clustering, dimensionality reduction, recommender systems, deep learning 등이 있다고 한다. (이것들이 왜 unsupervised 인지는 아직은 잘 모르겠다. 차차 이런것들에 대해 배우다보면 왜인지 알게 되겄지?)

T1.2.3.Reinforcement learning

강화 학습도 있다는데... 이건 뭘까나?

T1.3.By deepness

Learning 의 복잡도(?)에 따라서도 아래와같이 구분하는거 같기도 하다. (별 중요한 이야기 아닌거 같으니 패스. 아마도 Deep learning 을 강조하기/돋보이게하기 위해 도입된 개념인듯도.)

T1.3.1.Shallow learning (e.g. SVM : Support Vector Machine)

T1.3.2.Deep learning (e.g. DNN : Deep Neural Network)

▲ Hide

T2.Model and Cost function

▼ Show/Hide
m개의 training set 을 가지고 있다면, 다음과 같은 cost function (squared error cost function) 을 생각해볼 수 있다.
(2-1)
\[ J(\theta) = \frac{1}{2m} \sum_{i=1}^{m} \Big( h_{\theta}(x^{(i)}) - y^{(i)} \Big)^2 \]
Hypothesis function $h_{\theta}$ 을 적절히 선택해서 parameter set $\theta$ 를 바꿔가면서 cost function 을 최소화해낸다면, 이 hypothesis function 이 다른 input $x$ 에 대해서도 적절한 output $y$ 를 유추해낸다고 볼 수 있다.
(2-2)
\[ \underset{\theta}{\min} J(\theta) \]
라그랑지 승수법
[08]
Ref. [08] Method of Lagrange multipliers (English), 2014-03-21; and 최적화, 라그랑지 승수법 (Optimization with the Method of Lagrange multipliers), 2014-03-18;
// 앞쪽의 영어버전이 더 자세히 작성되어 있음. 많은 Machine Learning 알고리즘들이 최적화와 관계가 깊음.
을 이용하면, ($\theta$에 제약조건이 안걸려 있어서 굳이 라그랑지 승수법까지는 필요없긴 하지만...)
(2-3)
\[ \frac{\partial J (\theta)}{\partial \theta_k} = 0 \]
만으로 exact 하게 min $J$ set $\theta$ 를 구할수도 있다. 하지만 대부분의 경우 저 식만으로 exact 하게 구하기가 어렵기 때문에 gradient descent 같은 방법으로 수치적으로 찾아가게 된다.
아무튼 여기서 가장 중요한 것은 hypothesis function $h_{\theta}$ 과 parameter set $\theta$ 을 어떻게 잘 design 하느냐이다. 이걸 엉망으로하면 기계가 아무리 많은 training set 으로 learning 을 해도 결과가 엉망이 된다.

T2.1.Gradient descent

(2-4)
\[ \frac{d \theta_k}{d \tau} = - \alpha(\tau) \frac{\partial J (\theta)}{\partial \theta_k} \]
Descretized version 으로 바꾸면, repeat until convergence:
(2-5)
\[ \theta_k := \theta_k - \alpha \frac{\partial J (\theta)}{\partial \theta_k} \]
$J (\theta)$ 가 square error cost function 일 때,
(2-6)
\[ \frac{\partial J (\theta)}{\partial \theta_k} = \frac{1}{m} \sum_{i=1}^{m} \Big( h_{\theta} (x^{(i)}) - y^{(i)} \Big) \frac{\partial h_{\theta} (x^{(i)})}{\partial \theta_k} \]

T2.2.Normal equation

(2-7)
\[ \frac{\partial J (\theta)}{\partial \theta_k} = 0 \]
을 가지고 exact 하게 푼다고 했을때, 추가로 $h_{\theta}(x)$ = $\theta_0$ + $\theta_1 x_1$ + $\theta_2 x_2$ + $\cdots$ + $\theta_n x_n$ 형태로 linear 하게 나온다고 했을때 위 식은 다음과 같이 표현될 수 있다.
(2-8)
\[ X^{T} [X \theta - y] = 0 \]
where $X_{ij} = x_{j}^{(i)}$. 즉, m by (n+1) matrix. (Let $x_0=1$.)
즉 이것을 $\theta$ 에 대해 풀면,
(2-9)
\[ \theta = (X^{T} X)^{-1} X^{T} y \]
와 같은 normal equation 을 얻을 수 있다. Matrix 의 inverse 를 구해야 하기 떄문에 $O(n^3)$ operation 이 필요하단다. (왜지?)

T2.3.Classification : Logistic Regression Model

Classification 같은 경우 y 값이 0 혹은 1 로 나오는 경우가 많으므로 hypothesis function 을 다음과 같은 형태로 놓고 볼 수 있다.
(2-10)
\[ h_\theta (x) = \frac{1}{1+e^{-f_\theta(x)}} \]
이때 cost function 은 square error cost function 을 쓸수도 있겠지만, 다음과 같이 logistic error function 으로 대체하는 것이 더 좋다고 한다.
(2-11)
\[ \mathrm{Cost}(h_\theta(x),y) = - y \; \log(h_\theta(x)) - (1 - y) \log(1 - h_\theta(x)) \]
이 때 y 값은 항상 0 또는 1 값만을 갖는다. y 가 0 과 1 사이의 값을 가질 수 있다고 할때는 다음과 같은 cost function 을 고려해야 할지도 모른다.
(2-12)
\[ \mathrm{Cost}(h_\theta(x),y) = - \log(1 - | h_\theta(x) - y |) \]
즉 training set 에 y 값이 어떻게 들어가 있는지를 잘 보고 cost function 을 정해야 한다.
m 개의 training set (y=0 or 1) 에 대해 summation 하면,
(2-13)
\[ J(\theta) = \frac{1}{m} \sum_{i=1}^{m} \Big[ - y^{(i)} \; \log(h_\theta(x^{(i)})) - (1 - y^{(i)}) \log(1 - h_\theta(x^{(i)})) \Big] \]
이 때
(2-14)
\[ \begin{align*} \frac{J(\theta)}{\partial \theta_k} &= \frac{1}{m} \sum_{i=1}^{m} \Big[ - \frac{y^{(i)}}{h_\theta(x^{(i)})} + \frac{1 - y^{(i)}}{1 - h_\theta(x^{(i)})} \Big] \frac{\partial h_\theta(x^{(i)})}{\partial \theta_k} \\ &= \frac{1}{m} \sum_{i=1}^{m} \Big[ \frac{h_\theta(x^{(i)}) - y^{(i)}}{h_\theta(x^{(i)})(1-h_\theta(x^{(i)}))} \Big] \frac{\partial h_\theta(x^{(i)})}{\partial \theta_k} \end{align*} \]
여기서
(2-15)
\[ \begin{align*} \frac{\partial h_\theta(x)}{\partial \theta_k} &= \frac{e^{-f_\theta(x)}}{(1+e^{-f_\theta(x)})^2} \frac{\partial f_\theta(x)}{\partial \theta_k} \\ &= h_\theta(x) (1-h_\theta(x)) \frac{\partial f_\theta(x)}{\partial \theta_k} \end{align*} \]
이므로
(2-16)
\[ \frac{J(\theta)}{\partial \theta_k} = \frac{1}{m} \sum_{i=1}^{m} \Big( h_\theta(x^{(i)}) - y^{(i)} \Big) \frac{\partial f_\theta(x^{(i)})}{\partial \theta_k} \]
와 같이 간단한 형태로
(2-6)
(2-6)
\[ \frac{\partial J (\theta)}{\partial \theta_k} = \frac{1}{m} \sum_{i=1}^{m} \Big( h_{\theta} (x^{(i)}) - y^{(i)} \Big) \frac{\partial h_{\theta} (x^{(i)})}{\partial \theta_k} \]
비슷하게 나오게 된다. Logistic error cost function 으로 쓴 보람이 있다.
Training data 에서 y 값이 0 과 1 사이의값을 가진다고 했을때 ($0 \leq y \leq 1$), cost function 을
(2-11)
(2-11)
\[ \mathrm{Cost}(h_\theta(x),y) = - y \; \log(h_\theta(x)) - (1 - y) \log(1 - h_\theta(x)) \]
(2-12)
(2-12)
\[ \mathrm{Cost}(h_\theta(x),y) = - \log(1 - | h_\theta(x) - y |) \]
중 무엇을 써야 할까? 그냥
(2-11)
(2-11)
\[ \mathrm{Cost}(h_\theta(x),y) = - y \; \log(h_\theta(x)) - (1 - y) \log(1 - h_\theta(x)) \]
을 똑같이 써도 상관 없을까? 우선 y 가 0 과 1 이 아닐때
(2-11)
(2-11)
\[ \mathrm{Cost}(h_\theta(x),y) = - y \; \log(h_\theta(x)) - (1 - y) \log(1 - h_\theta(x)) \]
가 어떻게 그려질지 알아보자.
Fig. (2-1): $\mathrm{Cost}(h_\theta(x),y) = - y \; \log(h_\theta(x)) - (1 - y) \log(1 - h_\theta(x))$
y 값이 $0<y<1$ 로 정해져 있을때 cost function 을 minimum 으로 만드는 $h_\theta(x)$ 값은?
(2-17)
\[ \frac{\partial \mathrm{Cost}(h_\theta(x),y)}{\partial h_\theta(x)} = - y \frac{1}{h_\theta(x)} + (1 - y) \frac{1}{1 - h_\theta(x)} = 0 \]
인 지점들과 boundary (h=0,1) 의 cost function 값들을 비교해 봐야한다. 미분값이 0 인 지점은 $h=y$ 인 지점임을 알 수 있고 이 때의 cost function 값은
(2-18)
\[ \mathrm{Cost}(h_\theta(x)=y,y) = - y \log(y) - (1 - y) \log(1 - y) \]
이고, h=0 인 지점에서의 cost function 값은
(2-19)
\[ \mathrm{Cost}(h_\theta(x)=0,y) = - y \log(+0) - (1 - y) \log(1 - 0) = \infty \]
, h=1 인 지점에서의 cost function 값은
(2-20)
\[ \mathrm{Cost}(h_\theta(x)=1,y) = - y \log(1) - (1 - y) \log(1 - 1) = \infty \]
임을 알 수 있다. 따라서 $h=y$ 일 때 minimum 값 $−y\log(y)−(1−y)\log(1−y)$ 를 가짐을 알 수 있다. 이 함수는 0 과 1 에서 기울기가 $\infty$ 인 함수이다. $h=y$ 일 때에도 cost function 이 0 이 나오지는 않지만, minimum 값은 나오므로 써도 될거 같기도 하다.
조금 꼼꼼히 따져보자면, $0<y<1$ 일때 h가 0 혹은 1 을 예측하면 cost function 이 $\infty$ 로 발산 (diverge) 하는것을 알수 있는데 이건 문제가 없을까?
예를 들자면, y 가 0.01 로 주어졌을때에도 h 가 0 을 예측하면 cost 가 발산한다는 이야기다. 영 좋아보이지 않는다.
다른 대안으로
(2-12)
(2-12)
\[ \mathrm{Cost}(h_\theta(x),y) = - \log(1 - | h_\theta(x) - y |) \]
을 쓰는게 좋지 않을까? 아니면 미분이 쉽도록
(2-21)
\[ \mathrm{Cost}(h_\theta(x),y) = - \log(1 - (h_\theta(x) - y)^2) \]
를 쓰는것이 좋아보인다. m 개의 training set 에 대해 summation 하면,
(2-22)
\[ J(\theta) = \frac{1}{m} \sum_{i=1}^{m} \Big[ - \log( 1 - \big( h_\theta(x^{(i)}) - y^{(i)} \big)^2 ) \Big] \]
따라서
(2-23)
\[ \begin{align*} \frac{J(\theta)}{\partial \theta_k} &= \frac{1}{m} \sum_{i=1}^{m} \Big[ \frac{2 \big( h_\theta(x^{(i)}) - y^{(i)} \big)}{1 - \big( h_\theta(x^{(i)}) - y^{(i)} \big)^2} \Big] \frac{\partial h_\theta(x^{(i)})}{\partial \theta_k} \end{align*} \]
여기서
(2-15)
(2-15)
\[ \begin{align*} \frac{\partial h_\theta(x)}{\partial \theta_k} &= \frac{e^{-f_\theta(x)}}{(1+e^{-f_\theta(x)})^2} \frac{\partial f_\theta(x)}{\partial \theta_k} \\ &= h_\theta(x) (1-h_\theta(x)) \frac{\partial f_\theta(x)}{\partial \theta_k} \end{align*} \]
를 대입하면,
(2-24)
\[ \begin{align*} \frac{J(\theta)}{\partial \theta_k} &= \frac{1}{m} \sum_{i=1}^{m} \Big[ \frac{2 \big( h_\theta(x^{(i)}) - y^{(i)} \big)}{1 - \big( h_\theta(x^{(i)}) - y^{(i)} \big)^2} \Big] h_\theta(x) (1-h_\theta(x)) \frac{\partial f_\theta(x^{(i)})}{\partial \theta_k} \end{align*} \]
이전 결과
(2-16)
(2-16)
\[ \frac{J(\theta)}{\partial \theta_k} = \frac{1}{m} \sum_{i=1}^{m} \Big( h_\theta(x^{(i)}) - y^{(i)} \Big) \frac{\partial f_\theta(x^{(i)})}{\partial \theta_k} \]
보다는 복잡하게 나왔지만, 식 모양이 복잡하다고 나쁜 알고리즘이란건 아니니까 잘 판단해서 사용하자.

T2.4.Neural Networks

인간의 뇌를 모방한 것이라고 하는데, 실제로 뇌도 이런식을 동작하는지는 잘 모르곘음. 아무튼 여러개의 layer 를 두고 logistic regresssion 을 하는것을 neural network 라고 하는듯.
우선 $x_1$, $x_2$, $x_3$, ... 같은 input 이 들어오고, $h_1 (\Theta, x)$, $h_2 (\Theta, x)$, $h_3 (\Theta, x)$, ... 같은 output 이 나온다고 할때, 중간 layer 들에는 $a_{1}^{(l)}$, $a_{2}^{(l)}$, $a_{3}^{(l)}$, $a_{4}^{(l)}$, ... 등이 있다고 하자.
$x_k$ 을 $a_k^{(1)}$ 으로 표기하고, $h_k$ 를 $a_k^{(L)}$ 이라고 표현하자. (Systematic 하게. L개의 layer 가 있는 셈이다.)
(2-25)
\[ a_{k}^{(n+1)} = g ( \sum_{i} \Theta_{ki}^{(n)} a_{i}^{(n)} ) \]
where
(2-26)
\[ g(z) = \frac{1}{1+e^{-z}} \]
또한 여기서 $a_{k}^{(1)}$ 들, 즉 input, 만이 자유로운 값을 갖고 나머지 $a_{k}^{(n)}$ 들 (n>1) 은 함수 $g(z)$ 에 의해 0 에서 1 사이의 값만을 갖는다. (input 값들도 0~1 사이 값만 갖도록 normalize 시켜주는게 좋을거 같긴 하다. 그래야 $\Theta$ 들 사이의 normalization 이 이루어지니까.)
이때 원하는 output 이 나오도록 $\Theta$ set 을 찾는것이 주 목표일텐데, cost function 을 어떻게 잡아야 할까? m개의 training set ({$x_1^{(i)}$, $x_2^{(i)}$, $x_3^{(i)}$, ..., $y_1^{(i)}$, $y_2^{(i)}$, $y_3^{(i)}$, ...}) 에 대한 cost function 을 다음과 같이 잡아보자. ($y_k^{}$)
(2-27)
\[ J(\Theta) = \frac{1}{m} \sum_{i=1}^{m} \sum_{k} \Big[ - y_k^{(i)} \log ( h_k (\Theta, x^{(i)}) ) - (1-y_k^{(i)}) \log ( 1 - h_k (\Theta, x^{(i)}) ) \Big] \]
▲ Hide

TRefs.References and Related Articles

▼ Show/Hide

    TRefs.1.일반적인 정보

  1. Ref. [01] Wiki - Machine learning (기계 학습)
  2. Ref. [02] Wiki - Deep learning
  3. TRefs.2.Lectures

  4. Ref. [03] Youtube - Course | Machine Learning (Stanford), 2008-07-22, by StanfordUniversity; Lecture by Professor Andrew Ng for Machine Learning (CS 229) in the Stanford Computer Science department.; Lecture 1~20까지. 강의 하나당 1시간 정도 분량인듯. 강의 리스트 및 간단한 설명은 see.stanford.edu - Lecture list - artificial intelligence | machine learning에서. 여긴 영어자막이나 토렌트도 링크되어 있는듯.
  5. Ref. [04] Coursera - Machine Learning (Stanford), 2014-03, by Andrew Ng
    // 위 유투브 강의하신 분이랑 같은 사람인데, coursera에서도 강의가 있는듯. 이 쪽 강의가 온라인에서 듣기 더 잘되어 있는 듯 하네요. 더 최근 강의이기도 하고. Coursera에 가입하고 수강을 해야하긴 하지만... (지금 수강은 무료인듯.) 관심 있으신 분들은 청강해 보시길.
  6. Ref. [05] Coursera - Build Intelligent Applications - Master machine learning fundamentals in five hands-on courses., by Emily Fox and Carlos Guestrin (Amazon Professor of Machine Learning)
    // 이 course 들도 괜찮은거 같아서 링크. (아마 수강하려면 돈 내야 할듯? 그냥 목차들 훑어보는 것만으로도 공부가 될듯한. 어떤걸 검색해야 할지, 어떤걸 공부해야 할지 어느정도 느낄 수 있을테니까.)
  7. Ref. [06] whydsp.org - 기계학습 / 머신러닝 기초 (Machine Learning Basics), 2014-07-30, by 음파선생
    // 글씨가 작아서 보기 힘들긴 하지만, 기초 관련해서 잘 정리해 놓으신듯.
  8. TRefs.3.Papers

  9. Ref. [07] Research at Google - Research Areas & Publications - Artificial Intelligence and Machine Learning; 구글에서 Machine Learning 관련으로 낸 논문들 리스트인듯.
  10. TRefs.4.Related Math

  11. Ref. [08] Method of Lagrange multipliers (English), 2014-03-21; and 최적화, 라그랑지 승수법 (Optimization with the Method of Lagrange multipliers), 2014-03-18;
    // 앞쪽의 영어버전이 더 자세히 작성되어 있음. 많은 Machine Learning 알고리즘들이 최적화와 관계가 깊음.
  12. Ref. [09] 선형 대수학 간단한 정리들 (Linear Algebra), 2014-03-18;
    // 대부분 알고리즘에서 중요한 수학 중 하나. 통계 관련된 수학들도 중요하고. 대부분 컴퓨터 알고리즘은 연속 함수들도 이산화 된 숫자들로 다루기 때문에 대수학이 중요해짐. 그 중에서도 가장 기본이 선형 대수학이라 링크.
▲ Hide
반응형
Get page views