머신 러닝 용어
- 가설 함수(hypothesis) - H(x)
: 문제를 해결하기 위해 가정하는 식 (ex.y = ax + b)
- 가중치(weight)
: y = ax + b에서 변수 x에 어느 정도의 가중치를 곱하는지 결정하는 기울기 a
- 편향(bias)
: y = ax + b에서 데이터의 특성에 따라 따로 부여되는 값 b
머신 러닝에서 y = ax + b => H(x) = wx + b
- 가중합
: 입력 값과 가중치를 모두 곱한 후 바이어스(bias)를 더한 값
- 활성화 함수(activation function)
: 입력된 값을 다음 층으로 넘길 때 각 값을 어떻게 처리할지를 결정하는 함수
: 가중합의 결과를 0 또는 1로 판단하는 함수
- 손실 함수(loss function)
: 실제 값과 예측 값 사이의 오차에 대한 식 (ex.평균 제곱 오차)
- 옵티마이저(optimizer)
: 딥러닝 모델의 학습 과정에서 손실 함수를 최소화하기 위해 모델의 가중치를 업데이트하는 알고리즘 (ex.경사 하강법)
텐서플로에서 실행하는 단순 선형 회귀 - 파이썬 코드로 구현
1. 환경 및 데이터 준비
import numpy as np
import matplotlib.pyplot as plt
# 텐서플로의 케라스 API에서 필요한 함수들을 불러옴
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
x = np.array([2, 4, 6, 8])
y = np.array([81, 93, 91, 97])
2. 모델 실행
- 가설 함수 : H(x) = wx + b
- 출력 값: 출력 값(성적)이 하나이므로 Dense() 함수의 첫 번째 인자에 1 설정
- 입력 변수 : 입력 변수(학습 시간)가 하나이므로 input_dim=1 설정
- 활성화 함수 : 선형 회귀를 다루고 있으므로 activation='linear' 설정
model = Sequential()
# 출력 값, 입력 변수, 분석 방법에 맞게끔 모델 설정
model.add(Dense(1, input_dim=1, activation='linear'))
- 옵티마이저 : 경사 하강법을 실행하려면 optimizer='sgd' 설정
- 손실 함수 : 평균 제곱 오차를 사용하려면 loss='mse' 설정
# 오차 수정을 위해 경사 하강법(sgd)을, 오차의 정도를 판단하기 위해 평균 제곱 오차(mse)를 사용
model.compile(optimizer='sgd', loss='mse')
- 반복 횟수 : epochs에 반복 횟수 입력
# 오차를 최소화하는 과정을 2000번 반복
model.fit(x, y, epochs=2000)
3. 그래프로 확인
plt.scatter(x, y)
plt.plot(x, model.predict(x), 'r')
plt.show()
4. 모델 테스트
hour = 7
prediction = model.predict([hour])
print("%.f시간을 공부할 경우의 예상 점수는 %.02f점입니다." % (hour, prediction))
7시간을 공부할 경우의 예상 점수는 95.12점입니다.
텐서플로에서 실행하는 다중 선형 회귀 - 파이썬 코드로 구현
- 단순 선형 회귀와의 차이점
: 입력 변수가 2개가 되었으므로 input_dim=2 설정
# 1. 환경 및 데이터 준비
import numpy as np
import matplotlib.pyplot as plt
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
x = np.array([[2, 0], [4, 4], [6, 2], [8, 3]])
y = np.array([81, 93, 91, 97])
# 2. 모델 실행
model = Sequential()
# 입력 변수가 2개(학습 시간, 과외 시간)이므로 input_dim에 2를 입력
model.add(Dense(1, input_dim=2, activation='linear'))
model.compile(optimizer='sgd' ,loss='mse')
model.fit(x, y, epochs=2000)
# 3. 모델 테스트
# 임의의 학습 시간과 과외 시간을 집어넣어 점수를 예측하는 모델을 테스트
hour = 7
private_class = 4
prediction = model.predict([[hour, private_class]])
print("%.f시간을 공부하고 %.f시간의 과외를 받을 경우, 예상 점수는 %.02f점입니다" % (hour, private_class, prediction))
7시간을 공부하고 4시간의 과외를 받을 경우, 예상 점수는 97.53점입니다
'모두의 딥러닝 개정 3판'의 내용과 https://github.com/taehojo/deeplearning의 코드 참고
'AI > 모두의 딥러닝' 카테고리의 다른 글
[모두의 딥러닝] 9. 인공 신경망(artificial neural network, ANN), XOR 문제 (0) | 2023.05.22 |
---|---|
[모두의 딥러닝] 8. 로지스틱 회귀(logistic regression), 시그모이드 함수(sigmoid function), 교차 엔트로피 함수(cross entropy function) (0) | 2023.05.19 |
[모두의 딥러닝] 6. 다중 선형 회귀(multiple linear regression) (0) | 2023.05.18 |
[모두의 딥러닝] 5. 경사 하강법(gradient decent) (0) | 2023.05.16 |
[모두의 딥러닝] 4. 평균 제곱 오차(Mean Square Error, MSE) (0) | 2023.05.16 |