머신러닝의 용어와 개념
인공지능의 한 분야이다.
(사람이 학습하듯이 컴퓨터에도 데이터들을 줘서 학습하게 함으로써 새로운 지식을 얻어내게 하는 것)
어떠한 자료나 현상을 바탕으로 프로그램이 학습해서 일을 함
학습에는 2가지 방법이 있다.
- 정해진 Data (supervised learning)
- Data 스스로 학습 (unsupervised learning)
1. Supervised Learnig은 컴퓨터가 입력값과 그에 따른 출력 값이 있는 data set을 이용하여 주어진 입력에 맞는 출력을 찾는 학습 방법이다. 입력된 문제에 대한 답을 예측하는 데 사용된다. ex) 상품 추천, 질병 진단 등
학습 훈련 데이터(training data)가 필요하다. 예로, 개와 고양이 사진을 구분하는 것을 들 수 있다. 이때 입력은 사진이고, 출력은 개 또는 고양이인지의 여부가 된다. 또 다른 예시로 사과 사진들을 주고 컴퓨터가 이것이 사과라는 것을 알게 해 준다.
<Types of supervised learning>
- regrssion ( 시험공부 시간에 따른 시험 점수 예측 )
- binary classification ( Pass-Fail 구분 )
- multi-lable classification ( ABCDF 구분 )
2. Unsupervised Learning은 입력값만 있는 data set을 이용하여 AI가 규칙성을 찾아내야 하는 학습 방법이다.
선형 회귀 (Linear Regression)
✔ Regrssion이란 뭘까?
전체의 평균으로 수렴한다? 되돌아간다? 회귀한다?라는 뜻이다.
데이터들을 대변하는 하나의 직선 y=ax+b를 가설 함수(예측 함수)로 만들어 보면 H(x)= Wx+b 가 된다.
H(x) - y의 차이가 적을수록 직선이 데이터들의 분포를 잘 설명하고 있다고 할 수 있다.
✔How to minimize cost?
어떻게 실제 데이터와 비슷하게 만들어 낼 수 있을까? 바로 Gradient descent 알고리즘을 사용한다.
cost가 최소가 되는 W, b를 찾는 알고리즘
# Gradient descent를 tensorflow로 구현하고 반복문을 사용
# 실제 데이터 x=1,2,3,4,5 y=1,2,3,4,5 일 때
for i in range(100):
with tf.GradientTape() as tape:
hypothesis = W * x_data + b
cost = tf.reduce_mean(tf.square(hypothesis - y_data))
W_grad, b_grad = tape.gradient(cost, [W, b])
W.assign_sub(learning_rate * W_grad)
b.assign_sub(learning_rate * b_grad)
결과는 초기값 W=2.9, b=0.5 일 때, 여러 번 반복함으로써 정확도가 올라가기 때문에 W는 1에 수렴하고 b는 0으로 수렴하며 cost(실제 데이터와의 차이)는 줄어든다.
# Cost function in TensorFlow
def cost_func(W, X, Y):
hypothesis = X * W
return tf.reduce_mean(tf.square(hypothesis - Y))
✔ Gradient descent
# 발표자료의 코드를 수정하였습니다. x를 x_data, y를 y_data, w는 1이 아니라 1.6으로 수렴합니다.
# 실제 데이터 값 (y=2x-1)이지만 간략화 하여 (y=1.6x)로 가능
tf.random.set_seed(0)
x_data = [1., 2., 3., 4.]
y_data = [1., 3., 5., 7.]
# W값 초기설정
W = tf.Variable([5.0]) # W값이 무엇이던 간에 반복을 통해 W는 cost가 최소인 대략 1.6으로 수렴함
for step in range(300):
hypothesis = W * x_data
cost = tf.reduce_mean(tf.square(hypothesis - y_data))
# gradient descent 수식을 코드로 작성
alpha = 0.01
gradient = tf.reduce_mean(tf.multiply(tf.multiply(W, x_data) - y_data, x_data))
descent = W - tf.multiply(alpha, gradient)
W.assign(descent)
if step % 10 == 0:
print('{:5} | {:10.4f} | {:10.6f}'.format(step, cost.numpy(), W.numpy()[0]))
1주 차 중요 내용
- 머신 러닝의 2가지 학습 방법
- Cost 함수의 값은 작을수록 실제 데이터와 비슷하다는 뜻
- Gradient descent는 경사를 따라 기울기가 최소일 때까지 찾아가는 알고리즘
'Group Study (2022-2023) > Machine Learning' 카테고리의 다른 글
[Machine Learning] 3주차 스터디 - Softmax Regression (0) | 2022.10.31 |
---|---|
[Machine Learning] 4주차 스터디 - Application & Tips (0) | 2022.10.31 |
[Machine Learning] 2주차 스터디 - Multi variable linear regression & Logistic Regression (0) | 2022.10.10 |
[Machine Learning] 2주차 스터디 - CNN의 이해(2) (0) | 2022.10.10 |
[Machine Learning] 1주차 스터디 - CNN의 이해(1) (0) | 2022.10.06 |