모두를 위한 딥러닝

[DL] 모두를 위한 딥러닝 1

승무_ 2022. 3. 29. 22:14

*)NN: 딥러닝

 

프로그래머가 정확하게 프로그래밍 하기 어려운 경우

  • 스팸 필터
  • 자율 주행 차

Machine Learning (기계 학습)

 

프로그램 자체가 데이터를 보고 학습해서 능력을 갖는 프로그램

 

학습하는 방법에 따라 Supervised/Unsupervised learning (지도/비지도 학습) 으로 분류할 수 있다.

Supervised learning

라벨링이 되어있는 학습 데이터로 학습을 하는 방법

 

Unsupervised learning

주어진 데이터로 스스로 학습하는 방법

 


Types of Supervised learning

  • regression (ex. 시험점수 예측-범위가 넓음)
  • binary classification (ex. Pass/non-pass 예측)
  • multi-label classification (ex. A, B, C, D, ...등급 예측)

Tensorflow 특징

실행을 안하고 그냥 print하면 "얘는 텐서야"라는 정보만 줌

어떤 선이 우리의 데이터에 맞을까? 이것을 찾는것이 학습

 

 

선형식은 위와 같은 1차 방정식으로 나타낼 수 있다. 

W와 b의 값을 어떻게 설정하면 파란 선처럼 데이터의 특징을 잘 나타낼 수 있을까?

 

실제 데이터의 값과 선형식의 값의 차이를 최소한으로 줄이면 최적의 선형식을 찾을 수 있을 것이다.

 

실제 값과 예측값의 차이를 Cost라 한다.

 

Cost 값을 가장 최소화시키는 W, b를 찾는 것이 목표가 될 것이다. 

우리의 목표를 위와 같이 나타낼 수 있다.

 



tf.reduce_mean : 평균 

tf.global_variables_initializer() : variable사용하기 전에 반드시 초기화 해야함

w의 값을 알고 싶으면 sees.run(w)로 실행 시켜야함


import tensorflow.compat.v1 as tf

tf.disable_v2_behavior() 

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

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

hypothesis = X*W + b

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

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

sees=tf.Session()
sees.run(tf.global_variables_initializer())

for step in range(2001):
    cost_val, W_val, b_val, _ =sees.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)