MLP 란 여러 개의 퍼셉트론 뉴런을 여러 층으로 쌓은 다층신경망 구조
입력층과 출력층 사이에 하나 이상의 은닉층을 가지고 있는 신경망이다.
인접한 두 층의 뉴런간에는 완전 연결 => fully connected 된다.
다층 뉴런은 왜 필요할까? 복잡한 패턴 분류를 위해서는 입출력 간의 복잡한 변환 구조가 필요하다. 사용하는 뉴런의 수를 늘리고 층을 추가하여 복잡한 구조의 의사결정 경계를 생성할 수 있다. 단일뉴런 ( 퍼셉트론)으로는 선형분리 가능한 경계선만 생성가능함. 두개의 뉴런을 결합함으로써 XOR 과 같은 비선형 분리가 가능한 결정선을 생성할 수 있다. 뉴런을 추가함으로써 다각형 모양의 경계선을 생성할 수 있다. => 복잡한 데이터의 분류가 가능해진다! , 일반적으로 다층 신경망은 (MLP 는) 2-3 개 계층으로 구성된다.
MLP 의 구조는 입력층, 은닉층, 출력층의 전방향 신경망이다. (은닉층은 하나 이상!)
1. 활성화 함수
퍼셉트론에서는 step 함수 (계단 함수) 를 활성화 함수로 사용,
MLP 에는 다양한 비선형 함수들을 활성화 함수로 사용
인공 신경망을 통과해 온 값을 최종적으로 어떤 값으로 만들지.
1) step function : 임계값을 미리 설정하고 (threshold value) 임계값 보다 크면 1, 아니면 0
2) Sigmoid fuction : [0,1] 사이의 값
3) Linear function : y =x
4) tanh function : [-1, 1] 사이의 값
5) ReLu function : 양수이면 그대로 , 음수이면 0
6) Leaky ReLU
7) ELU
2. 손실 함수 : 전체 오차는 목표 출력값에서 실제 출력값을 빼서 제곱한 값을 모든 출력 노드에 대하여 합한 값이다 => 평균제곱법(MSE)
3. 역전파 알고리즘 (EBP : Error BackPropagation) : 입력이 주어지면 순방향으로 계산하여 출력을 계산한 후에 실제 출력과 우리가 원하는 출력 간의 오차를 계산한다. 오차를 역방향으로 전파하면서 오차를 줄이는 방향으로 가중치를 변경한다.
4. 다층 신경망의 활용: 다양한 지도 학습 문제에 적용 가능, MNIST 데이터셋에 적용, 스팸 여과기 만들기 !
MLP 를 Google Drive 에서 COLAB 으로 실습해보았다.
Activation function = 활성화 함수는 ReLu를 사용하고 만족스럽지 않으면 LeakyReLU, ELU 를 사용한다.
그래도 만족스럽지 않다면 tanh 를 사용 , Deep learning 에서 Sigmoid 는 사용하지 말자 (Sigmoid 는 MLP 까지만!)
실무적으로는 ReLU 를 가장 많이 사용한다. LeakyReLU/ELU 도 괜찮다.
텐서플로우를 이용한 신경망 모델 구성
- Sequential Model : 주로 이걸로 코딩할 것이다. 아주 쉽고, 1개입력과 1개출력으로 계속 처리한다. 70%의 경우 적용이 가능하다. 입력층에서 부터 차곡차곡 , tf.keas.Sequential
- Functional API : 다중입력 , 다중출력 등으로 처리 , 95% 의 경우에 적용 가능 , model=tf.keras.Input, Model
- Model 서브클래스: 가장 유연하게 사용할 수 있지만 어렵고 복잡하다.
첫번째 레이어 inputlayer 는 세개가 들어온다고 표시해준다 (input_shape(3,)) 으로
hidden layer 는 unit 이 4개로 되어있다.
위의 모델 summary 에는 hidden layer 2개와 outputlayer 를 표시해준다.
param = (input 뉴런 수 + 1) * output 뉴런 수
이제 모델을 살펴봤으니 퍼셉트론으로는 해결할 수 없었던 XOR 을 풀어본다.
100번 실행
손실 그래프를 봤을 때 loss 가 잘 줄어드는 것 처럼 보이지만 사실상 0.257~ 0.253 사이에서 줄어드는걸로 봐선
loss 가 크게 줄어들지 않는 것을 알 수 있다.
'빅데이터 & 인공지능' 카테고리의 다른 글
인공지능 전이학습 (0) | 2020.12.01 |
---|---|
신경망의 딥러닝의 여러가지 문제 (0) | 2020.11.22 |
CNN 알고리즘 (컨벌루션 네트워크) (0) | 2020.10.26 |
기계학습, 머신러닝이란? (0) | 2020.10.19 |
빅데이터란 무엇인가 (0) | 2020.06.02 |