일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 2023공공빅데이터청년인재양성후기
- textmining
- 머신러닝
- k-means
- DL
- 공빅데
- 텍스트마이닝
- 클러스터링
- 데이터전처리
- 오버샘플링
- machinelearning
- DeepLearning
- 분석변수처리
- NLP
- decisiontree
- 공공빅데이터청년인턴
- 빅데이터
- ADsP3과목
- datascience
- 공빅
- data
- ADSP
- Keras
- SQL
- 데이터분석
- 공공빅데이터청년인재양성
- 2023공빅데
- ML
- 2023공공빅데이터청년인재양성
- Kaggle
- Today
- Total
愛林
[Python/DL] 분류 알고리즘 (Classification Algorithm) : 인공신경망 (ANN : Article Neural Network) 본문
[Python/DL] 분류 알고리즘 (Classification Algorithm) : 인공신경망 (ANN : Article Neural Network)
愛林 2022. 10. 14. 14:532022.12.07 + 교육 내용 추가
인공신경망 (Article Neural Network : ANN)
인공신경망이란, 인간 뇌를 기반으로 한 추론 모델이다.
뉴런을 기본적인 정보처리 단위로 하여 만든 시스템이다.
인간의 뇌는 100억개의 뉴런과 6조 개의 시냅스로 이루어진 복합적 시스템이다.
그에 따라 인간의 뇌는 현존하는 어느 컴퓨터보다 빠르고 복잡하고 비선형적이다.
적응성에 따라서 잘못된 답에 대한 뉴런들 사이의 연결은 약화되고,
올바른 답에 대한 연결이 강화된다.
뉴런은 여러 입력신호를 받지만, 출력신호는 단 하나만 생성한다.
이 신경망은 가중치(Weight) 를 반복적으로 조정하며 학습한다.
인공 신경망은 신경망의 가중치를 초기화하고 훈련 데이터를 통해 가중치를 갱신하여
신경망의 구조를 선택하고, 활용할 학습 알고리즘을 결정한 후 신경망을 훈련시킨다.
특징
- 입력 링크에서 여러 신호를 받아서 새로운 활성화 수준을 계산하고, 출력 링크로 출력 신호를 보낸다.
- 입력신호를 미가공 데이터 또는 또 다른 뉴런의 출력이 될 수 있다.
- 출력신호는 문제의 최종적인 해(Solution) 가 되거나 다른 뉴런에 입력될 수 있다.
- 인공신경망의 학습은 가중치를 찾아내는 과정이다.
활성화함수 (Activation Function)
뉴런은 전이함수, 즉 활성화 함수(Activation Function) 을 사용한다.
활성화 함수를 사용해 출력을 결정하며 입력신호의 가중치 합을 게산하여
임계값과 비교한다. 가중치 값이 임계값보다 작으면 뉴런의 출력은 -1, 같거나 크면 +1이다.
신경망의 역할과 동일하게 임계값보다 큰 신호만 출력한다.
입력층은 여러개이고, 은닉층도 단일이거나 여러개의 층을 쌓는 것이 가능하다.
출력층은 하나를 둔다.
인공신경망의 활성화함수로는 계단함수(Step Function)을 사용한다. (0아니면 1)
그러나 step function은 도중에 끊기기 때문에 미분 연산이
불가하다는 단점이 있다.
이 단점을 보완하기 위해 시그모이드 활성화 함수(Sigmoid) 를 사용한다.
tanh (Hyperblic tangent) 를 활용하기도 한다.
그러나 이런 함수들은 노드의 개수가 많아질수록 미분값이 0에 가깝게
수렴하는 것을 보여준다.
이는 역전파를 시킬 때 은닉층을 여러 단계를 거쳐가는 딥러닝 과정에서 미분을 반복적으로 사용하게 되는데
미분값이 0이 되어버려 학습이 제대로 되지 않는 문제를 발생시킨다.
이 문제를 기울기 소멸 문제라고 한다. (Vanishing Gradient Problem)
그래서 이러한 문제를 해결하기 위해
최근의 딥러닝 방법에서는 활성화함수로 렐루함수(ReLu)를 사용한다.
층이 많아질 때 유리함을 보여준다.
출력층의 활성화함수로는 렐루, 시그모이드, 소프트맥스 함수를 사용하는데,
소프트맥스 함수는 보통 다중분류를 할 때 사용된다.
단일 뉴런의 학습은 단층 퍼셉트론으로 이루어진다.
퍼셉트론은 선형 결합기와 하드 리미터로 이루어진다.
초평면(HyperPlane)은 n차원 공간을 2개의 영역으로 나눈다.
초평면을 선형 분리 함수로 정의한다.
손실함수 (Loss Function)
예측값과 실제값을 비교하는 과정에서 ,손실함수라는 것을 사용한다.
평균제곱오차(Mean Squad Error) 와 교차 엔트로피 오차(Cross Entropy Error) 를 사용한다.
MSE 는 부호를 제거하기 위해 루트를 씌워주는 것이 특징이고,
교차 엔트로피 오차는 데이터 분포끼리의 오차를 살핀다.
손실함수는 성능의 나쁨을 평가하는 지표이다.
현재의 신경망이 훈련 데이터를 얼마나 잘 처리하지 못하는가를 나타내는 지표이다.
경사하강법 (Gradient descent algorithm) 을 이용하여 loss 를 최소화시킨다.
뭔가 최적설계 할 때 배웠던 Steepest Descent 랑 비슷한 느낌 ..
경사하강법이란,
가중치에 대한 손실함수의 최소값의 위치를 찾기 위해 손실함수를 미분하고,
그 미분값의 방향과 크기를 활용하여 가중치를 보상하는 방법이다.
경사하강법을 진행하면서,
얼만큼 이동할 지에 대해서 거리의 비율을
학습률이라고 한다.
경사하강법을 하기 위한 다양한 옵티마이저들이 있다.
Adam 을 실습할 때는 사용하도록 하자.
신경망 함수는 복잡성으로 인해서 입력 자료의 선택에 매우 민감하다.
변수형일 때는 모든 범주에서 일정 빈도 이상의 값을 갖고 각 범주의 빈도가 일정한 자료가
신경망 모형에 적합하다.
연속형 변수일 경우 입력변수 값들의 범위가 변수간의 큰 차이가 없을 때 적합하다고 본다.
그러나 연속형 변수의 경우 그 분포가 평균을 중심으로 대칭이 아니면 좋지 않은 결과를
도출하기 때문에 로그변환이나 범주화를 시켜준다.
역전파 알고리즘은 초기값에 따라서 결과가 많이 달라지기 때문에
초기값의 선택은 매우 중요하다.
가중치가 0인 경우 시그모이드 함수는 선형이 되고, 이때 신경망 함수는 선형모델에 근사한다.
일반적으로 초기값은 0 근처로 랜덤하게 선택하므로 초기 모형은 선형에 가깝고,
가중치 값이 증가할수록 비선형모델이 된다.
학습모드
1) 온라인 학습 모드 (Online Learning Mode)
각 관측값을 순차적으로 하나씩 신경망에 투입해서 가중치 추정값이 매번 바뀐다.
일반적으로 속도가 빠르며, 특히 훈련 자료에 유사값이 많은 경우 그 차이가 더 두드러진다.
훈련자료가 비정상성과 같이 특이한 성질을 가진 경우가 좋고,
국소최소값에서 벗어나기가 더 쉽다.
2) 확률적 학습 모드 (Probabilistic Learning mode)
온라인 학습 모드와 같으나 신경망에 투입되는 관측값의 순서가 랜덤하다.
3) 배치 학습 모드 (Batch Learning mode)
전체 훈련자료를 동시에 신경망에 투입한다.
학습률의 경우 처음에는 큰 값으로 정하고 반복 수행과정을 통해서 해에 가까울수록
학습률이 0에 수렴하게 된다.
4) 은닉층(Hidden Layer) 과 은닉노드(Hidden Node) 의 수
신경망을 적용할 때 가장 중요한 부분이 은닉층의 수와 는닉노드의 수를 결정하는 것이다.
은닉층과 은닉노드가 많은 경우 가중치가 많아지기 때문에 과대 적합 문제가 발생한다.
또 은닉층과 은닉노드가 너무 적은 경우는 과소 적합 문제가 발생한다.
은닉층의 수가 하나인 신경망은 범용 근사자(Universal Approximmator) 이므로
모든 매끄러운 함수를 근사적으로 표현할 수 있기 때문에 가능하면 은닉층의 수는
하나로 선정한다.
은닉노드의 수는 적절히 큰 값으로 놓고 시작한 다음 가중치를 감소시키며 적용하는 게 좋다.
5) 과대 적합 문제
신경망에서는 많은 가중치를 추정해야 하기 때문에 과대적합 문제가 빈번하다.
알고리즘의 조기 종료나 가중치 감소 기법으로 해결이 가능하다.
선형모형의 능형회귀와 유사한 가중치 감소라는 벌점화 기법을 활용한다.
- 환경변수 지정
몇 개의 층을 쌓고, 몇 개의 노드를 쌓고 가중치 업데이트는 어떻게 할 지를 결정한다.
하이퍼 파라미터(Hyper Parameter) 를 조정한다.
- 에폭 (Epoch) : 딥러닝을 수행하며 학습데이터가 모두 소진되는 하나의 단위.
하나의 데이터셋을 몇 번 학습시킬 지 그 횟수가 에폭이다.
- 배치사이즈 (Batch size) : 한 번의 배치마다 주는 데이터의 sample size이다.
학습을 한 번 시킬 때 얼마만큼의 양을 학습시킬 지이다. - 신경망 실행
Feedforward Nerual Network (FNN) 전방향으로 진행한다. - 예측값과 실제값 비교
- 가중치 수정
예측값과 실제값을 비교한 뒤 그 차이를 줄여나가고 가중치를 수정하는 것이 Back propagation
공부하다가 너무 잠 와서 타이핑으로 공부하려고
쓴 게시물. 그러나 실패
교재 참고
참고했습니다.
이외 추가자료는 공공빅데이터 청년인재양성 교육자료를 바탕으로 사용했습니다.
이어집니다.
https://wndofla123.tistory.com/93
[Python/ML] 분류 알고리즘 (Classification Algorithm) : 인공신경망 (ANN : Article Neural Network) - (2)
https://wndofla123.tistory.com/84 [Python/ML] 분류 알고리즘 (Classification Algorithm) : 인공신경망 (ANN : Article Neural Network) 2022.12.07 + 교육 내용 추가 인공신경망 (Article Neural Network : ANN) 인공신경망이란, 인간 뇌
wndofla123.tistory.com
'Data Science > Deep Learninng' 카테고리의 다른 글
[Python/DL] 딥 러닝 (Deep Learning) - Keras (3) | 2023.01.12 |
---|---|
[Python/DL] 딥 러닝 (Deep Learning) (3) - 역전파(BackPropagation) (3) | 2023.01.12 |
[Python/DL] 딥 러닝 (Deep Learning) (2) - 딥 러닝(Deep Learning) 의 학습 (3) | 2023.01.10 |
[Python/DL] 딥 러닝 (Deep Learning) (1) - 퍼셉트론(Perceptron)과 신경망 (2) | 2023.01.10 |
[Python/DL] 분류 알고리즘 (Classification Algorithm) : 인공신경망 (ANN : Article Neural Network) - (2) (2) | 2022.12.09 |