Mathpresso 머신 러닝 스터디 — 8. 인공신경망(Artificial Neural Network)

.

매스프레소(콴다)

2부 — 그래서 어떻게 쓰면되지?

.

이제 실제로 인공신경망을 문제 해결에 사용해 보겠습니다.

.

이 것은 지난 시간에 시스템 모델링 했던 뉴런 모델입니다.

Neuron을 시스템 모델링 한 것

.

위와 같은 모델은 수학적으로 표현하고 다시 그려보면

뉴런의 수학적 표현

위와 같이 표현할 수 있습니다.

.

수학적 표현 확대

뉴런의 수학적 표현

입력값들(X)에 가중치를 두어(W) 값(f(x))을 구하고 그 값과 임계치와의 관계를 활성함수(active function)로 판단하여 결과값을 출력하는 것입니다.

.

이때 활성함수는 뉴런에서 임계값을 넘었을 때만 출력하는 부분을 표현한 것으로 다양한 방법이 있습니다.

.

step 함수 — 임계값 넘으면 1

sigmoid 함수 — 임계값 기준으로 S 자 형태

Relu 함수 — 임계값 이하는 0, 임계값 넘으면 선형 증가

등등 많은 방식이 있습니다.

.

https://www.quora.com/What-is-the-role-of-the-activation-function-in-a-neural-network

hunkim.github.io/ml/ > Vanishing Gradient 를 위해 Sigmoid 보단 ReLu를 사용합니다.

.

이런 활성 함수들의 성능 또한 매우 다양합니다.

어떤 활성 함수를 쓰느냐에 따라서 학습 속도나 정확도가 달라집니다.

(논문들 중에는 다양한 활성 함수를 사용해보면서 성능 변화를 관측하는 것들도 있습니다.)

.

그러면 오늘 예제는 이전에 했었던 MNIST 사진 분류를 재활용 해보겠습니다.

참 좋은 예제 MNIST

.

이전 예제들에서 로지스틱 회귀와 KNN 방식으로 학습을 했었는데

오늘은 DNN(Deep Neural Network)으로 한번 해보겠습니다.

.

은닉층이 2개인 DNN을 이용해서 학습을 해보니

(활성 함수 — ReLu, 분류 방식 — softmax)

95% 정도의 정확도를 나타내는 것을 보입니다.

.

( MNIST_MultipleLayerPerceptron.py

> setting: python 3.5, tensorflow,numpy)

proauto/ML_Practice ML_Practice -Python(with Tensorflow)github.com

.

학습 과정과 결과

.

물론 로지스틱 회귀를 했을 때보다 시간이 훨씬 많이 걸리기는 하지만

성능은 매우 우수한 것을 볼 수 있습니다.

.

개념은 매우 복잡해졌지만 코드 상으로 단순 로지스틱 회귀보다 크게 길어지지도 어려워지지도 않았습니다.

.

또한 은닉층 개수를 많이 늘릴 수 있는 컴퓨터 환경이 구축되어서 인공신경망 분야는 매우 각광받게됩니다.

.

DNN(Deep Neural Network), CNN(Convolution Neural Network), RNN(Recurrent Neural Network), Deep Q-Networks 등등 기존의 한계 극복 혹은 새로운 방식으로 발전하고 있습니다.

(이제 인공신경망이라는 단어보다는 딥러닝(Deep Learning)이라는 단어를 선호하는 듯 합니다.)

.

새로운 방식들을 소개하고 싶지만 하나하나 매우 광범위한 내용을 포함하기에 훗날을 기약하고

.

다음 시간에 비지도학습 — 군집화(Clustering) 를 주제로 돌아오겠습니다.

.

cf) 오탈자 혹은 잘못된 개념에 대한 피드백은 항상 환영합니다.

머신러닝 추천 강의 & ReLu 사진 출처

hunkim.github.io/ml/

기업문화 엿볼 때, 더팀스

로그인

/