반응형
반응형

#모두를 위한 딥러닝 강좌 lec 6-1 : Softmax Regression: 기본 개념 소개

https://www.youtube.com/watch?v=MFAnsx1y9ZI&index=13&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm



* Multinomaial classification 

왼쪽 표의 데이터를 그래프 위에 그려보면 오른쪽 그림과 같이 데이타가 나온다.

그리고 그 데이타들을 binary 라는 0과 1로 나누는 classification 알고리즘을 적용한다고 했을 때 각각은 빨간선으로 구분할 수 있다.

1. C와 C가 아닌 값

2. B과 B가 아닌 값

3. A와 A가 아닌 값


저 3개를 행렬의 곱으로 구하기엔 좀 복잡할 수 있으므로, 하나의 식으로 합치어서 계산해보자.


이전에는 시그모이드(sigmoid)를 처리해야 했지만, 

각각의 시그모이드(sigmoid) 함수를 정의해야하지만, 3개를 한꺼번에 구하는 방법도 있다. 


반응형
반응형

#모두를 위한 딥러닝 강좌 lec 5-2 : Logistic Regression의 cost 함수 설명

https://www.youtube.com/watch?v=6vzchGYEJBc&index=11&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm



* Logistic (regression) classification 알고리즘

지난 번에 hypothesis를 구했고 이번엔 minimizs cost function과 gradient decent 값을 구해보자.


* Linear Hypothesis 의 그래프

- 장점 : 어디서든지 답(최저값)을 구할 수 있다! → 왜냐는 사람은 이전 강의 참고


* Cost Function의 그래프

- 초록 : Linear regression의 Hypothesis

- 주황 : Classification의 sigmoid function(Hypothesis)을 통해서 값이 0~1사이로 들어오도록 만들었다.


- Linear regression H(x)를 그래프로 그린다면 매끈한 밥그릇 모양!

- sigmoid 함수의 H(X)를 통해서 그래프로 그린다면 울퉁불퉁한 밥그릇 모양! 

→ 이전시간(05-01)의 그래프를 보면 선이 구불구불하기 때문에 울퉁불퉁할 수 밖에 없다. 

→ 그래서 어디에서 시작하던지 최저값을 찾는 것이 아니라, Local 최소값과 Global 최소값이 생기면서 값이 복잡하니까!

불안정하여 값을 쓸 수가 없다. 



* Cost function 이해하기

cost function의 의미 : 실제 값과 예측 값과 비슷한다면 cost 값은 작아지고, cost 값은 커져서 우리의 모델을 더 정확히 하는 것이다.

to-do)아래의 예제를 그려가면서 이해해보기..!



하지만, 텐서플로우에서 코딩하려고 보면 굉장히 복잡해진다.

저 2개의 식을 하나의 식으로 만들어보자.




y=1일 때, c = -log(H(x))

y=0일 때, c = -1 * log(1-H(x)) 가 되므로 위의 식과 동일하게 변하게 된다.


* Cost minimize 하기 (Gradient Decent)

gradientDescentOptimizer라는 함수 라이브러리를 이용하여서 미분하여 구하면 된다.


 #Logistic Classification 구현하기 

https://www.youtube.com/watch?v=t7Y9luCNzzE&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm&index=12

반응형
반응형

#모두를 위한 딥러닝 강좌 lec 5-1 : Logistic Classification의 가설 함수 정의

https://www.youtube.com/watch?v=PIjno6paszY&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm&index=10



* 이전시간 복습 Linear Regression 

Hypothesis : H(X) = WX

Cost : cost(W)

Gradient decent : W 


* Binary classification 이란?

- 두 개중에 하나를 고르는 알고리즘!

- 사용 예시) Spam or Ham (스팸 메일 필터링), 페이스북 추천 타임라인, 주식시장의 이전 학습으로 인한 살지 팔지에 대한 판단 등에 사용할 수 있다.


