๐Ÿ“šSTUDY/๐Ÿ”ฅPytorch ML&DL

09-2. Weight initialization

ํ•ด๋Š”์„  2020. 3. 10. 16:46

๋ณธ ๊ธ€์€ '๋ชจ๋‘๋ฅผ ์œ„ํ•œ ๋”ฅ๋Ÿฌ๋‹ ์‹œ์ฆŒ 2'์™€ 'pytorch๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋”ฅ ๋Ÿฌ๋‹ ์ž…๋ฌธ'์„ ๋ณด๋ฉฐ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค.

ํ•„์ž์˜ ์˜๊ฒฌ์ด ์„ž์—ฌ ๋“ค์–ด๊ฐ€ ๋ถ€์ •ํ™•ํ•œ ๋‚ด์šฉ์ด ์กด์žฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


We initialized the weights in a stupid way - Geoffrey Hinton

์ธ๊ณต์‹ ๊ฒฝ๋ง ํ•™์Šต์—์„œ ์ค‘์š”ํ•œ ๋ถ€๋ถ„ ์ค‘ ํ•˜๋‚˜์ธ, ๊ฐ€์ค‘์น˜ ์ดˆ๊ธฐํ™”! Initialized! ๊ฐ™์€ ๋ชจ๋ธ์„ ํ›ˆ๋ จ์‹œ์ผœ๋„ ๊ฐ€์ค‘์น˜์˜ ์ดˆ๊ธฐ๊ฐ’์— ๋”ฐ๋ผ ๋ชจ๋ธ์˜ ํ›ˆ๋ จ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ฌ๋ผ์ง€๊ธฐ๋„ ํ•œ๋‹ค. ์ฆ‰, ๊ฐ€์ค‘์น˜์˜ ์ดˆ๊ธฐํ™”๊ฐ€ ์ž˜ ๋˜์–ด์•ผ ๋”ฅ๋Ÿฌ๋‹ ์„ฑ๋Šฅ๋„ ์˜ฌ๋ผ๊ฐ€๊ณ  ๊ธฐ์šธ๊ธฐ ์†Œ์‹ค๊ณผ ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ์™„ํ™”์‹œํ‚ฌ ์ˆ˜๋„ ์žˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด, ์–ด๋–ป๊ฒŒ ์ดˆ๊ธฐํ™”๋ฅผ ํ•ด์•ผ ํ• ๊นŒ?

 

  • ์ผ๋‹จ, 0์œผ๋กœ ์ดˆ๊ธฐํ™” ํ•˜๋Š” ๊ฒƒ์€ ๊ต‰์žฅํžˆ ๋‚˜์˜๋‹ค! ์ž˜๋ชปํ•˜๋‹ค๊ฐ€๋Š”, ์—ญ์ „ํŒŒ๋ฅผ ํ•  ๋•Œ ๋ชจ๋“  ๊ธฐ์šธ๊ธฐ ๊ฐ’์ด 0์ด ๋˜์–ด์„œ ํ•™์Šต์ด ๋ถˆ๊ฐ€๋Šฅ ํ•˜๋‹ค.
  • ๊ทธ๋ฆฌ๊ณ  ์ดˆ๊ธฐํ™”๋Š” ๋งค์šฐ ๋ฏผ๊ฐํ•˜๊ณ , ์–ด๋ ค์šด ์ด์Šˆ๋‹ค.
  • ๊ทธ๋Ÿฐ๋ฐ ๋”ฅ๋Ÿฌ๋‹์˜ ์•„๋จธ์ง€๋ผ ๋ถˆ๋ฆฌ๋Š” Geoffrey Hinton ๊ต์ˆ˜๊ฐ€ RBM์ด๋ผ๋Š” ์ดˆ๊ธฐํ™” ๊ธฐ๋ฒ•์„ ์„ ๋ณด์˜€๋‹ค. 

1. Restricted Boltzmann Machine (RBM)

restrcted = no connections within a layer

 

