신경망의 가중치를 난수로 초기화해야하는 이유는 무엇입니까? [닫은]


105

신경망을 처음부터 구축하려고합니다. 모든 AI 문헌에는 네트워크가 더 빠르게 수렴하기 위해 가중치를 임의의 숫자로 초기화해야한다는 합의가 있습니다.

그러나 신경망 초기 가중치가 난수로 초기화되는 이유는 무엇입니까?

나는 어딘가에서 이것이 "대칭을 깨뜨리기"위해 행해지는 것을 읽었고 이것은 신경망이 더 빨리 학습하게 만든다. 대칭을 깨면 어떻게 더 빨리 학습 할 수 있습니까?

가중치를 0으로 초기화하는 것이 더 나은 생각이 아닐까요? 그러면 가중치가 양수이든 음수이든 더 빨리 값을 찾을 수 있습니까?

가중치가 초기화 될 때 최적의 값에 가까워 지길 바라는 것 외에 가중치를 무작위 화하는 다른 기본 철학이 있습니까?


8
이것은 Cross Validated에 더 적합한 것 같습니다 .
Sycorax

2
이 질문은 헬프 센터에 정의 된 프로그래밍 에 관한 것이 아니라 일반적인 ML 이론 및 방법론에 관한 것이기 때문에이 질문을 종료하는 데 투표합니다 .
desertnaut

답변:


140

여기서 대칭을 깨는 것은 필수적이지 성능의 이유가 아닙니다. 다중 레이어 퍼셉트론의 처음 2 개 레이어 (입력 레이어와 은닉 레이어)를 상상해보십시오.

여기에 이미지 설명 입력

순방향 전파 중에 은닉층의 각 유닛은 신호를받습니다.

여기에 이미지 설명 입력

즉, 각 은닉 유닛은 입력 합계에 해당 가중치를 곱합니다.

이제 모든 가중치를 동일한 값 (예 : 0 또는 1)으로 초기화한다고 가정합니다. 이 경우 각 은닉 유닛은 정확히 동일한 신호를 받습니다. 예를 들어 모든 가중치가 1로 초기화되면 각 단위는 입력 (및 출력 sigmoid(sum(inputs)))의 합계와 동일한 신호를받습니다 . 모든 가중치가 0이면 더 나쁜 경우 모든 숨겨진 유닛은 0 신호를 받게됩니다. 입력이 무엇이든 상관없이-모든 가중치가 동일하면 히든 레이어의 모든 단위도 동일 합니다.

이것은 대칭의 주요 문제이며 가중치를 무작위로 (또는 적어도 다른 값으로) 초기화해야하는 이유입니다. 이 문제는 각 연결을 사용하는 모든 아키텍처에 영향을 미칩니다.


1
훌륭한 설명. 하지만 왜 symmetrynot 이라는 단어를 사용 correlation합니까? 누가 먼저 단어를 사용 했습니까?
nn0p

1
@ nn0p : 상관 관계는 2 개의 신호가 비슷한 방향으로 변하지 만 항상 그런 것은 아니며 정확히 동일한 크기로 변하지 않음을 의미합니다. 적어도 내가 아는 한, 대칭은 공식적인 정의가 없으며 여기에서 노드 사이의 모든 링크에서 정확히 동일한 신호 를 나타내는 데 사용 되므로 훈련을 쓸모 없게 만듭니다.
ffriend

@ffriend는 드롭 아웃을 사용하는 경우보다 더 이상 무작위 화가 필요하지 않습니다. 내가 잘못?
emanuele

1
@emanuele Dropout은 그 자체로 일종의 무작위 화이므로 작동해야합니다. 그러나 각 반복에서 "삭제"되지 않은 모든 연결은 여전히 ​​대칭 업데이트를 받게되므로 학습 속도가 상당히 느릴 것이므로 실제 네트워크에서 임의 초기화를 계속 사용하는 것이 좋습니다.
ffriend

이것은 forwardprop를 잘 설명하지만 backprop은 어떻습니까?
zell

74

유추:

나는 그것이 좋은 비유가되기를 바랍니다. 가능한 한 간단하게 설명하려고 노력했습니다.

