@@@ 인공지능/수학·통계를 몰라도 이해할 수 있는 쉬운 딥러닝

1 - 1.인공신경망과 딥러닝

HTG 2021. 7. 1. 17:42
728x90

통계와 머신러닝

베이즈 통계학

베이즈 정리 - 사후 확률을 추론하는 기법

베이즈 통계학 - 베이즈 정리를 이용하여 통계학적 문제에 접근하려는 시도

 

베이즈 통계학에서 어떤 사건의 확률은 사건이 일어나는 빈도가 아니라 사건에 대한 신뢰도로 정의

베이즈 확률을 사람의 손으로 계산하는 것은 어려움 -> 컴퓨터의 계산 능력의 향상 -> 베이즈 확률을 추론할 수 있는 여러 알고리즘이 등장 (특히, 나이브 베이즈 모델)

 

머신러닝

머신러닝은 베이즈 확률을 표현하기 위한 수학적 모델을 만드는 것에 기여

로지스틱 회귀 - 통계 기법, 머신러닝 기법의 일종, 데이터를 분석하여 사건의 발생 가능성을 예측

                     다양한 분야에 적용되어 분류 및 예측 문제를 해결 -> 베이즈 확률론이 현실 문제 해결에 적용가능을                         입증

 

뇌세포를 모방한 기계, 퍼셉트론

뉴런(신경세포)

인간의 뇌와 척수의 구성요소

뉴런은 함수와 비슷한 역할을 하기 때문에 수학자들이 이를 수학적인 표현으로 바꾸고자함 

이렇게 나온 것 중 하나가 가장 널리 알려진 모델인 퍼센트론(perceptron)

 

퍼셉트론(perceptron)

입력값에 가충치를 곱한 값을 모두 더하여 하나의 정돈된 통합 입력값 X를 만드는 과정이 퍼셉트론의 구조이자

작동원리

 

활성화 함수(Activation Function)

뉴런은 0 또는 1을 출력하는 기계 -> 이를 모방한 것이 퍼셉트론

그래서 조금 더 뉴런과 비슷하게 모사하기 위해 퍼셉트론의 출력값을 뉴런의 출력값과 유사하게 다듬어주려는 시도

-> 이를 위한 도구가 활성화 함수

 

대표적인 4가지 활성화 함수

  • 시그모이드 함수(Sigmoid function)

입력값을 0부터 1사이의 값으로 다듬어주는 함수.

입력값이 클수록 1에 가까운 값을 작으면 작을수록 0에 가까운 값이 출력.

  • 하이퍼볼릭 탄젠트 함수(tanh, hyperbolic tangent function)

입력값을 -1 ~ 1 사이의 값으로 다듬어주는 함수.

원점 기준으로 대칭, 입력값이 크면 클수록 1에 가까운 값을 작으면 작을수록 -1에 가까운 값을 출력.

뉴런의 on-off작동을 모사할 수 있다는 점에서 애용되었지만, 최근 음수값을 사용하지 않으려하면서 선호도가 낮아짐.

  • 렐루(ReLU, Rectified Linear Unit)

0보다 작은 값은 0으로, 큰 값은 그대로 출력하는 함수.

단일 뉴런보다는 여러 개의 뉴런으로 구성된 신경 다발의 정보전달 형상에 가까움.

뉴런의 활동을 모사하기보다는 기울기 소실 문제(vanishing gradient problem)라는 딥러닝 고질적 문제를 해결하기 위한 방법.

대부분의 경우에서 우수한 성능을 보임.

 

기울기 소실 문제 - 출력층과 거리가 멀어질수록 이 기울기가 작아지며 가중치 수정이 잘 안되는 문제

  • 리키 렐루(Leaky ReLU)

렐루 함수와 달리 0보다 작은 값도 버리지 않음.

원본 그대로 출력하는 것은 아니고 약간 더 작은 값을 출력.

몇몇 사례에서는 렐루보다 월등한 성능을 보임.

 

인공신경망과 딥러닝

인공신경망(Artificial neural network)

인공적인 신경을 그물처럼 연결한 것, 퍼셉트론을 이리저리 연결하면 그것을 인공신경망이라 부름.

일반적으로 마구잡이로 연결하기보다는 한번에 한 층씩 쌓아 올림(한층의 신경망은 하나의 행렬로 표현가능하여 계산이 쉬움)

 

딥러닝

인공신경망을 여러 층으로 올리는 것을 다층 퍼셉트론이라 부름.

이러한 다층 퍼셉트론을 사용한 머신러닝 알고리즘을 딥러닝이라고 부름.

입력층 - 은닉층 - 출력층 으로 구성되어있음.

은닉층의 가중치를 수정할 방법이 없었으나 역전파하는 기법을 통해 가능해짐.

이렇게 제작된 다층 퍼셉트론은 입력받은 정보를 앞으로 전달 -> 이러한 특성때문에 다층 퍼셉트론을 FNN(Feedforward neural network)라고 부름.

이러한 딥러닝을 코딩하기 위해서 텐서플로와 케라스가 등장.

 

 

분산과 편향

딥러닝이 전통적인 머신러닝 방법보다 좋은 이유는 분산이 크기때문.

현실세계의 데이터는 분산이 크기 때문에 분산이 큰 딥러닝이 유리, 하지만 데이터가 작으면 분산이 큰 모델은 잘 학습하기 어려움

-> 그래서 딥러닝(분산이 높은 모델)과 빅데이터를 합쳐서 사용하고자 노력하고있음