์ฆ‰, layer ์•ˆ์—์„œ๋Š” ์—ฐ๊ฒฐ์ด ์—†๊ณ  layer์™€ layer๋ผ๋ฆฌ ์ „๋ถ€ ์—ฐ๊ฒฐ์ด ์žˆ๋Š” ๋ชจ๋ธ์„ ์ œํ•œ๋œ ๋ณผ์ธ ๋งŒ ๋จธ์‹ ์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ๊ฐ™์€ layer์•ˆ์˜ ๋…ธ๋“œ๋ผ๋ฆฌ๋Š” ์—ฐ๊ฒฐ์ด ์ œํ•œ๋˜์–ด ์žˆ์–ด์„œ '์ œํ•œ๋œ'์ด ๋ถ™์—ˆ๋‹ค.

 

ํ›ˆ๋ จ ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. 

  • 1๋‹จ๊ณ„ forward : x๊ฐ€ ๋“ค์–ด์™”์„ ๋•Œ y๋ฅผ ๋งŒ๋“ ๋‹ค. (Encoding)
  • 2๋‹จ๊ณ„ backward : x'=y๊ฐ€ ๋“ค์–ด์™”์„ ๋•Œ, ๋‹ค์‹œ x๋ฅผ ๋ณต์›ํ•œ๋‹ค. (Decoding)
  • 3๋‹จ๊ณ„ : ์žฌ๊ตฌ์„ฑ๋œ ๊ฐ’๊ณผ ์›๋ž˜์˜ ์ž…๋ ฅ ๊ฐ’์„ ๋น„๊ตํ•˜์—ฌ ํ‰๊ฐ€.

์ด๋ ‡๊ฒŒ 3๋‹จ๊ณ„๋ฅผ ์ž…๋ ฅ๊ฐ’๊ณผ ์žฌ๊ตฌ์„ฑ๋œ ๊ฐ’์ด ์ตœ๋Œ€ํ•œ ๊ฐ€๊นŒ์›Œ ์งˆ ๋•Œ ๊นŒ์ง€ ๋ฐ˜๋ณตํ•œ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ๋„ˆ๋ฌด ๋ณต์žกํ•ด์„œ ์ด์ œ๋Š” ์ž˜ ์“ฐ์ด์ง€ ์•Š๋Š”๋‹ค.

 

๊ทธ๋ ‡๋‹ค๋ฉด, RBM์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๊ฐ„๋‹จํ•˜๊ฒŒ, ๋ ˆ์ด์–ด์˜ ํŠน์„ฑ์— ๋”ฐ๋ผ์„œ ๋‹ค๋ฅด๊ฒŒ ์ดˆ๊ธฐํ™” ํ•˜๋Š” ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์—๋Š” ๋ญ๊ฐ€ ์žˆ์„๊นŒ?

 

2. Xavier initialization

์„ธ์ด๋น„์–ด ์ดˆ๊ธฐํ™”, ๋˜๋Š” ๊ธ€๋กœ๋Ÿฟ ์ดˆ๊ธฐํ™”๋ผ๊ณ  ํ•œ๋‹ค.

์ด ๋ฐฉ๋ฒ•์€ ๊ท ๋“ฑ ๋ถ„ํฌ, ์ •๊ทœ ๋ถ„ํฌ ๋‘๊ฐ€์ง€ ๊ฒฝ์šฐ๋กœ ๋‚˜๋‰œ๋‹ค.

์ด์ „ ์ธต์˜ ๋‰ด๋Ÿฐ ๊ฐœ์ˆ˜์™€ ๋‹ค์Œ ์ธต์˜ ๋‰ด๋Ÿฐ ๊ฐœ์ˆ˜๋ฅผ ๊ฐ€์ง€๊ณ  ์‹์„ ์„ธ์šฐ๋ฉฐ, ์ด๋ ‡๊ฒŒ ์„ธ์›Œ์ง„ ์‹ ๋ฒ”์œ„ ๋‚ด์—์„œ ๋žœ๋คํ•˜๊ฒŒ ์ˆ˜๋ฅผ ๊ฐ€์ ธ์™€์„œ ์ดˆ๊ธฐํ™” ํ•œ๋‹ค.

 

1) Xavier Normal initialization (์ •๊ทœ ๋ถ„ํฌ)