* Linear Regression의 단점


문제1)

- 0과 1로만 구분할 경우 기울기가 달라질 경우 4시간 공부했을 때 성공이였던 데이타가 실패로 분류될 수도 있다.


문제2)

H(x) = Wx + b라는 Linear 공식으로 Classification의 값을 구할 때 0에서 1사이의 값이 아니라 1이 넘어버리는 값이 발생할 수 도 있다.


그래서 많은 사람들이 0에서 1사이의 값을 가지는 함수를 고민을 하게 되어 발견한 함수가 있다. 


* sigmoid Function (시그모이드 함수) or Logistic Function 


- 1을 넘어가게 된다면 1을 넘지않는 선을 가지게 되며, -100이 되어도 0과 가까운 수가 될 뿐 0밑으로 가지 않는다. 

- z = WX로 두고, H(x) = g(z)로 두게 된다.


* Logistic Hypothesis의 최종




반응형
반응형


반응형
반응형

#모두를 위한 딥러닝 강좌 lec 04 : Multi-variable linear regression

https://www.youtube.com/watch?v=kPxpJY6fRkY&index=8&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm


이전 시간 

  1. Hypothesis ( 01강 : http://aileen93.tistory.com/48 )

    • H(x) = Wx + b

  2. Cost function ( 02강 : http://aileen93.tistory.com/49 )

    • cost(W, b)

  3. Gradient descent algorithm ( 03강 : http://aileen93.tistory.com/50 )

    • 미분을 통한 최저값 0을 찾는 방법 minimize cost(W, b)



Multi-variable linear regression


One-feature

  • H(x) = Wx+b
    변수가 하나일 경우에는 w에 x만 곱하면 되었다.

 x (hour)

=입력값

=one-feature

 y (score)

= 답 (결과값)

= 학습 결데이터

= one-variable

 10

90

 9

80

 3

50

 2

60

 11

40

  • 좋은 feature를 통해서 결과값(y)를 알아내므로 좋은 feautre들을 갖는 것이 중요하다.
  • 표 해석 : 10(x값)시간 공부하여 90점(y)을 받은 친구와 9시간 공부하여 80점을 받은 친구 등으로 해석할 수 있다. 
Multi-variable/feature
  • H(x1,x2) = w1x1 + w2x2 + w3x3 +b
    Multi-variable/Multi-feature도 다르지 않다. 변수(feature)가 여러개로 늘어날 경우를 말한다. 

 x1 (hours)

=입력값

= feature

 x2 (attendance)

=입력값

= feature

 y (score)

= 답 (결과값)

= 학습 결과 데이터

= variable

 10

5

90

 9

5

80

 3

2

50

 2

4

60

 11

1

40

  • feature가 여러 개일 경우, multi-variable/feature 라고 부른다.
  • 그리고 이 feature가 많을 경우, 당연하게 더 자세하고 정확한 결과를 얻을 수 있다! ( 그렇다고 많은 variable이 있다고 다 좋은 것도 아니다. )
  • 표 해석 : 11(x1값)시간을 공부하고도 40점(y값)을 받은 친구는 수업 참석률(x2값)이 1번 밖에 되지 않았음을 우리는 알 수 있다.
    ( 아까 하나의 feature가 있을 때 보다 더 정확한 결과가 느껴질 것이다. )

결국, feature(변수)가 많아지면 식도 길어지고 계산하기 어려워지니까 고민했었는데 Matrix(행렬)을 통해서 쉽게 계산이 가능하도록 했다.


Matrix 

근데, w1x1이던게 행렬의 곱을 하다보니 x1w1으로 순서가 바뀌게 되어서 ( 순서가 바뀌는 것은 아래 Hypothesis using matrix 이미지 참고)


행렬의 곱을 나타낼 경우 H(X) = XW로 표현하게 되었다. (X를 먼저 표현해준다.)
이해가 안간다면 아래 그림을 보면 더 쉽다.



결국, 연산값이 한줄로 표현이 가능하게 된다. 

즉, 인스턴스를 각각 계산할 필요가 없이 instance의 수 * W만 행렬로 곱해버린다면 y값이 바로 계산되어서 나오게 된다.


그래서 나온 새로운 Hypothesis




그렇다면, 저 W값을 어떻게 결정할 수 있을까?
... 

Transpose

원래 행렬은 (1*4)*(4*1)이 되어야 행렬의 곱을 할 수가 있는데, W행렬을 X 행렬과 같은 모양으로 4*1행렬 * 4*1행렬으로 만들어서 강제로 곱하는 방법이 나오게 된다. (수학자들이 왜 1*4행렬에 4*1행렬을 하니까 보기 싫다며 보기 좋게 만들자고 하면서 나온 방법 Transpose -_-)

=> 나중에 찾아보이소 


그래서 우리는 최종적으로  라는 형식으로 사용을 하게 된다. 



#multi-variable Linear Regression을 TensorFlow에서 구현하기 실습 04

https://www.youtube.com/watch?v=iEaVR1N8EEk&index=9&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm



# Lab 4 Multi-variable linear regression
import tensorflow as tf
tf.set_random_seed(777) # for reproducibility

x1_data = [73., 93., 89., 96., 73.]
x2_data = [80., 88., 91., 98., 66.]
x3_data = [75., 93., 90., 100., 70.]

y_data = [152., 185., 180., 196., 142.]

# placeholders for a tensor that will be always fed.
x1 = tf.placeholder(tf.float32)
x2 = tf.placeholder(tf.float32)
x3 = tf.placeholder(tf.float32)

Y = tf.placeholder(tf.float32)

w1 = tf.Variable(tf.random_normal([1]), name='weight1')
w2 = tf.Variable(tf.random_normal([1]), name='weight2')
w3 = tf.Variable(tf.random_normal([1]), name='weight3')
b = tf.Variable(tf.random_normal([1]), name='bias')

hypothesis = x1 * w1 + x2 * w2 + x3 * w3 + b
print('=================> hypothesis :',hypothesis)

# cost/loss function
cost = tf.reduce_mean(tf.square(hypothesis - Y))

# Minimize. Need a very small learning rate for this data set
optimizer = tf.train.GradientDescentOptimizer(learning_rate=1e-5)
train = optimizer.minimize(cost)

# Launch the graph in a session.
sess = tf.Session()
# Initializes global variables in the graph.
sess.run(tf.global_variables_initializer())

for step in range(2001):
cost_val, hy_val, _ = sess.run([cost, hypothesis, train],
feed_dict={x1: x1_data, x2: x2_data, x3: x3_data, Y: y_data})
if step % 10 == 0:
print(step, "Cost: ", cost_val, "\nPrediction:\n", hy_val)

'''
0 Cost: 19614.8
Prediction:
[ 21.69748688 39.10213089 31.82624626 35.14236832 32.55316544]
10 Cost: 14.0682
Prediction:
[ 145.56100464 187.94958496 178.50236511 194.86721802 146.08096313]
...
1990 Cost: 4.9197
Prediction:
[ 148.15084839 186.88632202 179.6293335 195.81796265 144.46044922]
2000 Cost: 4.89449
Prediction:
[ 148.15931702 186.8805542 179.63194275 195.81971741 144.45298767]
'''



참고 링크 


반응형
반응형

#모두를 위한 딥러닝 강좌 lec 03 : Linear Regression의 cost 최소화 알고리즘

https://www.youtube.com/watch?v=TxIVr-nk1so&index=6&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm



How to minimize Cost Function


* H(x) = Wx +b

* minimize cost(W,b) 

  • cost 공식에 데이터 값을 넣고 계산하면 아래로 볼록한 포물선(2차 함수 그래프)을 볼 수 있는데(y축은 cost, x축은 W),
    cost가 0인 지점을 찾는 것이 Linear Regression중에서 minimize한 cost funtion목적이다. 
  • 이 방법을 기계적인 알고리즘을 통해서 학습시키는 방법중 하나가 바로 gradient descent algorithm이다.
* Gradient descent algorithm란?
  • 경사를 따라 내려가는 알고리즘
  • ML이외에도 여러 분야에 이 알고리즘을 통하여 minimize한 값들을 찾아낼 수가 있다. 
* 알고리즘의 내용 
  • 산 꼭데기에 있을 때, 산에서 내려오는 방법은 여러가지가 될 것이다. 그러나 그 도착지는 어디가 될지 모른다..
  • 그러나 아래가 볼록한 포물선에서 내려가는 방법은 어디를 선택하든 정답으로 내려가는 정답은 하나로 나온다는 점이다.
  • 그리고 이 경사도를 통해서 최대점을 알수가 있는데, 이때 미분(그래프 내의 한 점의 기울기를 구하는 것) 을 사용하여서 구한다. 
* 미분
  • 미분은 여러 웹사이트에서 바로 계산해주는 것들이 많음..ㅎㅎㅎ
* Gradient descent algorithm의 공식

  • 이 공식을 기계적으로 공식해서 minimize한 cost function을 구할 수 있다.

참고 링크 


반응형
반응형

#모두를 위한 딥러닝 강좌 lec 02 : Linear Regression의 Hypothesis 와 cost

https://www.youtube.com/watch?v=Hax03rCn3UI&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm&index=4



Linear Regression

  • 기본적인 트레이닝 세트(데이타 셋트)가 X=1, Y=1 ...과 같이 있을 경우, 이 데이타들의 그래프를 그려보면 x=y꼴 그래프가 될 것이다.
  • 이때, x=y 그래프가 정답이라고 가정을 하고! 이 선과 가장 가까운 일직선 라인(Linear)과 가까운 좌표값을 정답이라고 처리하는 학습 모델 방법을 말한다.

Hypothesis : H(x) = Wx + b

  • Linear Regression 학습방법 기본이 되는 저 방정식 따라서 각각의 값들이 얼만큼 x=y꼴 그래프와 가장 가까이 있는지를 구하는 식을 알면, Linear Regression 학습법을 ML 적용시킬 수 있다.

Cost Function = Loss Function 

  • Linear Regression에서 정답이라고 가정한 선( y=x 그래프선 )과 가장 가까운 거리의 값을 찾는 방법을 일컫어 Cost Function (=Loss Function) 이라고 한다. 
  • 즉, 가설과 실제 데이터의 차이값을 볼 수 있는 방법을 말한다.
  • H(x) - y의 값(정답 값 H(x)에서 실제 값인 y를 뺀 식)을 구하자. 하지만, H(x) - y를 할 경우 -(음수) 값이 나올 수도 있으므로 제곱을 해서 구한다. ⇒ (H(x)-y)^2

  • 즉, minimaize cost (W, b)를 구하는 것이 Linear Regression의 학습이 된다. 

 #텐서플로우를 이용한 Lab 실습 02 

https://www.youtube.com/watch?v=4HrSxpi3IAM&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm&index=5



Linear Regression을 통한 텐서플로우 활용 예제) https://github.com/hunkim/DeepLearningZeroToAll

텐서플로우로 선형회귀 분석하는 3단계
  • 1단계 : 그래프를 빌드하기
  • 2단계 : sess.run을 통해서 그래프를 실행하기
  • 3단계 : 2단계에서 실행한 결과 값 확인하기

1단계 : 그래프 빌드하기 (Build graph using TF operations)

H(x) = Wx + b 값 정의

# X and Y data
x_train = [1, 2, 3] # 학습할 x값
y_train = [1, 2, 3] # 학습할 y값 x=y 값이라는 학습 데이터

# Try to find values for W and b to compute y_data = x_data * W + b
# We know that W should be 1 and b should be 0
# But let TensorFlow figure it out
W = tf.Variable(tf.random_normal([1]), name='weight') # W와 b값을 Variable이라는 개념으로 정의한다. 텐서플로우가 사용하는 Variable이라는 개념
b = tf.Variable(tf.random_normal([1]), name='bias') # 우리는 W와 b값을 모르므로 임의의 값을 가져와서 정의한다.

# Our hypothesis XW+b
hypothesis = x_train * W + b # 우리의 node 값

Cost(W, b) 값 정의

# cost/loss function
cost = tf.reduce_mean(tf.square(hypothesis - y_train))

* 여기서 reduce_mean이란 무엇인가?
값을 평균내주는 함수


그러면 이제 값을 최소화하는 알고리즘을 또 TF에서는 어떻게 지원하고 있는가?
( = 우리의 Hypothesis 선과 y값의 차이를 최소로 찾아줄 식 )

# Minimize
optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.01) # 최적화의 minimize 함수를 찾아서 cost를 최소화하라고 명시하면

train = optimizer.minimize(cost) # 자기가 알아서 최적화된 최소값을 찾아내기 시작함



2단계 : sess.run을 통해서 그래프를 실행하기

# Launch the graph in a session.
sess = tf.Session() # 세션 생성
# Initializes global variables in the graph.
sess.run(tf.global_variables_initializer()) # Variable을 Initialize 한다.

# Fit the line
for step in range(2001):
sess.run(train) # train 그래프 상에 있는 node 값을 실행한다.
if step % 20 == 0:
print(step, sess.run(cost), sess.run(W), sess.run(b))



3단계 : 결과 값 해석하기

'''
0 2.82329 [ 2.12867713] [-0.85235667]
20 0.190351 [ 1.53392804] [-1.05059612]
40 0.151357 [ 1.45725465] [-1.02391243]
...
1920 1.77484e-05 [ 1.00489295] [-0.01112291]
1940 1.61197e-05 [ 1.00466311] [-0.01060018]
1960 1.46397e-05 [ 1.004444] [-0.01010205]
1980 1.32962e-05 [ 1.00423515] [-0.00962736]
2000 1.20761e-05 [ 1.00403607] [-0.00917497]
'''

W 값은 최적화된 값을 찾았고, b값은 0으로 수렴하는 것을 알 수 있다. 

노랑색 : Cost값

초록색 : W값 

하늘색 : b값



Placeholders란?

직접 값을 주지 않고, 필요할 때마다 값을 알아서 넘겨주는 것..!

이 placeholders를 화룡ㅇ해서 선형분석을 할 수 있다.


#x_train = [1,2,3]

#y_train = [1,2,3] 이렇게 주지 않고


X = tf.placeholder(tf.float32)

Y = tf.placeholder(tf.float32)

.... 이렇게! 선언을 하고 나서 


# Fit the line
for step in range(2001):
sess.run(train)
if step % 20 == 0:
print(step, sess.run(cost), sess.run(W), sess.run(b))

이 부분 소스를

# Fit the line
for step in range(2001):
cost_val, W_val, b_val, _ = \

sess.run([cost, W, b, train], feed_dict = {X: [1,2,3], Y: [1, 2, 3]})
if step % 20 == 0:
print(step, cost_val, W_val, b_val)

노란색 글씨처럼 feed_dict를 통해서 값을 전달한다.


이것을 사용하는 이유는?

만들어진 모델에 대해서 값을 따로 지정해서 줄 수 있다.

Linear Regression 모델을 통해서 값을 넣어줄 수 있다는 장점이 있다.


학습을 시키게 될 때! 즉, train을 넣어줄 때 각각 feed_dict를 통해서 정의가 가능하다.





최종 소스 (기본 Linear Regression)


# Lab 2 Linear Regression
import tensorflow as tf
tf.set_random_seed(777) # for reproducibility

# X and Y data
x_train = [1, 2, 3]
y_train = [1, 2, 3]

# Try to find values for W and b to compute y_data = x_data * W + b
# We know that W should be 1 and b should be 0
# But let TensorFlow figure it out
W = tf.Variable(tf.random_normal([1]), name='weight')
b = tf.Variable(tf.random_normal([1]), name='bias')

# Our hypothesis XW+b
hypothesis = x_train * W + b

# cost/loss function
cost = tf.reduce_mean(tf.square(hypothesis - y_train))

# Minimize
optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.01)
train = optimizer.minimize(cost)

