달력

1

« 2020/1 »

  •  
  •  
  •  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  •  

[정리] 모두를 위한 딥러닝 05 - Logistic Classification  by 김성훈 


강의 웹사이트 : http://hunkim.github.io/ml/

Lec = 강의 / Lab = 실습


지금까지는 결과값 Y 가 숫자였는데, 이번 강의에서는 0 또는 1 이렇게 둘 중 하나인 경우를 살펴본다.

병에 걸렸는지 여부, 시험을 통화할 수 있는지 여부 등에 이용할 수 있다.


이를 나타내려면 단순히 직선 그래프로는 안되고 0 또는 1 에 수렴해야 하는데, 이때 사용되는 함수는 아래와 같다. 


시그모이드 (하이퍼볼릭 탄젠트 tanh 파란색 점선) 함수로 나타낼 수 있다.



로그 함수로 나타낼 수도 있다.

여기에서 빨간색이 X 축이라면 Y 값은 0 또는 1 에 수렴하는 그래프가 된다. 오 ~ 


이를 파이썬으로 구현하면 아래와 같다.

x_data = [[1, 2], [2, 3], [3, 1], [4, 3], [5, 3], [6, 2]]

y_data = [[0], [0], [0], [1], [1], [1]]

# placeholders for a tensor that will be always fed.

X = tf.placeholder(tf.float32, shape=[None, 2])

Y = tf.placeholder(tf.float32, shape=[None, 1])


W = tf.Variable(tf.random_normal([2, 1]), name='weight')

b = tf.Variable(tf.random_normal([1]), name='bias')

# Hypothesis using sigmoid: tf.div(1., 1. + tf.exp(tf.matmul(X, W)))

hypothesis = tf.sigmoid(tf.matmul(X, W) + b)

# cost/loss function

cost = -tf.reduce_mean(Y * tf.log(hypothesis) + (1 - Y) * tf.log(1 - hypothesis))

train = tf.train.GradientDescentOptimizer(learning_rate=0.01).minimize(cost)


# Accuracy computation

# True if hypothesis>0.5 else False

predicted = tf.cast(hypothesis > 0.5, dtype=tf.float32)

accuracy = tf.reduce_mean(tf.cast(tf.equal(predicted, Y), dtype=tf.float32))


# Launch graph

with tf.Session() as sess:

  # Initialize TensorFlow variables

  sess.run(tf.global_variables_initializer())


  for step in range(10001):

      cost_val, _ = sess.run([cost, train], feed_dict={X: x_data, Y: y_data})

      if step % 200 == 0:

          print(step, cost_val)


  # Accuracy report

  h, c, a = sess.run([hypothesis, predicted, accuracy],

                     feed_dict={X: x_data, Y: y_data})

  print("\nHypothesis: ", h, "\nCorrect (Y): ", c, "\nAccuracy: ", a)



소스코드 : https://github.com/hunkim/DeepLearningZeroToAll


Posted by 멋지다마라송

댓글을 달아 주세요

[정리] 모두를 위한 딥러닝 04 - Multi-Variable Linear Regression by 김성훈 


강의 웹사이트 : http://hunkim.github.io/ml/

Lec = 강의 / Lab = 실습


x 가 여러개인 경우, 행렬을 이용해서 Y 를 예측하는 방법.


이를 파이썬으로 구현하면 아래와 같다.


import tensorflow as tf

x_data = [[73., 80., 75.], [93., 88., 93.],

        [89., 91., 90.], [96., 98., 100.], [73., 66., 70.]]

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

# placeholders for a tensor that will be always fed.

X = tf.placeholder(tf.float32, shape=[None, 3]) # [n, 3] 행렬. x_data 세트 = n 개

Y = tf.placeholder(tf.float32, shape=[None, 1]) # [n, 1] 행렬.


W = tf.Variable(tf.random_normal([3, 1]), name='weight')

b = tf.Variable(tf.random_normal([1]), name='bias')


# Hypothesis

hypothesis = tf.matmul(X, W) + b

# Simplified cost/loss function

cost = tf.reduce_mean(tf.square(hypothesis - Y))

# Minimize

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={X: x_data, Y: y_data})

  if step % 10 == 0:

      print(step, "Cost: ", cost_val, "\nPrediction:\n", hy_val)


소스코드 : https://github.com/hunkim/DeepLearningZeroToAll

Posted by 멋지다마라송

댓글을 달아 주세요

[정리] 모두를 위한 딥러닝 03 - cost 줄이기 by 김성훈 


강의 웹사이트 : http://hunkim.github.io/ml/

Lec = 강의 / Lab = 실습


W=2 일때에도 계산해보자.