누군가가 당신을 헬리콥터에서 알려지지 않은 산 정상으로 떨어 뜨 렸고 거기에 갇혀 있다고 상상해보십시오. 사방이 흐려집니다. 당신이 아는 유일한 것은 당신이 어떻게 든 해수면으로 내려 가야한다는 것입니다. 가능한 가장 낮은 지점으로 내려 가려면 어느 방향으로 가야합니까?

해수면으로가는 길을 찾을 수 없어서 헬리콥터가 다시 당신을 데려 가서 같은 산 정상 위치로 떨어 뜨릴 것입니다. 동일한 시작 위치로 자신을 "초기화"하고 있기 때문에 동일한 방향을 다시 취해야합니다 .

그러나 헬리콥터 가 산의 어딘가에 무작위로 떨어질 때마다 다른 방향과 단계를 밟게됩니다. 따라서 가능한 가장 낮은 지점에 도달 할 수있는 더 좋은 기회 가있을 것 입니다.

이것이 대칭깨뜨리는 것 입니다. 초기화는 비대칭 ( 다름 )이므로 동일한 문제에 대한 다른 솔루션을 찾을 수 있습니다.

이 비유 에서 당신이 착륙하는 곳은 가중치 입니다. 따라서 가중치가 다르면 가장 낮은 ( 또는 더 낮은 ) 지점 에 도달 할 가능성이 더 높습니다 .

또한 시스템 의 엔트로피 를 증가시켜 시스템이 더 많은 정보를 생성하여 더 낮은 지점 ( 로컬 또는 글로벌 최소값 ) 을 찾을 수 있도록합니다 .

여기에 이미지 설명 입력


10
헬리콥터가 산의 어딘가에 무작위로 여러 번 떨어 뜨리는 것 같지만 딥 러닝에서는 가중치를 무작위로 한 번만 초기화합니다.
YuFeng Shen

1
이것은 정말 직관적 인 설명입니다. 또한 NN은 거의 볼록하지 않습니다. 따라서 랜덤 화가 이상적인 방법입니다.하지만 볼록 손실 함수가있는 경우 가중치를 초기화하는 것은 물론 중요하지 않습니다.
Kingz

4
이것은 좋은 비유입니다. 그러나 당신과 당신의 친구들이 같은 지점에 있거나 다른 지점에있는 다른 사람들이 산 (즉, 네트워크의 노드)에 떨어 졌다고 가정하는 것이 더 합리적입니다. 그리고 당신이 모두 서로 의사 소통 할 수 있다고 가정하십시오. 의사 소통이 가능한 다른 지점은 더 빠른 하강을 허용합니다. 같은 자리는 모든 사람이 같은 길을 밟을 가능성이 있다는 것을 의미합니다.
ahmedhosny

26

대답은 아주 간단합니다. 기본 훈련 알고리즘은 본질적으로 탐욕 스럽습니다. 그들은 글로벌 최적을 찾지 못하고 오히려 "가장 가까운"로컬 솔루션을 찾습니다. 결과적으로 고정 된 초기화에서 시작하면 솔루션이 특정 가중치 집합으로 편향됩니다. 무작위로 (그리고 아마도 여러 번) 수행하면 오류 표면의 이상한 부분에 갇힐 가능성이 훨씬 적습니다.

동일한 인수가 전역 최적 (k- 평균, EM 등)을 찾을 수없고 전역 최적화 기술 (SVM 용 SMO 알고리즘과 같은)에는 적용되지 않는 다른 알고리즘에도 적용됩니다.


그래서 무작위 화만으로 국소 최솟값에 갇히지 않을 것이라는 보장은 없습니까? 그러나 다른 무작위 가중치로 여러 번 실행하면 전역 최소값을 얻을 수 있습니까?
Shayan RC

1
보장 할 수는 없지만 여러 초기화를 통해 적어도 진정한 최적에 근접 할 수 있습니다.
lejlot 2013

가중치를 초기화하기 위해 값을 설정하는 표준 공식이나 규칙이 있습니까 ?? 시그 모이 드 함수가 사용되는 피드 포워드, 다층, 역 전파 신경망이 있습니다.
lkkkk 2014 년

"신경망"는 S.Haykin 책에서 엄지 손가락의 몇 가지 규칙을가
lejlot

