인공지능/딥러닝 개념 정리노트

- 파이썬을 거의 모르는 사람도, 코드를 이해 가능할만큼, 함수와 기타 등등이 뭔지 정리함.

- 내가 강의할때 보거나 할것.

* 텐서플로우가 어떻게 돌아가는지에 대한 이해는 있어야함!

모르면 머신러닝 포스팅 lab 1&2 보기

 

import tensorflow as tf

'텐서플로우' 라는 패키지를 불러와서, 그 이름을 "tf" 라고 하자.

* as tf 안하면 tensorflow 관련 함수 호출할때 tensorflow.~~~ 해야되는데,

as tf 하면 tf.~~~하면 됨, 아주 간편함!

 

x_train = [1, 2, 3, 4]
y_train = [0,-1,-2,-3]

x,y값을 일단 선언해둠. (데이터를 이걸로 할거라 미리 저장해 놓는 것)

 

# Placeholder 설정
X = tf.placeholder(tf.float32)
Y = tf.placeholder(tf.float32)

# 변수 설정
W = tf.Variable(tf.random_normal([1]))
b = tf.Variable(tf.random_normal([1]))

tf.Placeholder 뜻 : 지금 미리 값을 넣어두는 것이 아니고, 나중에 sess.run 할때 데이터를 집어넣을 것임.

뭔소린지 모르겠다면 머신러닝 포스팅 lab 1&2로 가서 확인할 것.

 

tf.Variable 뜻 : 텐서플로우의 변수선언.

tf.random_normal([1])) 뜻 : [1] 크기의 랜덤한 (정규분포를 따르는) 수를 생성함.

Linear regression 코드이므로, W,b값이 각각 하나이기 때문에 [1] 씩만 생성함.

 

hypothesis = X * W + b

 Linear regressionHypothesis function H(x) = W*x + b 를 hypothesis로 선언함.

 

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

Cost function이었던

$$(H(x) - y)^2 을 각각의 데이터 m개에 대하여 모두 더하고, m으로 나누어 평균을 구함.$$

을 구현한 것.

 

tf.square 뜻 : 제곱.

 

tf.reduce_mean 뜻 : 평균.

 

* hypothesis 는 x*W + b이고, x 는 크기 4의 배열이라 계산된 총 크기는 [4],

y도 [4] 이므로 둘이 빼면 그냥 다 더한거랑 똑같은 게 됨.

 

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

Gradient Descent 방법을 이용하여 train함.

minimize(cost) : cost를 최소화 시킬것임.

with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    
    for step in range(1001):
        sess.run(train, feed_dict={X: x_train, Y: y_train})
            
        if step%50 == 0:
            W_val, b_val, cost_val = sess.run([W, b, cost], feed_dict={X: x_train, Y: y_train})
            print("   < Step : %d>" %step)
            print("Cost : ",cost_val,"\nW :",W_val,"\nb : ",b_val,"\n\n")
        
    # evaluate training accuracy
    
    print(f"W: {W_val} b: {b_val} cost: {cost_val}")

session을 열음.

sess.run(tf.global_variables_initializer()) 뜻 : 아직 초기화되지 않은 (값이 박히지도 않은) 변수들을 죄다 초기화해줌.

이거 안하면 변수 터짐.

 

for step in range(1001) : 뜻  - 0부터 1000까지 돌릴것 ㅎ

sess.run(train, feed_dict = {X: x_train, Y: y_train}) 뜻 : train 함수를 실행시킴 (minimize(cost) 한것)

cost에는  tf.square(Hypothesis - Y) 가 있으니 Y값이 필요할 것이고,

Hypothesis 에는 X*W + b가 있으므로 X값이 필요함.

그 두개의 X,Y를 아까 선언해뒀던 x_train, y_train값으로 집어넣음.


if step%50 == 0:  -  step이 50의 배수일때 (50,100,150,200 ... , 1000번째 step에서 : )

 

W_val, b_val, cost_val = sess.run([W, b, cost], feed_dict={X: x_train, Y: y_train}) 뜻 :

W_val, b_val, cost_val 에 각각 W,b,cost의 값을 집어넣음.

cost의 값에는 위에서 언급했듯이 X,Y 둘다 있으므로, feed_dict 로 X,Y값으로 넣어줌.

 

아래는 간단한 print이므로 설명 생략.

 

끝~

- 설명 없이 간단하게 딥러닝 관련 용어 및 개념을 정리합니다.

 

 

Machine Learning (머신러닝) : 컴퓨터가 학습할 수 있도록 하는 알고리즘과 그 기술

사용하는 이유 : 명시적 프로그래밍으로 코드를 짜기엔 너무 어려운 문제들이 많음.    예) 스팸 메일 필터링

 

머신러닝의 종류

 

Supervised learning (지도학습) : 이미 답이 정해져 있는 데이터 (Training set)를 바탕으로 컴퓨터를 학습시킴.

사용 예시) 물체 인식 및 구분 (CIFAR 10), 손글씨 식별 (MNIST), 욕설 차단 프로그램

 

Unsupervised learning (비지도학습) : 답이 정해져 있지 않은 데이터를 바탕으로 컴퓨터를 학습시킴.

사용 예시) 구글 뉴스(https://news.google.com), 단어 군집화 (word clustering) 등

 

Training data set : 머신러닝 모델을 학습시키는데 필요한 데이터의 집합.

가령, 손글씨 인식 문제에서는 손글씨와 그 손글씨가 뭐라고 적혀있는지에 대한 정답,

단어 군집화 문제에서는 수많은 단어들.

 

+ Reinforcement Learning (강화 학습) : 데이터 없이 컴퓨터 혼자 학습하는 것.

에이전트 (컴퓨터)가 주변 상황 및 현재의 상황을 스스로 인식하여, 가장 좋은 방법으로 행동을 취하게 함.

예) 알파고, Atari Pong AI (https://www.youtube.com/watch?v=PSQt5KGv7Vk)

 

Supervised learning 의 종류

 

1. Regression (회귀)

Regression이란, "통계학에서, 회귀 분석은 관찰된 연속형 변수들에 대해 두 변수 사이의 모형을 구한 뒤 적합도를 측정해 내는 분석 방법이다" 위키백과 펌.

쉽게 말하자면, 그냥 원래 있는 데이터들을 바탕으로 다른 데이터들에 대한 정답 구하기.

예) 시험 성적 예측하기

 

2. Classification (분류)

2-1. Binary Classification (이진 분류)

두 가지 정답으로 이루어진 것들을 분류하는 것.

예) 어떤 사진이 개의 사진인지 / 고양이의 사진인지 구분하는 것

예2) 메일을 봤을 때 이게 스팸메일인지 / 그냥 일반 메일인지 구분하는 것

 

2-2. Multi-label Classification (Multinomial Classification이라고도 불림, 다중 분류)

세 가지 이상의 정답으로 이루어진 것들을 분류하는 것.

예) 손으로 쓴 숫자를 봤을 때, 이게 0부터 9까지 어떤 숫자인지 알아맞히는 것.(MNIST)

예 2) 이미지를 봤을 때, 이게 사람의 이미지인지 / 동물의 이미지인지 / 식물의 이미지인지 등으로 분류하는 것.

 

 

+ Recent posts