# Launch the graph in a session.
sess = tf.Session()
# Initializes global variables in the graph.
sess.run(tf.global_variables_initializer())

# Fit the line
for step in range(2001):
sess.run(train)
if step % 20 == 0:
print(step, sess.run(cost), sess.run(W), sess.run(b))

# Learns best fit W:[ 1.], b:[ 0.]

'''
0 2.82329 [ 2.12867713] [-0.85235667]
20 0.190351 [ 1.53392804] [-1.05059612]
40 0.151357 [ 1.45725465] [-1.02391243]
...
1920 1.77484e-05 [ 1.00489295] [-0.01112291]
1940 1.61197e-05 [ 1.00466311] [-0.01060018]
1960 1.46397e-05 [ 1.004444] [-0.01010205]
1980 1.32962e-05 [ 1.00423515] [-0.00962736]
2000 1.20761e-05 [ 1.00403607] [-0.00917497]
'''


최종 소스 ( placeholder를 사용한 Linear Regression )


# Lab 2 Linear Regression
import tensorflow as tf
tf.set_random_seed(777) # for reproducibility

# Try to find values for W and b to compute y_data = W * x_data + b
# We know that W should be 1 and b should be 0
# But let's use TensorFlow to figure it out
W = tf.Variable(tf.random_normal([1]), name='weight')
b = tf.Variable(tf.random_normal([1]), name='bias')