3
이것은 사람들이 무작위 초기화를 사용하는 이유가 아닙니다. 대부분의 사람들은 다른 무작위 초기화로 훈련을 여러 번 다시 시작하지 않고 네트워크가 여전히 좋은 로컬 최적화에 도달 할 수 있기 때문입니다.
cesarsalgado

4

언급했듯이 핵심 은 대칭을 깨는 것 입니다. 모든 가중치를 0으로 초기화하면 신경망의 모든 은닉 뉴런 (단위)이 정확히 동일한 계산을 수행하기 때문입니다. 다른 은닉 유닛이 다른 함수를 계산하기를 원하기 때문에 이것은 우리가 원하는 것이 아닙니다. 그러나 모두 동일한 값으로 초기화하면 불가능합니다.


2
  1. 가중치를 0으로 초기화하는 것이 더 나은 생각이 아닐까요? 그러면 가중치가 양수이든 음수이든 더 빨리 값을 찾을 수 있습니까?

  2. 대칭을 깨면 어떻게 더 빨리 학습 할 수 있습니까?

모든 가중치를 0으로 초기화하면 모든 레이어의 모든 뉴런이 동일한 계산을 수행하여 전체 딥 넷을 쓸모 없게 만들어 동일한 출력을 제공합니다 . 가중치가 0이면 전체 딥 네트의 복잡성은 단일 뉴런 의 복잡성과 동일 하며 예측은 무작위보다 나을 것이 없습니다.

동일한 입력에 연결된 은닉 계층에서 나란히있는 노드는 학습 알고리즘이 가중치를 업데이트하기 위해 다른 가중치를 가져야합니다.

가중치를 0이 아닌 값으로 만들면 (0.1과 같이 0에 가깝게) 알고리즘은 다음 반복에서 가중치를 학습하고 고정되지 않습니다. 이런 식으로 대칭이 깨집니다.

  1. 가중치가 초기화 될 때 최적의 값에 가까워 지길 바라는 것 외에 가중치를 무작위 화하는 다른 기본 철학이 있습니까?

확률 적 경사 하강 법과 같은 확률 적 최적화 알고리즘은 검색의 시작점을 선택하고 검색을 진행할 때 임의성을 사용합니다.

신경망 검색 또는 학습의 진행을 수렴이라고합니다. 차선의 솔루션 또는 로컬 최적화를 발견하면 조기 수렴이 발생합니다.

하나의 로컬 옵티마에 의존하는 대신 다른 임의 가중치로 알고리즘을 여러 번 실행하면 로컬 옵티마에 갇히지 않고 글로벌 옵티마를 찾을 수있는 가장 좋은 가능성이 있습니다.

2015 년 이후, 기계 학습 연구의 발전으로 인해 He-et-al Initializatio n이 도입되어 무작위 초기화 를 대체합니다.

w=np.random.randn(layer_size[l],layer_size[l-1])*np.sqrt(2/layer_size[l-1])

가중치는 여전히 무작위이지만 이전 뉴런 계층의 크기에 따라 범위가 다릅니다.

요약하면, 0이 아닌 임의 가중치는

  1. 지역 옵티마에서 나오십시오
  2. 대칭 깨기
  3. 추가 반복에서 글로벌 최적화에 도달

1

임의 값으로 초기화하는 것 외에도 초기 가중치는 큰 값으로 시작해서는 안됩니다. 은닉 레이어와 출력 레이어에서 tanh 및 sigmoid 함수를 자주 사용하기 때문입니다. 두 함수의 그래프를 보면 첫 번째 반복에서 순방향 전파 후 더 높은 값이 생성되고 이러한 값은 미분을 0으로 수렴하는 시그 모이 드 및 tanh 함수의 위치에 해당합니다. 이것은 학습 과정의 콜드 스타트와 학습 시간의 증가로 이어집니다. 결과적으로 가중치를 무작위로 시작하면 이러한 값에 "0.01"또는 "0.001"과 같은 값을 곱하여 이러한 문제를 방지 할 수 있습니다.


1

우선, 일부 알고리즘은 초기 가중치가 0이더라도 수렴합니다. 간단한 예는 선형 퍼셉트론 네트워크입니다. 물론, 많은 학습 네트워크는 임의의 초기 가중치를 필요로합니다 (이가 가장 빠르고 최상의 답변 을 얻을 수 있다는 보장아니지만 ).

