안녕하세요!! 모두를 위한 딥러닝 강의를 수강하며 ai스터디에 참가중인 cyun입니다.
실습은 코랩으로 진행 하였고, 관련 자료를 찾아보며 공부한 내용을 정리하여 올리게 되었습니다.
이번에 정리할 내용은 AI, 머신러닝, 딥러닝에 관한 간략한 개념 설명과, 02, 03강의 내용과 실습 코드에 대한 부분 입니다.
우선 AI는 Artificial Intelligence의 약자로 크게는 기능의 범위에 따라 ANI(Artificial Narrow Intelligence)와 AGI(Artificial General Intelligence)로 나누어 집니다.
이때 AI를 학습시키는 방법으로 머신러닝이 등장합니다. 기계를 학습시키는 방법으로는 Supervised learning과 Unsupervised learning이 유명합니다. Supervised learning은 학습시키는 과정에서 라벨을 만들어 붙여 학습을 시키는 방법으로, 계발자가 준 라벨을 토대로 기계가 판단을 하게 됩니다. 반대로 Unsupervised learning은 인간이 데이터를 분류하지 않고, 기계 스스로 프로세싱 파워와 데이터를 토대로 문제를 해결(ex. 사진 식별)하는 방법입니다.
딥러닝은 머신러닝을 달성하기 위한 방법으로, neural network를 이용해 사람의 뇌 처럼 작동하는 알고리즘 입니다.
모두를 위한 딥러닝 첫 강의는 선형 회귀에서 시작합니다.
Simple Linear Regression
Regression이란? "전체의 평균으로 되돌아간다."라는 의미입니다.
러닝의 목적이 cost minimize이므로 Hypothesis(가설)의 값을 H(x) = Wx + b라고 가정하여 최소비용을 구할때 H(x)-y (cost) 를 최소화하여야 하므로, cost의 값은 아래와 같습니다.
아래는 코랩을 통해 실습을 하고 확인한 코드들 입니다.
우선 코랩의 버전을 확인한 뒤 텐서플로우와 넘파이 라이브러리를 가져와 data를 임의로 설정해 그래프 상에 표시해 줍니다.
그리고 가설 H(x)를 그래프 상에 표시시켜줍니다.
앞에서 설명한것 처럼 최소의 cost값을 위해 계산을 하면 전체 평균에 맞춰진 것을 확인할 수 있습니다.
minimize cost
Simplifed hypothesis
b를 W 행렬에 넣어 표현할 수 있기 때문에 생략 가능하다고 합니다.
Cost function
W = -1, cost(W) = 18.67
W = 0, cost(W) = 4.67
W = 1, cost(W) = 0
W = 2, cost(W) = 4.67
텐서플로우에서 cost function을 확인하면 아래와 같습니다.
그렇다면 cost가 최소화되는 W를 어떻게 찾을 수 있을까요?
- Gradient descent algorithm
- Minimize cost function
- 많은 최소화 문제에 사용됨
- Gradient descent algorithm의 동작
- 0, 0에서 시작
- W와 b의 값을 조금씩 바꿔가며 cost(W, b)를 줄이기
- 매개변수를 변경할때마다 cost를 가장 많이 줄일 수 있는 (W,b)를 선택
- local minimum으로 수렴할 때 까지 반복
- 시작 위치를 통해 어떤 최소값을 얻을 수 있는지 결정
http://www.holehouse.org/mlclass/01_02_Introduction_regression_analysis_and_gr.html
- foramal definition
- W = W - 변화량
- 변화량 = 현 위치(W)에서 비용곡선의 기울기(=미분값) X
따라서 Gradient descent algorithm의 식은 다음과 같습니다.
- Conves function
Gradient descent algorithm을 사용하려면, 비용함수 cost(W,b)가 Convex function 이어야합니다.
- Gradient descent 구현
tf.random.set_seed(0) # for reproducibility
x_data = [1., 2., 3., 4.]
y_data = [1., 3., 5., 7.]
W = tf.Variable(tf.random.normal([1], -100., 100.))
for step in range(300):
hypothesis = W * X
cost = tf.reduce_mean(tf.square(hypothesis - Y))
alpha = 0.01
gradient = tf.reduce_mean(tf.multiply(tf.multiply(W, X) - Y, X))
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]))
머신러닝 vs 딥러닝 vs 인공지능? A.I. 개념정리! - YouTube
ML lec 01 - 기본적인 Machine Learning 의 용어와 개념 설명 - YouTube
[TensorFlow] Lec-02-Simple Liner Regression - YouTube
'AI' 카테고리의 다른 글
[AI-3Team] 소프트맥스 회귀(Softmax Regression) 다중 클래스 분류 (0) | 2021.01.13 |
---|---|
[ai-1team] 6. Recurrent Neural Network (0) | 2021.01.08 |
[ai-1team] 5. Convolutional Neural Network (0) | 2021.01.01 |
[AI-3Team] 다변수 선형 회기(Multi Variable Linear Regression) (0) | 2020.12.29 |
[AI-3Team] Logistic Regression (0) | 2020.12.27 |