์ •๊ทœ ๋ถ„ํฌ๋กœ ์ดˆ๊ธฐํ™” ํ•  ๊ฒฝ์šฐ์—๋Š” ํ‰๊ท ์ด 0์ด๊ณ  ํ‘œ์ค€ํŽธ์ฐจ๊ฐ€ var(W)๋ฅผ ๋งŒ์กฑํ•˜๋„๋ก ํ•ด์•ผ ํ•œ๋‹ค.

 

2) Xavier Uniform initilazation (๊ท ๋“ฑ ๋ถ„ํฌ)

์ € ํ•œ ๋ฉ์–ด๋ฆฌ๋ฅผ m์ด๋ผ๊ณ  ํ•  ๋•Œ, -m๊ณผ +m ์‚ฌ์ด์˜ ๊ท ๋“ฑ ๋ถ„ํฌ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

 

 

  • Xavier ์ดˆ๊ธฐํ™”๋Š” ์—ฌ๋Ÿฌ ์ธต์˜ ๊ธฐ์šธ๊ธฐ ๋ถ„์‚ฐ ์‚ฌ์ด์— ๊ท ํ˜•์„ ๋งž์ถฐ์„œ ํŠน์ • ์ธต์ด ๋„ˆ๋ฌด ์ฃผ๋ชฉ์„ ๋ฐ›๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ์ธต์ด ๋’ค์ณ์ง€๋Š” ๊ฒƒ์„ ๋ง‰๋Š”๋‹ค.
  • S์ž ํ˜•ํƒœ์ธ ํ™œ์„ฑํ™” ํ•จ์ˆ˜์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ๋•Œ์—๋Š” ์ข‹์€ ์„ฑ๋Šฅ์„ ๋ณด์ด์ง€๋งŒ, ReLU์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ๋•Œ์—” ์„ฑ๋Šฅ์ด ์ข‹์ง€ ์•Š๋‹ค. ์ฆ‰, ๋‹ค๋ฅธ ์ดˆ๊ธฐํ™” ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

 

3. He initialization

xavier initialization๊ณผ ์œ ์‚ฌํ•˜๊ฒŒ ์ •๊ทœ ๋ถ„ํฌ์™€ ๊ท ๋“ฑ ๋ถ„ํฌ ๋‘ ๊ฐ€์ง€ ๊ฒฝ์šฐ๋กœ ๋‚˜๋‰œ๋‹ค. ๋Œ€์‹ , ์„ธ์ด๋น„์–ด ์ดˆ๊ธฐํ™”์™€ ๋‹ค๋ฅด๊ฒŒ ๋‹ค์Œ ์ธต์˜ ๋‰ด๋Ÿฐ ์ˆ˜๋ฅผ ๋ฐ˜์˜ํ•˜์ง€ ์•Š๋Š”๋‹ค.

 

1) He Normal initialization (์ •๊ทœ ๋ถ„ํฌ)

์ •๊ทœ ๋ถ„ํฌ๋กœ ์ดˆ๊ธฐํ™”ํ•  ๊ฒฝ์šฐ์—๋Š” ํ‘œ์ค€ ํŽธ์ฐจ σ๊ฐ€ ์œ„๋ฅผ ๋งŒ์กฑํ•˜๋„๋ก ํ•ด์•ผ ํ•œ๋‹ค.

 

 

2) He Uniform initialization (๊ท ๋“ฑ ๋ถ„ํฌ)

4. ์š”์•ฝ

  • ์‹œ๊ทธ๋ชจ์ด๋“œ, ํ•˜์ดํผ๋ณผ๋ฆญํƒ„์  ํŠธ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉ => ์„ธ์ด๋น„์–ด ์ดˆ๊ธฐํ™”
  • ReLU ๊ณ„์—ด ํ•จ์ˆ˜ -> He ์ดˆ๊ธฐํ™”
ReLU + He ์ดˆ๊ธฐํ™” ๋ฐฉ๋ฒ•์ด ์ข€ ๋” ๋ณดํŽธ์ !

<Reference>

https://deeplearningzerotoall.github.io/season2/lec_pytorch.html

https://wikidocs.net/61271

https://steemit.com/kr/@yoonheeseung/2-restricted-boltzmann-machines-rbms