신경망은 역 전파를 사용하여 가중치를 학습하고 업데이트합니다. 문제는이 방법에서 가중치 가 글로벌 최적이 아닌 로컬 최적 (로컬 최소 비용 / 손실)에 수렴된다는 것 입니다.

랜덤 가중치 는 네트워크가 사용 가능한 공간의 각 방향에 대한 기회잡고 점진적으로 개선 하여 한 방향 이나 답변에 국한되지 않고 더 나은 답변에 도달 하도록 도와줍니다 .

[아래 이미지는 어떻게 수렴하는지 1 차원적인 예를 보여줍니다. 초기 위치가 주어지면 로컬 최적화가 이루어 지지만 글로벌 최적화는 이루어지지 않습니다. 더 높은 차원에서 무작위 가중치는 올바른 위치에 있거나 더 나은 시작 가능성을 증가시켜 가중치를 더 나은 값으로 수렴 할 수 있습니다.] [1]

[1] : https://i.stack.imgur.com/2dioT.png [Kalhor, A. (2020). 분류 및 회귀 NN. 강의.]

가장 간단한 경우 새 가중치는 다음과 같습니다.

W_new = W_old + D_loss

여기에서 비용 함수 기울기가 이전 가중치에 추가되어 새 가중치를 얻습니다. 이전 가중치가 모두 동일하면 다음 단계에서 모든 가중치가 동일 할 수 있습니다. 결과적으로이 경우 기하학적 관점에서 신경망은 한 방향으로 기울어지고 모든 가중치는 동일합니다. 그러나 가중치가 다른 경우 가중치를 다른 양으로 업데이트 할 수 있습니다. (각 가중치가 결과에 미치는 영향 계수에 따라 비용 및 가중치 업데이트에 영향을 미치므로 초기 임의 가중치의 작은 오류도 해결할 수 있습니다.)

이것은 매우 간단한 예이지만 무작위 가중치 초기화가 학습에 미치는 영향을 보여줍니다. 이를 통해 신경망은 한쪽이 아닌 다른 공간으로 이동할 수 있습니다. 결과적으로 학습 과정에서 최고의 공간으로 이동하십시오.


0

더 수학적으로합시다. 사실 내가 대답하는 이유는 다른 대답에서이 부분이 부족하다는 것을 알기 때문입니다. 2 개의 레이어가 있다고 가정합니다. 역 전파 알고리즘을 살펴보면

dZ2 = A2-Y

dW2 = (1 / m) * dZ2 * A2.T

db2를 무시합시다. (미안하지 않아요;))

dZ1 = W2.T * dZ2. * g1 '(Z1)

...

당신이 보는 문제는 굵게 표시되어 있습니다. dZ1 (dW1을 계산하는 데 필요함)을 계산하면 W2가 0입니다. 가중치를 0을 초과하는 값으로 변경할 기회가 없었으며 그럴 수도 없습니다. 따라서 본질적으로 신경망은 아무것도 학습하지 않습니다. 로지스틱 회귀 (단일 단위)보다 나쁘다고 생각합니다. 로지스틱 회귀의 경우 X 덕분에 다른 입력을 얻으므로 더 많은 반복으로 학습합니다.이 경우 다른 계층은 항상 동일한 출력을 제공하므로 전혀 학습하지 않습니다.


0

한 가지 배웠습니다. 가중치를 0으로 초기화하면 동일한 레이어의 활성화 단위가 동일하다는 것이 분명합니다. 즉, 동일한 값을 갖게 될 것입니다. 백 브롭을 수행하면 경사 dW의 모든 행이 동일하므로 경사 하강 법 업데이트 후 가중치 행렬 W의 모든 행이 동일하다는 것을 알 수 있습니다. 일반적으로 모든 가중치를 0으로 초기화하면 네트워크가 대칭을 깨지 못합니다. 즉, 각 계층의 모든 뉴런이 동일한 것을 학습하고 n[l]=1n[l]=1모든 계층에 대해 신경망을 훈련시키는 것이 좋으며 네트워크 는 로지스틱 회귀와 같은 선형 분류기보다 강력하지 않습니다. Andrew Ng 과정 :

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.