전방전달신경망 편집하기

이동: 둘러보기, 검색

경고: 로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다. 로그인하거나 계정을 생성하면 편집자가 아이디(ID)으로 기록되고, 다른 장점도 있습니다.

편집을 되돌릴 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 저장해주세요.
최신판 당신의 편집
1번째 줄: 1번째 줄:
 
[[파일:전방전달신경망.png|300픽셀|썸네일|'''전방전달신경망''']]
 
[[파일:전방전달신경망.png|300픽셀|썸네일|'''전방전달신경망''']]
  
'''전방전달신경망'''(Feedforward Neural Network, FFNN)은 노드 사이의 연결이 순환을 형성하지 않는 [[인공신경망]]이다. 신경망 정보가 입력 노드에서 은닉 노드를 거쳐 출력 노드까지 전달 되며 순환 경로가 존재하지 않는 그래프를 형성한다. 다양한 방법의 구조가 존재하는데 이진 구조, [[퍼셉트론]], 시그모이드 등 여러가지 방법으로 구성할 수 있다. 영어 약자로 '''FFNN'''(에프에프엔엔)이라고 한다.
+
'''전방전달신경망'''(Feedforward neural network)은 노드 사이의 연결이 순환을 형성하지 않는 [[인공신경망]]이다. 신경망 정보가 입력 노드에서 은닉 노드를 거쳐 출력 노드까지 전달 되며 순환 경로가 존재하지 않는 그래프를 형성한다. 다양한 방법의 구조가 존재하는데 이진 구조, [[퍼셉트론]], 시그모이드 등 여러가지 방법으로 구성할 수 있다.
  
 
== 개요 ==  
 
== 개요 ==  
90번째 줄: 90번째 줄:
  
 
이 해결법은 상당한 양의 계산 부하를 줄이는 데 도움이 된다. 비 볼록 손실 함수에 적용된 확률적 기울기 하강법은 이러한 수렴 보장이 없으며, 초기 매개 변수의 값에 민감하다. 전방전달신경망의 경우 모든 가중치를 작은 무작위 값으로 초기화하는 것이 중요하다. 편향은 0 또는 작은 양의 값으로 초기화할 수 있다.<ref name="전방전달신경망"></ref>  
 
이 해결법은 상당한 양의 계산 부하를 줄이는 데 도움이 된다. 비 볼록 손실 함수에 적용된 확률적 기울기 하강법은 이러한 수렴 보장이 없으며, 초기 매개 변수의 값에 민감하다. 전방전달신경망의 경우 모든 가중치를 작은 무작위 값으로 초기화하는 것이 중요하다. 편향은 0 또는 작은 양의 값으로 초기화할 수 있다.<ref name="전방전달신경망"></ref>  
 
== 비용 함수 ==
 
비용 함수는 훈련의 어느 지점에서든 모델에 의해 만들어진 근사치와 사람이 도달하려고 하는 실제 목표값 사이의 차이를 보여주며, 그것의 임무는 네트워크 전체를 평가하는 것이기 때문에 항상 단일 값이다. 머신러닝 알고리즘과 마찬가지로 전방전달신경망도 그라데이션 기반 학습을 사용하여 훈련되는데, 이러한 학습 방법에서는 비용 기능을 최소화하기 위해 확률적 기울기 강하와 같은 알고리즘을 사용한다. 전체 교육 과정은 비용 기능의 선택에 크게 좌우되며, 비용 기능의 선택은 다른 파라메트릭 모델과 거의 동일하다. 매개변수 모델이 분포 <math>p(y| x ; \theta)</math>를 정의하는 경우, 단지 비용 함수로 훈련 데이터와 모델의 예측 사이의 교차 엔트로피를 사용한다. 또한 y에 대한 완전한 확률 분포를 예측하기 보다는 x에 조건화된 y의 일부 통계량을 예측함으로써 이것에 대한 또 다른 접근법을 취할 수 있다. 함수를 역전파 알고리즘과 함께 비용 함수로 사용하기 위해서는 다음 두 가지 특성을 만족시켜야 한다.
 
*비용 함수는 평균으로 작성할 수 있어야 한다.
 
*비용 함수는 출력 계층 옆에 있는 네트워크의 활성화 값에 의존해서는 안 된다.
 
 
비용 함수는 대부분 C 형식<math>(W, B, S^r, E^r)</math>이며, 여기서 W는 신경망의 무게, B는 네트워크의 편향, Sr은 단일 훈련 샘플의 입력, Er는 해당 훈련 샘플의 원하는 출력이다. 가능한 비용 함수는 다음과 같다.
 
 
;이차비용
 
<math>C_{C, E}(W, B, S^r, E^r) = - \sum_j \left[ E{}_{j}^{r} In a{}_{j}^{L} + (1 - E{}_{j}^{r}) In (1 - a{}_{j}^{L})\right]</math>
 
 
이 함수는 베르누이(Bernoulli) 음의 로그 우도 및 이진 교차 엔트로피라고도 한다.
 
 
;지수비용
 
