-
[HandsOn]10. 케라스를 사용한 인공 신경망 - 내용 정리1[도서완독]Hands On Machine Learning 2022. 6. 28. 19:36
1~2
3. 10.2.3까지
인공 신경망의 초창기 구조를 간단히 소개
다층 퍼셉트론(MLP) 소개
케라스 API를 사용하여 인공 신경망을 구현하는 방법
10.1 생물학적 뉴런에서 인공 뉴런까지
현재는 인공 신경망의 또 다른 부흥기
- 신경망을 훈련하기 위한 데이터가 많아짐. 인공신경망은 규모가 크고 복잡한 문제에서 머신러닝 기법보다 좋은 성능을 냄
- 컴퓨터 하드웨어의 발전, GPU 카드의 생산, 클라우드 플랫폼
- 훈련 알고리즘의 향상
- 투자와 진보의 선순환
10.1.2 뉴런을 사용한 논리 연산
생물학적 뉴런에서 착안한 매우 단순한 신경망 모델 제안-> 이것이 나중에 인공 뉴런이 됨
하나 이상의 이진(on/off) 입력과 이진 출력을 가짐
1. 항등 함수: A가 활성화되면 C 활성화. 반대로는 꺼짐
2. 논리곱 연산: A,B가 활성화 되었을 때만 C가 활성화. 하나라도 꺼지면 안됨
3. 논리합 연산: 하나만 활성화되어도 C가 활성화됨.
4. A활성화, B 비활성화시 C가 활성화
10.1.3 퍼셉트론
퍼셉트론은 가장 간단한 인공 신경망 구조 중 하나
입력과 출력이 어떤 숫자, 입력 연결은 가중치와 연관되어 있음
입력의 가중치 합을 계산(입력값, 가중치의 선형결합 z= x^t w) 한 뒤 계산된 합에 계단 함수를 적용하여 결과를 출력
$$h_w (x) = step(z) $$
TLU 퍼셉트론에서 가장 널리 사용되는 계단 함수: 헤비사이드 계단 함수 or 부호 함수
부호 함수임 ㅎㅎ TLU는 간단한 선형 이진 분류 문제에 사용할 수 있음.
입력의 선형조합을 계산해서, 계단함수에 통과-> 1이면 양성 클래스를 출력하는 듯
하나의 TLU로 (x0=1을 추가한 후) 꽃잎 길이, 너비를 기반으로 품종을 분류할 수 있다.TLU 를 훈련한다는 것: 최적의 가중치를 찾자!
입력 2개, 출력 3개로 구성된 퍼셉트론. 3개의 이진 클래스로 분류 가능 퍼셉트론은 TLU 로 구성.각 TLU는 모든 입력에 연결되어 있음.
완전 연결층, 밀집층: 한 층의 뉴런이 이전 층의 모든 뉴런에 연결되어 있을 때, 이를 완전 연결 층이라고 함.
완전 연결층의 출력 계산
$$h_{W,b}=\phi(XW+b)$$
간단하게 행렬로 이해해봄 - 퍼셉트론은 어떻게 훈련될까?
퍼셉트론에 한 번에 한 개의 샘플이 주입되면 각 샘플에 대해 예측이 만들어진다.
잘못된 예측을 하는 모든 출력 뉴런에 대해 올바른 예측을 만들 수 있도록 입력에 연결된 가중치를 강화시킨다.
$$w_{i,j}^{(next step)}=w_{i,j}+\eta(y_j - \hat{y_j})x_i$$
사이킷런에서는 하나의 TLU 네트워크를 구현한 Perceptron 클래스를 제공함.
퍼셉트론은 클래스 확률을 제공하지 않으며, 고정된 임곗값을 기준으로 예측을 만듬.
퍼셉트론은 XOR 문제를 풀 수 없음.
퍼셉트론을 여러개 쌓아올리면 일부 제약을 줄일 수 있다-> 다층 퍼셉트론(MLP)
10.1.4 다층 퍼셉트론과 역전파
은닉층을 여러개 쌓아 올린 인공 신경망: 심층 신경망 (DNN)
- 역전파 훈련 알고리즘
- 각 미니배치는 입력층으로 전달-> 첫번째 은닉층으로 보내짐 -> 출력 계산-> 다음 층으로 전달-> 출력 계산-> 다음층으로 전달.....마지막 층인 출력층의 출력을 계산 (정방향 계산)
- 손실 함수를 사용하여 예측된 출력과 실제 출력을 비교하고 오차값 반환
- 출력 연결이 오차에 기여하는 정도를 계산
- 연쇄 법칙을 사용하여 이전 층의 연결 가중치가 이 오차의 기여 정도에 얼마나 기여했는지 측정.... 역방향으로 계속
- 경사 하강법을 수행하여 네트워크에 있는 모든 연결 가중치를 수정
이 알고리즘을 잘 작동시키기 위해, 스텝 함수 대신 로지스틱 함수, 하이퍼볼릭 탄젠트 함수, Relu 함수 등을 사용.
https://ko.d2l.ai/chapter_deep-learning-basics/mlp.html
3.8. 다층 퍼셉트론 (Multilayer Perceptron) — Dive into Deep Learning documentation
ko.d2l.ai
(함수의 형태와 도함수를 나타낸 페이지)
왜 활성화 함수가 필요할까?
선형 변환을 여러개 연결해도 선형 변환.... 이렇게는 복잡한 문제를 풀 수 없음.
비선형 활성화 함수가 있는 충분히 큰 심층 신경망은 이론적으로 어떤 연속 함수도 근사할 수 있음!
10.1.5 회귀를 위한 다층 퍼셉트론
회귀용 다층 퍼셉트론데서는 출력 뉴런에는 활성화 함수 사용x (모든 범위의 값을 출력 가능하게)
범위에 따라 적절한 활성화 함수 사용
손실함수는 MSE, 훈련 세트에 이상치가 많다면 MAE, 또는 이 둘을 조합한 후버 손실
10.1.6 분류를 위한 다층 퍼셉트론
- 이진 분류 문제에 사용 가능, 출력은 0~1로 양성 클래스에 대한 확률로 해석 가능
- 다중 레이블 이진 분류 문제 처리 가능 (스팸 메일인지 and 긴급한 메일인지)
- 각 샘플이 3개 이상 클래스 중 한 클래스에만 속할 수 있을 때(다중 분류),
출력층에는 소프트맥스 활성화 함수 사용해야 함 (각각의 확률의 합=1)
손실 함수에는 일반적으로 크로스 엔트로피 손실을 씀
'[도서완독]Hands On Machine Learning' 카테고리의 다른 글
[HandsOn]10. 케라스를 사용한 인공 신경망 - 내용 정리 3 (0) 2022.07.01 [HandsOn]10. 케라스를 사용한 인공 신경망 - 내용 정리2 (0) 2022.07.01 [HandsOn]12. 텐서플로를 사용한 사용자 정의 모델과 훈련 - 연습문제 (0) 2022.02.15 [HandsOn]11.심층 신경망 훈련하기- 연습문제 (0) 2022.01.19 [HandsOn]10. 케라스를 사용한 인공 신경망- 연습문제 (0) 2022.01.12