# Now we can use X and Y in place of x_data and y_data
# # placeholders for a tensor that will be always fed using feed_dict
# See http://stackoverflow.com/questions/36693740/
X = tf.placeholder(tf.float32, shape=[None])
Y = tf.placeholder(tf.float32, shape=[None])

# Our hypothesis XW+b
hypothesis = X * W + b

# cost/loss function
cost = tf.reduce_mean(tf.square(hypothesis - Y))

# Minimize
optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.01)
train = optimizer.minimize(cost)

# Launch the graph in a session.
sess = tf.Session()
# Initializes global variables in the graph.
sess.run(tf.global_variables_initializer())

# Fit the line
for step in range(2001):
cost_val, W_val, b_val, _ = \
sess.run([cost, W, b, train],
feed_dict={X: [1, 2, 3], Y: [1, 2, 3]})
if step % 20 == 0:
print(step, cost_val, W_val, b_val)

# Learns best fit W:[ 1.], b:[ 0]
'''
...
1980 1.32962e-05 [ 1.00423515] [-0.00962736]
2000 1.20761e-05 [ 1.00403607] [-0.00917497]
'''

# Testing our model
print(sess.run(hypothesis, feed_dict={X: [5]}))
print(sess.run(hypothesis, feed_dict={X: [2.5]}))
print(sess.run(hypothesis, feed_dict={X: [1.5, 3.5]}))