<math>C_{EXP}(W, B, S^r, E^r) = \gamma exp( \frac{1}{ \gamma}  \sum_j (a_j^L - E_j^r)^2) </math>
 
 
;헬링거 거리
 
<math>C_{HD}(W, B, S^r, E^r) =  \frac{1}{\sqrt{2}} \sum_j (\sqrt{a{}_{j}^{L} - E{}_{j}^{r}})^2</math>
 
 
이것은 통계적 거리라고도 불린다.<ref name="출력단위"> Yash Upadhyay,  〈[https://towardsdatascience.com/feed-forward-neural-networks-c503faa46620 Introduction to FeedForward Neural Networks]〉,  《Towards Data Science》, 2019-05-08 </ref>
 
 
== 출력 단위 ==
 
출력 단위는 출력 계층에 존재하는 단위로서, 그 단위는 우리에게 원하는 출력이나 예측을 제공하여 신경 네트워크가 수행해야 하는 작업을 완료하는 것이다. 출력 단위의 선택은 비용 함수의 선택과 긴밀하게 결합된다. 신경망에서 숨겨진 유닛으로 사용할 수 있는 어떤 유닛도 출력 유닛으로 사용할 수 있다. 출력 단위를 선택할 수 있는 항목은 다음과 같다.
 
 
=== 선형 단위 ===
 
가장 단순한 종류의 출력 단위는 가우스 출력 분포에 사용되는 선형 출력 단위로서, 이러한 단위는 출력 계층에 비선형성을 제공하지 않는 부속 변환에 기초한다. 주어진 h 형상에 따라 선형 출력 층은 벡터를 생성한다.
 
  <math>\widehat{y} = W \top h+ b </math>
 
 
로그 우도를 최대화하는 선형 계층의 경우 평균 제곱 오차를 최소화하는 것과 동일하며, 최대 우도는 가우스 분포의 공분산을 기울이기 쉽게 한다. 이러한 선형 단위의 장점은 포화되지 않는다는 것이다. 즉, 단위의 기울기는 항상 일정하게 유지되고 0에 결코 접근하지 않으며, 기울기 기반 최적화 알고리즘에는 어려움이 없다.
 
 
=== 시그모이드 단위 ===
 
  <math>S(x) = \frac{1 + e^-x)}{1} = \frac{e^x + 1)}{e^x} </math>
 
이항 분류 문제를 해결하기 위해 최대우도를 갖는 시그모이드 출력 단위를 결합한다. 시그모이드 출력 단위는 2개의 성분을 가지고 있는데, 하나는 <math>z = w*h+b</math>를 계산하기 위해 선형 레이어를 사용하고 그 다음 활성화 함수를 사용하여 <math>z</math>를 확률로 변환한다. 평균 오차 제곱과 같은 다른 손실 기능을 사용할 경우, 손실은 언제든지 포화 상태가 될 수 있으며, 즉 기울기는 너무 작아 학습에 유용하지 않을 수 있다. 이러한 이유로 최대 가능성이 선호된다.
 
 
=== 소프트맥스 단위 ===
 