이걸 2차원 그래프로 나타내면 아래와 같다.

W=1 이 정답이다. (Y = 1 * X)

이를 3차원 그래프로 나타내면 아래와 같다.


W=1 인 값은 미분했을때 (접선의 기울기) 0 이 되는 곳이다.


이걸 파이썬을 이용해서 구현하면 아래와 같다.


초기값을 5 로 주고, 0.1 씩 곡선을 타고 내려가는데 GradientDescentOptimizer 라는 최적화 함수를 이용하면 된다.

오, 6번만에 정답을 찾았다.


다른 예로, 초기값을 -3 으로 주고, 0.1 씩 곡선을 타고 내려간다.

역시 6번만에 정답을 찾았다.


소스코드 : https://github.com/hunkim/DeepLearningZeroToAll

Posted by 멋지다마라송

댓글을 달아 주세요

[정리] 모두를 위한 딥러닝 02 - Linear Regression by 김성훈 


강의 웹사이트 : http://hunkim.github.io/ml/

Lec = 강의 / Lab = 실습


먼저 가설을 세워야 한다.

우선 그 가설은 직선이다. (리니어 리그레션)

가설 (직선) 과 실제값 (그래프에서 X 로 표시된 값) 의 차이를 줄여야 한다.

가설값과 실제값과의 차이를 코스트 cost 또는 로스 loss 라고 한다.

차이가 양수일수도 있고 음수일수도 있으며, 차이가 크면 클수록 문제가 큰거니까 이 차이 (빨간선의 길이) 를 제곱한다.


이제 이 차이를 줄여야 한다.

코드에서 보면

# 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)


이렇게 minimize(cost) 가 있는데, 바로 이게 차이를 최소로 줄인다는 의미이다.

Posted by 멋지다마라송

댓글을 달아 주세요

2018. 1. 10. 00:00

[정리] 모두를 위한 딥러닝 00~01 Tech/머신러닝2018. 1. 10. 00:00

[정리] 모두를 위한 딥러닝 00~01 by 김성훈 


강의 웹사이트 : http://hunkim.github.io/ml/

Lec = 강의 / Lab = 실습


Lec 00 : 머신러닝, 딥러닝 개요  

유투브 동영상 : https://c11.kr/xuc

인공지능 > 머신러닝 > 딥러닝 

강의 목적 : 머신러닝에 관심이 있는 사람들이라면 누구든 이해하고 개발할 수 있도록 도와주기 위해.

머신러닝 : 특정 입력을 기반으로 원하는 출력을 만드는 것. 

알아서 배울 수 있다면 로직이 정해져있지 않아도 (학습을 할 수 있으면) 원하는 출력을 얻을 수 있다. (오!)


Andrew Ng’s ML class : 앤드류 응 교수님 강의 (추천!)

https://www.coursera.org/learn/machine-learning (코세라 사이트는 프로그래밍 관련해서 좋은 강의가 많다)

- https://class.coursera.org/ml-003/lecture 

- http://www.holehouse.org/mlclass/ (note) 


• Convolutional Neural Networks for Visual Recognition. 

- http://cs231n.github.io/ 


• TensorFlow : 구글에서 만든 머신러닝 라이브러리 오픈소스 

- https://www.tensorflow.org 

- https://github.com/aymericdamien/TensorFlow-Examples



Lec 01 : 기본적인 머신러닝 용어와 개념 설명.

유투브 동영상 : https://c11.kr/xue

Supervised Learning : f레이블이 있는 기반 데이터를 가지고 학습하는 방법. 스팸 필터, 강아지 그림 맞추기 등.

Unsupervised Learning : 레이블이 없는 데이터를 가지고 학습하는 방법. 비슷한 뉴스를 모아라 등.


Types of Supervised Learning 수퍼바이즈드 러닝의 종류

- Regression : 정해진 스코어 (0~100) 중에서 점수를 예측하는 학습.

- Binary Classification : 둘중 하나 (통과/실패처럼) 를 예측하는 학습.

- Multi-Label Classification : A, B, C, D 처럼 등급을 예측하는 학습.


Lab 01 : Tensorflow 텐서플로우 설치, 기본적인 연산

유투브 동영상 : https://c11.kr/xug

왜 텐서플로우인가

https://github.com/thedataincubator/data-science-blogs/blob/master/output/DL_libraries_final_Rankings.csv


설치 : https://c11.kr/xun

기본문법 : https://github.com/sjchoi86/Tensorflow-101/blob/master/notebooks/basic_python.ipynb

기본용어 정리 : https://c11.kr/xup


Posted by 멋지다마라송

댓글을 달아 주세요