'''
[ 5.0110054]
[ 2.50091505]
[ 1.49687922 3.50495124]
'''


# Fit the line with new training data
for step in range(2001):
cost_val, W_val, b_val, _ = \
sess.run([cost, W, b, train],
feed_dict={X: [1, 2, 3, 4, 5],
Y: [2.1, 3.1, 4.1, 5.1, 6.1]})
if step % 20 == 0:
print(step, cost_val, W_val, b_val)

# Testing our model
print(sess.run(hypothesis, feed_dict={X: [5]}))
print(sess.run(hypothesis, feed_dict={X: [2.5]}))
print(sess.run(hypothesis, feed_dict={X: [1.5, 3.5]}))



참고 링크 


반응형
반응형

#모두를 위한 딥러닝 강좌 lec 01 : 기본적인 Machine Learning 의 용어와 개념

https://www.youtube.com/watch?v=qPMeuL2LIqY&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm&index=2



머신러닝(ML)이란?
  • 명시적인 학습을 하는 프로그램으로 ex) 스팸 필터, 자율 주행과 같은 시스템을 만들 때 개발자가 일일히 룰을 만들긴 어려울 것이다. 이럴 때, 기계를 학습시켜서 해당 룰을 스스로 만들 수 있다면 좋을 것이다.

ML의 학습방법 : Supervised Learning(지도학습)과 Unsupervised Learning(비지도 학습/자율 학습)

  1. Supervised Learning 
    • 정해진 라벨이 붙은 트레이닝 세트를 가지고 학습 시키는 방법
    • ex) 고양이 사진들(정답)을 보여주며 이 사진들은 고양이라고 학습 시킴
  2. Unsupervised Learning
    • 정해지지 않은 새로운 데이타들을 가지고 학습시키는 방법 (데이타를 보고 스스로 학습 하는 방법)
    • ex) 구글 뉴스에서는 자동적으로 유사한 그룹을 grouping을 하는 경우, 미리 라벨링하기 어려우므로 자기가 알아서 분류하여 라벨링 함