소프트맥스 단위는 다도 출력 분포에 사용되며, 가능한 값이 <math>n</math>개인 이산형 변수에 대한 확률 분포에 사용되며, 이는 이항 변수에 대한 확률 분포를 나타내는 S자형 함수의 일반화로도 볼 수 있다. 소프트맥스 함수는 다음을 통해 정의된다.
 
  <math> softmax(z)_{i} = \frac{ \sum_j exp(z_{j})}{exp(z_{j}} </math>
 
 
시그모이드 기능과 마찬가지로 소프트맥스 기능도 포화 상태가 될 수 있다. 즉, 그라데이션이 너무 작아 학습에 유용하지 않을 수 있다. 소프트맥스의 경우 출력 단위가 여러 개여서 입력값 간 차이가 극심해질 때만 포화상태에 이를 수 있다. 이 단위는 총 확률이 항상 1이고 초과할 수 없으므로 승자가 모든 원칙을 취하며, 1 아웃 값이 1에 가까워지면 다른 출력 단위의 출력 값이 0에 가까워진다.
 
 
=== 은닉 단위 ===
 
은닉 단위의 유형을 선택하는 것 역시 활발한 연구로, 어떤 특정 단위도 모든 문제에서 다른 모든 단위를 능가할 것이라고 보장할 수 없지만, 초기에는 기본 선택인 일부 단위가 있다. 예를 들어, 수정된 선형 단위나 일반적으로 알려진 렐루(Relu)가 주로 사용된다. 이것은 경험보다는 직관적인 이유 때문이다.실제로 어떤 것이 가장 잘 될지는 대개 미리 예측하는 것이 불가능하다. 은닉 단위를 선택하는 것은 시행착오를 수반하며, 일종의 숨겨진 단위가 잘 작동할 수 있음을 직감하고 시험한다. 은닉 단위를 선택할 수 있는 방법은 다음과 같다.
 
 
;정류된 선형 단위
 
이러한 함수는 g(z)로 정의된 활성화 함수를 사용한다.
 
  <math> g(z) = max \left\{ 0, z \right\} </math>
 
 
렐루는 선형 단위와 비슷해 최적화하기 쉬운데, 이들 사이의 유일한 차이점은 도메인의 절반에 대한 출력이 0이라는 것이다. 이들이 이처럼 유명한 이유는 유닛이 활동할 때마다 항상 큰 기울기를 가지고 있기 때문이다. 기울기는 2차 효과를 소개하는 활성화 기능보다 학습에 훨씬 유용하다. 하지만 렐루는 자신의 활성화가 0인 기울기 기반 방법을 통해 배울 수 없는 단점이 있다. 세간에는 렐루에 대한 많은 일반화가 있으며, 이는 다음과 같다.
 
 
*'''절대값 정류'''
 
*'''리키 렐루'''(Leaky ReLU)
 
*'''파라메트릭 렐루'''(Parametric ReLU)
 
*'''최대 출력 단위'''
 
 
맥스아웃(Maxout) 단위는 요소별 함수 <math>g(z )</math>를 적용하고, 맥스아웃 단위는 <math>z</math>를 <math>k</math>값 그룹으로 나눈다. 그런 다음 각 맥스아웃 단위는 이들 그룹 중 하나의 최대 요소를 출력한다. 맥스아웃 단위는 각 단위가 여러 개의 필터에 의해 구동되어 신경 네트워크가 훈련된 작업을 수행하는 방법을 잊어버리는 파국적 망각으로부터 저항할 수 있게 되는 이중화를 가지고 있기 때문에 렐루의 최고의 일반화로 평가받고 있다.
 
 
;로지스틱 S자형 및 쌍곡 탄젠트
 
로지스틱 시그모이드는 다음과 같이 주어진다.
 
  <math> g(z) = \sigma(z) </math>
 
쌍곡선 접선은 다음을 통해 제공된다.
 
  <math> g(z) = tanh(z) </math>
 
이러한 단위는 다음과 같이 밀접하게 관련되어 있다.
 
  <math> tanh(z) = 2 \sigma (2z)-1 </math>
 
렐루 이전에는 이러한 것들이 신경망의 가장 대표적인 선택지였지만, 지금은 <math>z</math>가 매우 양성이면 높은 값으로 포화되고, <math>z</math>가 매우 음성이면 낮은 값으로 포화되며, <math>z</math>가 <math>0</math>에 가까울 때만 입력에 강하게 민감하기 때문에 사용이 무시된다. S자형 단위의 광범위한 포화는 기울기 기반 학습을 매우 어렵게 만들 수 있다.<ref name="출력단위"></ref>
 
  
 
{{각주}}
 
{{각주}}
163번째 줄: 99번째 줄:
 
*Tushar Gupta,  〈[https://towardsdatascience.com/deep-learning-feedforward-neural-network-26a6705dbdc7 Deep Learning: Feedforward Neural Network]〉,  《Towards Data Science》, 2017-01-05
 
*Tushar Gupta,  〈[https://towardsdatascience.com/deep-learning-feedforward-neural-network-26a6705dbdc7 Deep Learning: Feedforward Neural Network]〉,  《Towards Data Science》, 2017-01-05
 
*찬,  〈[http://blog.naver.com/PostView.nhn?blogId=apr407&logNo=221238611771&parentCategoryNo=&categoryNo=55&viewDate=&isShowPopularPosts=true&from=search FFNN(Feed-forward Neural Network)]〉,  《네이버 블로그》, 2018-03-27  
 
*찬,  〈[http://blog.naver.com/PostView.nhn?blogId=apr407&logNo=221238611771&parentCategoryNo=&categoryNo=55&viewDate=&isShowPopularPosts=true&from=search FFNN(Feed-forward Neural Network)]〉,  《네이버 블로그》, 2018-03-27  
*Yash Upadhyay,  〈[https://towardsdatascience.com/feed-forward-neural-networks-c503faa46620 Introduction to FeedForward Neural Networks]〉,  《Towards Data Science》, 2019-05-08
 
  
 
== 같이 보기 ==
 
== 같이 보기 ==

해시넷에서의 모든 기여는 다른 기여자가 편집, 수정, 삭제할 수 있다는 점을 유의해 주세요. 만약 여기에 동의하지 않는다면, 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다 (자세한 사항은 해시넷:저작권 문서를 보세요). 저작권이 있는 내용을 허가 없이 저장하지 마세요!

취소 | 편집 도움말 (새 창에서 열림)