메인메뉴 바로가기 본문으로 바로가기

마산중앙고등학교

검색열기

AI 로봇선도학교

AI 발달과정1

메인페이지 AI 로봇선도학교AI 발달과정1

AI 발달과정1


AI 발달과정 1

 

김성두  

 

 


machine learning.jpg

 

머신러닝의 목표는 Data Mining 이라 할 수 있으며 머신러닝이 딥러닝을 포함하고 

머신러닝의 Logistic Regression 에서 Deep Learning 으로 발전되어 가고 있다고 할수 있지만,

여기서는 이야기 전개의 편리성을 위하여 지도학습을 머신러닝, 비지도학습을 딥러닝의 대표적인 방법이라고 정한다.

 

 

1. 머신러닝에서 미분이 사용되는 이유

 

예) 현재 체중이 100일때 체중의 변화에 영향을 주는 음식물 섭취 종류, 운동량, 기온 등의 여러 요소가 변하면 어떤 결과값을 나타내는지 알아보는 경우

  - 각 요소들의 변화량에 따른 산출값의 변화는 미분이 가장 잘 나타내고 미분은 이미 수학적으로 증명이 되어있기 때문.

  - 알고리즘으로 미분의 구현이 가능하기 때문.

 

 

2. 미분의 구현

미분2.jpg

 

 위 미분의 정의에서  함수 f(x)를


미분3.jpg

 

로 두고  x = 5에서 미분계수 구하는 과정을 파이썬으로 코딩하면 의외로 간단히 구현되며 아래과 같다.

 

 

def myfunction(x):

    return x**2

 

def differ(f, x):

    deltaX = 1e-4

    return (f(x + deltaX) - f(x - deltaX)) / ( 2 * deltaX)

 

result = differ(myfunction, 5)

 

print("result = ", result)

 

 

실행을 해보면 결과는 result = 9.999999999976694 로 나오며 실제 미분한 값 10과 비슷하게 출력됩니다.

 

 

3. 결과값 예측의 경우

 

입력(x)에 대하여 출력( y)인 경우는 y=Wx + b 의 형태로 나타낼수 있음

기울기 W 는 가중치, b 는 비아어스, 정답은 t, 라고 할때  

 

오차 = t- y = t - (Wx + b)

 

로 계산되어 진다

따라서 선형회귀에서는 오차가 최소가 되는 W 와 b 를 찾는 것이 중요해진다.

 

그러나 오차의 경우는 + - 로 나오는 경우는 최소 오차값을 확인하기가 어려우므로 통계에서 사용하는 분산의 개념을 가지고 와서 판단한다.

 

즉 오차를 계산할때에는 위의 양변에 제곱을 시킨

 

미분4.jpg

을 사용한다.

이것을 모으면 손실함수의 값은 아래와 같으며 

 

미분5.jpg

 

손실함수가 최소가 되는 경우는 2차 함수로 나타나게 된다.

 

 

4. 경사하강법

이차함수.jpg

손실이 최소가 되는 경우는 2차함수 즉 포물선의 꼭지점이 되고 

미분값이 0 으로 수렴하는 과정을 반복적으로 실행하는 것을 경사하강법이라 한다.

편미분에서의 과정도 동일한 과정을 거치게 된다.

 

 

5. 딥러닝

 

입력 신호를 받아 임계점을 넘는 경우에만 출력이 되는 함수( 시그모이드 함수 등)  활용하면 인간 뉴런의 신경망과 닮은 인공신경망을 구성할 수 있다.


시스모이드1.jpg

       (  sigmoid function)

 

이것은 아래와 같이 신경망 구성을 레이어를 이용하여 만든다.

 

   입력층  -  은닉층1 - 은닉층2 - ---  은닉층n - 출력층

 

위의 구조를 활용하면 이미지 인식, 필기체 인식이 가능해진다.

여기에서 은닉층의 갯수를 많이 할수록 정확도가 올라가기 때문에

많이 할수록 = 깊이 개념을 적용하여 딥러닝 이라는 용어를 사용하게 된것이라 추측된다.

 

 

6. 오차역전파

 

더 정확한 값을 구하기 위해 출력층의 오차로 앞 층 (은닉층)의 오차를 역추적하는 과정을 이야기 하며

위 딥러닝에서 은닉층의 개수가 많을때 미분연산을 통하여 오차를 줄이려하면 시간이 많이 소모되므로 미분 대신에 행렬의 합 곱으로 대체하는 방법을 찾게 되면서 연산시간을 줄이게 된다. 

간단한 행렬의 계산은 퍼포먼스가 낮은 반도체에서도 가능하기에 딥러닝을 위한 연산은 그래픽 카드로도 가능하며 구글에서는 자체적으로 개발한 엔진을 사용하기도 한다.