Supervised Learning(지도학습)의 종류
  1. Regression (회귀)
    • ex) 성적 0에서 100점까지의 점수(범위)를 예측할 때 쓰는 방법
  2. binary classification (바이너리 분류)
    • 예측을 Pass와 Non-Pass 등으로 2가지로 나누어 학습시키는 방법
    • ex) 성적이 올랐는지 안올랐는지 2가지만 선택할 경우 Binary classification
  3. multi-label classification (멀티 분류)
    • 예측을 하되, A,B,C.. 등 많은 라벨을 선택할 경우 쓰는 방법
    • ex) A 분류, B 분류, C 분류 .... 
  4. 의사결정나무
  5. 판별분석
  6. 신경망
Supervised Learning을 하기 위해서는 반드시 트레이닝 세트가 필요하다. 
트레이닝 세트란, 해당 ML에게 학습을 시키기 위한 데이터들을 말한다. 

UnSupervised Learning(비지도 학습/자율학습)의 종류
  1. 연관성 규칙
  2. 데이터 축소기법
  3. 군집분석


#텐서플로우를 이용한 Lab 실습 01

https://www.youtube.com/watch?v=cbPjsOivFOs&index=3&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm



텐서플로우란? (https://www.tensorflow.org/)

python으로 개발할 수 있는 머신러닝 오픈 소스 라이브러리


데이타 플로우 그래프란?

  • 노드(Nodes) : 수학적인 계산을 하는 Operations
  • 엣지(Edges) : 데이타의 행렬(arrays=tensors)

이러한 텐서(데이타)들이 돌아다는 것을 일컫어 텐서 플로우 라고 말한다.

이것들을 통해서 딥러닝/ML에 사용할 수 있다. 


텐서플로우의 설치와 Hellow World 찍기

  • 텐서플로우는 모든 것들이 하나의 Node(Operation)가 되고, 이 Node(Operation)를 실행시키는 것이 바로 run이라는 함수이다. 

* Placeholder

  • 하나의 모델에 대해서도 마치 함수에 값을 줄 수 있다.
  • placeholder로 변수 타입을 만들고 실제로 실행시킬 때, a와 b로 해당 하는 값으로 치환하여서 실행시킬 수 있게 된다. 

참고 링크 


반응형

+ Recent posts