신경망에서 장단점과 함께 활성화 기능의 포괄적 인 목록을 제공하는 참조 문서가 있습니까?
sin(x)
참조 openreview.net/pdf?id=Sks3zF9eg을 .
신경망에서 장단점과 함께 활성화 기능의 포괄적 인 목록을 제공하는 참조 문서가 있습니까?
sin(x)
참조 openreview.net/pdf?id=Sks3zF9eg을 .
답변:
나는 지금까지 배운 것들의 목록을 작성하기 시작할 것입니다. @marcodena가 말했듯이 장단점은 대부분 이러한 것들을 시도하여 얻은 휴리스틱이기 때문에 더 어려워 지지만 적어도 그들이 해칠 수없는 목록을 가지고 있다고 생각합니다.
먼저 표기법을 명시 적으로 정의하여 혼동이 없도록합니다.
이 표기법은 Neilsen의 저서에서 나온 것 입니다.
피드 포워드 신경망은 서로 연결된 많은 수의 뉴런 층입니다. 입력을받은 다음 해당 입력이 네트워크를 통해 "트리 클링"되고 신경망이 출력 벡터를 반환합니다.
보다 공식적으로, 는 레이어 에서 뉴런 의 활성화 (일명 출력)를 호출 . 여기서 는 입력 벡터 의 요소입니다. j t h i t h a 1 j j t h
그런 다음 다음 레이어의 입력을 다음 관계를 통해 이전 레이어와 관련시킬 수 있습니다.
어디
때때로 우리 는 를 나타내는 를 작성합니다. 즉, 활성화 함수를 적용하기 전에 뉴런의 활성화 값 . ∑ k ( w i j k ⋅ a i − 1 k ) + b i j
더 간결한 표기법을 위해 다음과 같이 쓸 수 있습니다.
이 공식을 사용하여 일부 입력 에 대한 피드 포워드 네트워크의 출력을 계산하려면 설정 다음 . 여기서 은 레이어 수입니다.1 = I는 2 , 3 , ... , m에서 m을
(다음에서는 가독성을 위해 대신 를 씁니다. )e x
선형 활성화 기능이라고도합니다.
"범위"인 및 선택하십시오 . 이 범위보다 작은 것은 0이되고이 범위보다 큰 것은 1이됩니다. 다른 것들은 선형 보간됩니다. 공식적으로 : x 최대
어디
과
효율적인 Backprop를 참조하십시오 .
규모 :
정류 선형 단위 (ReLU), 최대 또는 램프 기능 이라고도 합니다.
이것들은 내가 놀았 던 몇 가지 활성화 기능으로, 신비한 이유로 MNIST의 성능이 매우 뛰어납니다.
규모 :
규모 :
Smooth Rectified Linear Unit, Smooth Max 또는 Soft plus라고도 함
규모 :
여기서 는 오류 함수 입니다. 기본 함수를 통해 설명 할 수는 없지만 해당 위키 백과 페이지와 여기 에서 그 역수를 근사하는 방법을 찾을 수 있습니다 .
또는 다음과 같이 표현할 수 있습니다.
여기서 는 누적 분포 함수 (CDF)입니다. 근사치에 대해서는 여기 를 참조 하십시오 .
규모 :
임의의 주방 싱크를 참조하십시오 .
정규화 된 지수라고도합니다.
단일 뉴런의 출력이 해당 레이어의 다른 뉴런에 의존하기 때문에 이것은 조금 이상합니다. 는 매우 높은 값일 수 있으므로 계산하기가 어렵습니다 .이 경우 가 오버플로 될 수 있습니다. 마찬가지로 가 매우 낮은 값이면 언더 플로가되어 됩니다.
이를 방지하기 위해 대신 를 계산 합니다. 이것은 우리에게 :
여기서 log-sum-exp 트릭 을 사용해야합니다 .
우리가 컴퓨팅한다고 가정 해 봅시다.
편의상 먼저 지수를 크기별로 정렬합니다.
그런 다음 이 가장 높 을 곱합니다 .
그런 다음 오른쪽의 표현식을 계산하고 로그를 취할 수 있습니다. 과 관련하여 그 합계가 매우 작기 때문에이 작업을 수행하는 것이 좋습니다 . 따라서 0으로의 언더 플로는 어쨌든 차이를 만들 정도로 중요하지 않을 것입니다. 을 곱한 후 모든 거듭 제곱은 것이 보장되므로 오른쪽 식에서 오버플로를 발생시킬 수 없습니다 .
공식적으로 합니다. 그때:
그러면 softmax 기능은 다음과 같습니다.
또한 부수적으로 softmax 함수의 미분은 다음과 같습니다.
이것도 조금 까다 롭습니다. 본질적으로 아이디어는 우리가 maxout 레이어의 각 뉴런을 많은 하위 뉴런으로 나누고 각각의 뉴런은 자체 가중치와 편향을 가지고 있다는 것입니다. 그런 다음 뉴런에 대한 입력은 대신 각 뉴런의 하위 뉴런으로 이동하고 각 서브 뉴런은 단순히 를 출력 합니다 (활성화 기능을 적용하지 않고). 그 뉴런 의 는 모든 서브 뉴런 출력의 최대 값입니다.
공식적으로, 단일 뉴런에서 우리는 개의 뉴런을 가지고 있다고 가정 합니다. 그때
어디
( 은 IS 내적 )
우리가 이것에 대해 생각할 수 있도록 , 시그 모이 드 활성화 함수를 사용하는 신경망 의 레이어에 대한 가중치 행렬 를 고려하십시오 . 는 2D 행렬이며, 각 열 는 이전 레이어 의 모든 뉴런에 대한 가중치를 포함하는 뉴런 대한 벡터입니다 .
하위 뉴런을 가지려면 각 뉴런마다 2D 가중치 행렬이 필요합니다. 각 하위 뉴런은 이전 레이어의 모든 뉴런에 대한 가중치를 포함하는 벡터가 필요하기 때문입니다. 이것은 가 이제 3D 가중치 행렬 임을 의미합니다 . 여기서 각 는 단일 뉴런 대한 2D 가중치 행렬입니다 . 그런 다음 는 이전 레이어 의 모든 뉴런에 대한 가중치를 포함하는 뉴런 뉴런 하위 에 대한 벡터입니다 .
마찬가지로, 시그 모이 드 활성화 함수를 다시 사용하는 신경망에서, 는 계층 각 뉴런 에 대한 바이어스 를 가진 벡터입니다 .
서브 뉴런이를 위해, 우리는 2 차원 바이어스 매트릭스 필요 각층 , 위한 바이어스 벡터 인 각 subneuron의 에서 뉴런.
각 뉴런에 대해 가중치 행렬 와 바이어스 벡터 를 으로써 위의 표현을 매우 명확하게 만들 수 있습니다. 각 서브 뉴런의 가중치 를 출력 입니다. 레이어 , 바이어스 를 적용하고 최대 값을 취합니다.
방사형 기초 기능 네트워크는 피드 포워드 신경망의 수정입니다.
우리는 1 개 중량이 노드 당 이전 층 (정상)을, 또한 하나의 의미 벡터 및 하나의 표준 편차 벡터 각 노드에 대한 이전 레이어
그런 다음 표준 편차 벡터 와 혼동되지 않도록 활성화 함수 를 호출합니다 . 이제 를 계산하려면 먼저 이전 계층의 각 노드에 대해 하나의 를 계산해야합니다 . 한 가지 옵션은 유클리드 거리를 사용하는 것입니다.
여기서 는 IS 의 요소 . 이것은 사용하지 않습니다 . 또는 Mahalanobis 거리가 있습니다.
여기서 는 다음과 같이 정의 된 공분산 행렬입니다 .
즉, 는 IS 대각선 으로 매트릭스 는 대각 요소이다있다. 우리는 정의 과 이 일반적으로 사용되는 표기법 때문에 여기 열 벡터로서이.
이들은 실제로 Mahalanobis 거리가
여기서 인 의 요소 . 참고 항상 양수 여야하지만, 이것은 표준 편차의 일반적인 요구 사항 때문에이 것은 놀라운 일이 아니다이다.
원하는 경우, Mahalanobis 거리는 공분산 행렬 를 다른 행렬로 정의 할 수 있을 정도로 일반적 입니다. 예를 들어 공분산 행렬이 항등 행렬 인 경우 Mahalanobis 거리는 유클리드 거리로 줄어 듭니다. 는 매우 일반적이며 정규화 된 유클리드 거리라고 합니다.
어느 쪽이든, 일단 거리 함수가 선택되면 통해 를 계산할 수 있습니다
이 네트워크에서 그들은 활성화 기능을 적용한 후 가중치를 곱하여 선택합니다.
이것은 다층 방사형 기초 함수 네트워크를 만드는 방법을 설명하지만 일반적으로 이러한 뉴런 중 하나만 있으며 그 출력은 네트워크의 출력입니다. 단일 뉴런의 각 평균 벡터 및 각 표준 편차 벡터 는 하나의 "뉴런"으로 간주되고이 모든 출력 후에 다른 레이어가 있기 때문에 다중 뉴런으로 그려집니다. 위의 와 같이 계산 된 값에 가중치를 더한 값의 합을 취합니다 . 마지막에 "합산"벡터를 사용하여 두 레이어로 나누는 것이 이상하게 보이지만 그것이하는 일입니다.
어떤 점 선택하십시오 . 그런 다음 에서 까지의 거리를 계산합니다 .
Wikipedia 에서 온 것 입니다. 제한이 없으며 정상화 할 수있는 방법이 있는지 궁금하지만 긍정적 인 가치가 될 수 있습니다.
때 , 이는 절대적으로 (수평 시프트와 등가 인 ).
뒤집힌 것을 제외하고 2 차와 동일합니다.
그 중 하나는 아니지만 전체 목록은 다음과 같습니다. http://cs231n.github.io/neural-networks-1/
일반적으로 사용되는 활성화 기능
모든 활성화 함수 (또는 비선형 성 )는 단일 숫자를 사용하고 특정 고정 수학 연산을 수행합니다. 실제로 발생할 수있는 몇 가지 활성화 기능이 있습니다.
왼쪽 : Sigmoid 비선형 성이 실수를 [0,1] 사이로 스쿼시합니다. 오른쪽 : tanh 비선형 성이 실수를 [-1,1] 사이로 스쿼시합니다.S 자형. S 자형 비선형 성은 수학 형식 가지며 왼쪽의 위 이미지에 표시되어 있습니다. 이전 섹션에서 언급했듯이 실제 값은 0에서 1 사이의 범위로 "분할"됩니다. 특히 큰 음수는 0이되고 큰 양수는 1이됩니다. 시그 모이 드 함수는 역사적으로 자주 사용되었습니다. 그것은 전혀 발사하지 않는 것 (0)에서 가정 된 최대 주파수 (1)에서 완전 포화 된 발사까지 뉴런의 발사 속도로 잘 해석되기 때문입니다. 실제로, 시그 모이 드 비선형 성은 최근에 선호도가 떨어지고 거의 사용되지 않습니다. 두 가지 주요 단점이 있습니다.
- S 자형은 그라디언트를 포화시키고 죽입니다 . 시그 모이 드 뉴런의 매우 바람직하지 않은 특성은 뉴런의 활성화가 0 또는 1의 꼬리에서 포화 될 때 이들 영역에서의 구배가 거의 0이라는 것이다. 역 전파 동안이 (로컬) 그라디언트는 전체 목표에 대한이 게이트 출력의 그라디언트에 곱해집니다. 따라서, 국부 구배가 매우 작은 경우, 구배를 효과적으로 "사멸 (kill)"시킬 것이며, 신호를 뉴런을 통해 그 가중치로 그리고 재귀 적으로 데이터로 거의 흐르지 않을 것이다. 또한, 포화를 방지하기 위해 시그 모이 드 뉴런의 무게를 초기화 할 때 특히주의해야합니다. 예를 들어, 초기 무게가 너무 크면 대부분의 뉴런이 포화되어 네트워크가 거의 배우지 않습니다.
- S 자형 출력은 0 중심이 아닙니다 . 신경망에서 나중 프로세싱 계층의 뉴런이 곧 중심에 있지 않은 데이터를 수신하기 때문에 바람직하지 않습니다. 뉴런으로 들어오는 데이터가 항상 양수인 경우 (예 : 에서 요소 ), 역 전파 동안 가중치 의 기울기 는 모두 양수이거나 모두 음수입니다 (전체 식의 기울기에 따라 ). 이것은 가중치에 대한 기울기 업데이트에서 바람직하지 않은 지그재그 역학을 야기 할 수있다. 그러나 이러한 그라디언트가 일련의 데이터에 합산되면 가중치에 대한 최종 업데이트는 가변 기호를 가질 수 있으며이 문제를 다소 완화 할 수 있습니다. 따라서 이는 불편하지만 위의 포화 활성화 문제와 비교할 때 덜 심각한 결과를 초래합니다.
탄 tanh 비선형 성은 위 이미지의 오른쪽에 표시되어 있습니다. 실수 값을 [-1, 1] 범위로 스쿼시합니다. 시그 모이 드 뉴런과 마찬가지로 활성화는 포화되지만 시그 모이 드 뉴런과 달리 출력은 0 중심입니다. 따라서, 실제로 탄형 비선형 성은 시그 모이 드 비선형 성보다 항상 바람직하다. 또한 tanh 뉴런은 단순히 스케일링 된 시그 모이 드 뉴런이며 특히 다음을 포함합니다. .
왼쪽 : 정류 선형 단위 (ReLU) 활성화 기능. x <0 일 때는 0이고 x> 0 일 때는 기울기 1로 선형입니다 . 오른쪽 : Krizhevsky et al. (pdf) 용지는 tanh 장치와 비교하여 ReLU 장치와의 수렴이 6 배 개선되었음을 나타냅니다.RELU. Rectified Linear Unit은 지난 몇 년 동안 매우 인기를 얻었습니다. 함수 합니다. 다시 말해, 활성화는 단순히 0으로 임계 값이됩니다 (왼쪽 위 이미지 참조). ReLU 사용에 대한 몇 가지 장단점이 있습니다.
- (+) 시그 모이 드 / 탄 함수와 비교하여 확률 적 구배 하강의 수렴 을 크게 가속시키는 것으로 밝혀졌다 (예를 들어 Krizhevsky et al. 에서 6의 인자 ). 이것은 선형의 비 포화 형태 때문이라고 주장합니다.
- (+) 값 비싼 연산 (지수 등)을 포함하는 탄 / 시그 모이 드 뉴런과 비교하여 ReLU는 단순히 0의 활성화 매트릭스를 임계 값으로하여 구현할 수 있습니다.
- (-) 불행히도, ReLU 장치는 훈련 중에 깨지기 쉬우 며 "죽을"수 있습니다. 예를 들어, ReLU 뉴런을 통해 흐르는 큰 구배는 뉴런이 데이터 포인트에서 다시 활성화되지 않는 방식으로 가중치가 업데이트되도록 할 수 있습니다. 이 경우 장치를 통해 흐르는 그라디언트는 그 시점부터 영원히 0이됩니다. 즉, ReLU 장치는 데이터 매니 폴드에서 노크 될 수 있기 때문에 훈련 중에 비가 역적으로 죽을 수 있습니다. 예를 들어, 학습 속도가 너무 높게 설정되어 있으면 네트워크의 40 % 정도가 "사망"(즉, 전체 교육 데이터 세트에서 활성화되지 않는 뉴런)이 될 수 있습니다. 학습 속도를 올바르게 설정하면 문제가 덜 자주 발생합니다.
새는 ReLU. 새는 ReLU는 "dying ReLU"문제를 해결하려는 시도 중 하나입니다. x <0 일 때 함수가 0이 아니라 누출 ReLU는 작은 음의 기울기를 갖습니다 (0.01 정도). 즉, 함수는 여기서 는 작은 상수입니다. 일부 사람들은 이러한 형태의 활성화 기능으로 성공을보고하지만 그 결과가 항상 일치하지는 않습니다. Kaiming He et al., 2015에 의해 정류기에 심층 분석 에서 소개 된 PReLU 뉴런에서 볼 수 있듯이, 네거티브 영역의 기울기는 각 뉴런의 매개 변수로 만들 수 있습니다 . 그러나 현재 작업 전반에 걸친 이점의 일관성은 현재 불분명합니다.
Maxout . 가중치와 데이터 사이의 내적에 비선형 성이 적용되는 기능적 형태 를 갖지 않는 다른 유형의 단위가 제안되었습니다 . 상대적으로 인기있는 선택 중 하나 는 ReLU 및 누출 버전을 일반화하는 Maxout 뉴런 (최근 Goodfellow 등이 소개 함 )입니다. Maxout 뉴런은 함수를 계산합니다 . ReLU와 Leaky ReLU는이 형식의 특별한 경우입니다 (예 : ReLU의 경우 w_1). 따라서 Maxout 뉴런은 ReLU 장치 (선형 작동 체제, 포화 없음)의 모든 이점을 누리며 단점이 없습니다 (ReLU 사망). 그러나 ReLU 뉴런과 달리 모든 단일 뉴런에 대한 매개 변수 수를 두 배로 늘려서 총 매개 변수 수가 많아집니다.
이것으로 가장 일반적인 뉴런 유형과 활성화 기능에 대한 논의를 마칩니다. 마지막으로, 동일한 네트워크에서 다른 유형의 뉴런을 혼합하여 일치시키는 것은 매우 드물지만 그렇게하는 데 근본적인 문제는 없습니다.
TLDR : " 어떤 뉴런 유형을 사용해야합니까? "ReLU 비선형 성을 사용하고 학습 속도에주의를 기울이고 네트워크에서 "죽은"단위의 비율을 모니터링하십시오. 이것이 문제가 될 경우 Leaky ReLU 또는 Maxout을 사용해보십시오. S 자형을 사용하지 마십시오. tanh를 시도하지만 ReLU / Maxout보다 더 나빠질 것으로 예상하십시오.
라이센스 :
MIT 라이센스 (MIT)저작권 (c) 2015 Andrej Karpathy
이 소프트웨어 및 관련 문서 파일 (이하 "소프트웨어")의 사본을 사용하는 사람에게는 사용, 복사, 수정, 병합 권한을 포함하여 제한없이 소프트웨어를 처리 할 수있는 권한이 무료로 부여됩니다. 다음 조건에 따라 소프트웨어의 사본을 게시, 배포, 하위 사용권 허가 및 / 또는 판매하고 소프트웨어를 제공받은 사람에게 허용합니다.
상기 저작권 고지 및이 허가 고지는 소프트웨어의 모든 사본 또는 상당 부분에 포함됩니다.
본 소프트웨어는 상품성, 특정 목적에의 적합성 및 비 침해에 대한 보증을 포함하되 명시 적이든 묵시적이든 어떠한 종류의 보증없이 "있는 그대로"제공됩니다. 어떠한 경우에도 저자 또는 저작권 소유자는 계약, 불법 행위 또는 기타 행위, 소프트웨어 또는 소프트웨어의 사용 또는 기타 거래로 인해 발생하는 모든 청구, 손해 또는 기타 책임에 대해 책임을지지 않습니다. 소프트웨어.*
다른 링크들 :
장단점이있는 목록이 있다고 생각하지 않습니다. 활성화 기능이 높은 응용 프로그램 의존적이며, 그들은 (당신의 신경 네트워크의 아키텍처도 따라 여기에 S 상 하나와 유사하다 두 softmax를 함수의 응용 프로그램을 참조 예를 들어,).
함수의 일반적인 동작에 대한 몇 가지 연구를 찾을 수 있지만 정의 된 결정적 목록 (당신이 묻는 것 ...)을 가질 수는 없다고 생각합니다.
나는 여전히 학생이므로 지금까지 내가 아는 것을 지적합니다.
Danielle의 큰 대답을 완벽하게하기 위해 다른 패러다임이 있는데, 여기에는 액체 상태 기계 , 익스트림 학습 기계 및 반향 상태 네트워크 와 같은 가중치 및 / 또는 활성화 유형에 대해 무작위로 '바퀴를 돌립니다' .
이러한 아키텍처를 생각하는 한 가지 방법 : 저수지는 SVM과 같은 일종의 커널이거나 데이터가 일부 초 공간에 투영되는 간단한 FFNN의 하나의 큰 숨겨진 계층입니다. 실제 학습은 없으며 만족스러운 솔루션에 도달 할 때까지 저수지가 재생성됩니다.
이 좋은 답변을 참조하십시오 .
최근 활성화 기능을 검토 한 기사는
Chigozie Enyinna Nwankpa, Winifred Ijomah, Anthony Gachagan 및 Stephen Marshall의 " 활성화 기능 : 딥 러닝 실습 및 연구 동향 비교 "
심층 신경망은 다양한 신흥 도메인에서 성공적으로 사용되어 현재까지 개발되고있는 더 심층 학습 (DL) 아키텍처의 실제 복잡한 문제를 해결합니다. 이러한 최첨단 성능을 달성하기 위해 DL 아키텍처는 AF (활성화 기능)를 사용하여 숨겨진 DL 레이어와 지정된 DL 아키텍처의 출력 레이어간에 다양한 계산을 수행합니다. 이 백서에서는 딥 러닝 응용 프로그램에 사용 된 기존 AF에 대한 설문 조사를 제공하고 딥 러닝 응용 프로그램에 활성화 기능을 사용하는 최근 동향에 중점을 둡니다. 이 논문의 참신한 점은 DL에 사용 된 대부분의 AF를 컴파일하고 최신 연구 결과에 대한 실제 딥 러닝 배포에서 이러한 기능의 응용 및 사용에 대한 현재 추세를 간략하게 설명합니다. 이 편집은 배포 준비가 된 특정 응용 프로그램에 가장 적합하고 적절한 활성화 기능을 선택하는 효과적인 결정을 내리는 데 도움이됩니다. AF에 관한 대부분의 연구 논문은 유사한 작업과 결과를 강조하기 때문에이 논문은시기 적절합니다.이 논문은 현재까지 딥 러닝 연구에서 발견 된 문헌의 연구 결과와 비교하여 AF 응용 프로그램의 추세를 실제로 컴파일하는 것입니다.