AI란 무엇인가?
머신러닝 이해하기
머신러닝은 컴퓨터가 다양한 머신러닝 학습 모델을 기반으로 제공된 데이터를 이용해 학습을 수행하고, 모델의 성능을 반복적으로 평가하며, 스스로 성능을 향상하는 것을 말한다.
제공된 각 데이터별 상관관계와 특성을 찾아내고 결론을 예측할 수 있다.
딥러닝 이해하기
딥러닝은 머신러닝과는 구분되지만 큰 틀에서는 머신러닝에 포함된 기술이다.
딥러닝은 사람의 뇌 신경망이 학습하는 방식에서 영감을 얻은 학습 방식으로, 레이어를 겹겹이 쌓고, 레이어 내 노드를 구성해 학습을 진행한다.
최종적으로 모든 레이어를 거치면 전체 학습 성능을 평가하고 오차를 통해 딥러닝 모델의 성능을 향상하기 위한 가중치를 재계산 하는 과정을 반복한다.
딥러닝은 머신러닝에 비해 연산이 기하급수적으로 늘어나 성능은 좋지만 연산에 필요한 시간과 자원이 많이 소요된다는 단점이 있다.
지도학습 이해하기
지도학습은 정답을 알려주며 학습시키는 방식이다. 동그라미와 세모를 보여주면 다르다는 것은 인지하지만 뭐가 다른지는 모르기 때문에 동그라미와 세모를 알려줘야 학습하고 분류해낼수 있다.
이처럼 지도학습은 정답이 있어야만 학습을 진행할 수 있고, 정답은 레이블이라고도 불리며, 데이터에 레이블을 입력해 주는 것을 레이블링 이라고 한다.
비지도학습 이해하기
비지도 학습은 정답이 없는 상태에서 입력 데이터만 가지고 학습하는 방법이다.
정답이 없기 때문에 구체적인 결과보다는 군집화를 예측할 때 주로 사용된다. 군집화는 주어진 데이터를 기반으로 그 값이 유사한 데이터들의 그룹을 나누는 것으로, 대표적으로 k-means 군집화에서 k란 입력된 데이터를 몇 개의 그룹으로 나누느냐 하는 것이다.
k의 값은 사용자가 선택해야 하며, k개 군집의 중심점부터 가까운 데이터들을 그룹핑한 결과이다.
머신러닝으로 AI 모델링하기
# 라이브러리 불러오기
import matplotlib.pyplot as plt
import numpy as np
# 랜덤 시드 고정하기
np.random.seed(2023)
# x는 1~10, y = 4x +7인 학습 데이터 생성하기
x=[]
y=[]
for i in range(1,11):
x.append(i)
y.append(4*i+7)
# 데이터 확인하기
print('x : ', x)
print('y : ', y)
머신러닝을 테스트 하기위해서 학습 데이터를 만들었다.
내용은 y = 4x + 7이라는 규칙을 가지고 있다.
# 선형 회귀 라이브러리 불러오기
from sklearn.linear_model import LinearRegression
# 선형 회귀 생성하기
reg = LinearRegression()
# 학습을 위해 1행 10열 구성 데이터를 10행 1열로 변경하기
x = np.array(x).reshape(-1,1)
# 데이터 확인하기
print('학습 데이터 확인')
print('x : ',x)
print('x.shape : ',x.shape)
학습을 위해서 AI에게 줄 x값을 확인한다.
x는 1부터 10까지 증가한다.
# 학습하기
reg.fit(x,y)
# 산식 추정을 위한 기울기 및 절편 확인하기
print(f'''기울기 및 절편 확인 coef = {reg.coef_}, intercept = {reg.intercept_}''')
# 절편과 기울기로 결과를 수동으로 계산하여 비교값 생성하기
coef_intercept = x * reg.coef_[0] + reg.intercept_
print('계산 결과')
print(coef_intercept)
학습을 시킨 후 AI에게 x값을 줬더니 이전에 학습한 y = 4x + 7이라는 공식을 학습해서 x값을 가지고 y값을 도출해냈다.
# scatter plot 그래프 그리기
plt.scatter(x, y, color = 'r', s = 20)
# 선 그래프 그리기
plt.plot(x, coef_intercept, color = 'orange')
# coef 값 그래프 내에 텍스트 삽입하기
plt.text(7, 20, 'coef = %.0f'%reg.coef_[0], size = 12)
# intercept 값 그래프 내에 텍스트 삽입하기
plt.text(7, 18, 'intercept_=%.0f'%reg.intercept_, size = 12)
# x축(가로) label 설정하기
plt.xlabel('x')
# y축(세로) label 설정하기
plt.ylabel('y')
plt.show()
빨간 점은 수동으로 계산한 값이고, 주황색 선은 AI가 실제로 학습한 후 도출해낸 값을 나타낸다.
위의 그래프는 AI가 도출해낸 값이 예측한 값과 얼마나 일치하는지를 시각적으로 보여준다.
이 경우에는 예상과 일치한 결과를 도출해냈다.