N433. Autoencoders (AE)

ssu_hyunยท2021๋…„ 11์›” 15์ผ
0

[codestates] AI Bootcamp

๋ชฉ๋ก ๋ณด๊ธฐ
47/62
post-thumbnail

๐Ÿ† ํ•™์Šต๋ชฉํ‘œ

  • AutoEncoder (AE)์˜ ๊ตฌ์„ฑ์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • AE์˜ ํ•™์Šต๊ณผ์ •์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค.
  • Latent variable์˜ ์ถ”์ƒ์  ๊ฐœ๋…์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ๊ณ ,
  • ์ด๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๊ธฐ๋ณธ์ ์ธ information retrieval problem๋ฅผ ํ•ด๊ฒฐํ•ด๋ณธ๋‹ค.
  • AE์˜ ํ™œ์šฉ๋ฐฉ์•ˆ์— ๋Œ€ํ•ด์„œ ์ƒ๊ฐํ•ด๋ณผ ์ˆ˜ ์žˆ๋‹ค.



1. ์˜คํ† ์ธ์ฝ”๋”(Autoencoders)


์˜คํ† ์ธ์ฝ”๋”(Autoencoders)๋Š” ์–ด๋–ป๊ฒŒ ๋ณด๋ฉด ๋‹จ์ˆœํžˆ ์ž…๋ ฅ์„ ์ถœ๋ ฅ์œผ๋กœ ๋ณต์‚ฌํ•˜๋Š” ์‹ ๊ฒฝ๋ง์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ ๋„คํŠธ์›Œํฌ์— ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ ์ œ์•ฝ์„ ์คŒ์œผ๋กœ์จ ์–ด๋ ค์šด ์‹ ๊ฒฝ๋ง์ด ๋œ๋‹ค.
hidden layer์˜ ๋‰ด๋Ÿฐ ์ˆ˜๋ฅผ input layer๋ณด๋‹ค ์ž‘๊ฒŒ ํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์••์ถ•(์ฐจ์› ์ถ•์†Œ)ํ•œ๋‹ค๊ฑฐ๋‚˜, ์ž…๋ ฅ ๋ฐ์ดํ„ฐ์— ๋…ธ์ด์ฆˆ(noise)๋ฅผ ์ถ”๊ฐ€ํ•œ ํ›„ ์›๋ณธ ์ž…๋ ฅ์„ ๋ณต์›ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„คํŠธ์›Œํฌ๋ฅผ ํ•™์Šต์‹œํ‚ค๋Š” ๋“ฑ ๋‹ค์–‘ํ•œ ์˜คํ† ์ธ์ฝ”๋”๊ฐ€ ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ œ์•ฝ๋“ค์€ ์˜คํ† ์ธ์ฝ”๋”๊ฐ€ ๋‹จ์ˆœํžˆ ์ž…๋ ฅ์„ ๋ฐ”๋กœ ์ถœ๋ ฅ์œผ๋กœ ๋ณต์‚ฌํ•˜์ง€ ๋ชปํ•˜๋„๋ก ๋ฐฉ์ง€ํ•˜๋ฉฐ, ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ํ‘œํ˜„(representation)ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ํ•™์Šตํ•˜๋„๋ก ์ œ์–ดํ•œ๋‹ค.
์ด๋Š” ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ์ธต์˜ ๋‰ด๋Ÿฐ ์ˆ˜๊ฐ€ ๋™์ผํ•˜๋‹ค๋Š” ๊ฒƒ๋งŒ ์ œ์™ธํ•˜๋ฉด ์ผ๋ฐ˜์ ์ธ MLP(Multi-Layer Perceptron)๊ณผ ๋™์ผํ•œ ๊ตฌ์กฐ์ด๋‹ค. ์˜คํ† ์ธ์ฝ”๋”๋Š” ์ž…๋ ฅ์„ ์žฌ๊ตฌ์„ฑํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ถœ๋ ฅ์„ ์žฌ๊ตฌ์„ฑ(reconstruction)์ด๋ผ๊ณ ๋„ ํ•˜๋ฉฐ, ์†์‹คํ•จ์ˆ˜๋Š” ์ž…๋ ฅ๊ณผ ์žฌ๊ตฌ์„ฑ(์ถœ๋ ฅ)์˜ ์ฐจ์ด๋ฅผ ๊ฐ€์ง€๊ณ  ๊ณ„์‚ฐํ•œ๋‹ค.

  • ์šฉ๋„

    • ๋…ธ์ด์ฆˆ ์ œ๊ฑฐ
    • ์žฌ๊ตฌ์„ฑ์„ ํ†ตํ•œ ์ด์ƒ๊ฐ’ ์ฐพ๊ธฐ
    • ํŠน์„ฑ ์ถ”์ถœ : ํŠน์„ฑ๊ฐ’ ์ถ”์ถœ๊ธฐ(Feature extractor)
  • ๊ตฌ์กฐ

    • ์ธ์ฝ”๋”(encoderencoder) : ์ธ์ง€ ๋„คํŠธ์›Œํฌ(recognition network)๋ผ๊ณ ๋„ ํ•˜๋ฉฐ, ์ž…๋ ฅ์„ ๋‚ด๋ถ€ ํ‘œํ˜„์œผ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์ฐจ์› ์ถ•์†Œ, ํŠน์ง• ์ถ”์ถœ ๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ํ•œ๋‹ค.

    • ๋””์ฝ”๋”(decoderdecoder) : ์ƒ์„ฑ ๋„คํŠธ์›Œํฌ(generative nework)๋ผ๊ณ ๋„ ํ•˜๋ฉฐ, ๋‚ด๋ถ€ ํ‘œํ˜„์„ ์ถœ๋ ฅ์œผ๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค. ์›๋ž˜ ์ž…๋ ฅํ•œ ๋ฐ์ดํ„ฐ์™€ ๋น„๊ตํ•˜๊ธฐ ์œ„ํ•ด ์ถ”์ถœ๋œ ํŠน์ง•์„ ์ด๋ฏธ์ง€ ํ˜•ํƒœ๋กœ ๋ณต์› ๋ฐ ์žฌ๊ตฌ์„ฑํ•˜๋Š” ๊ธฐ๋Šฅ์„ ํ•œ๋‹ค.

    • latentlatent featurefeature : ์‹ ๊ฒฝ๋ง ๋‚ด๋ถ€์—์„œ ์ถ”์ถœ๋œ ํŠน์ง•์  ๊ฐ’๋“ค

    • ํ•™์Šต๊ณผ์ • : minimizing a loss function -> L(x,g(f(x)))L(x, g(f(x))),

      • LL = ์†์‹คํ•จ์ˆ˜, g(f(x))g(f(x))์™€ xx์˜ dissimiliarity(MeanSquaredErrorMeanSquaredError)
      • ff = encoder function (input)
      • gg = decoder function (output)

    => ์˜คํ† ์ธ์ฝ”๋”(Autoencoders)๋Š” "์ถœ๋ ฅ = ์ž…๋ ฅ"์„ ํ•™์Šต์‹œํ‚ค๋Š” ์‹ ๊ฒฝ๋ง์œผ๋กœ Loss function์—์„œ ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ์˜ ์ฐจ์ด(์›๋ณธ๊ณผ์˜ ์ฐจ์ด)๋ฅผ ์ด์šฉํ•ด ์—ญ์ „ํŒŒ(๊ฐ€์ค‘์น˜ ํ•™์Šต)๋ฅผ ์ง„ํ–‰ํ•œ๋‹ค. ์ถœ๋ ฅ์€ ์ž…๋ ฅ๊ณผ ์ตœ๋Œ€ํ•œ ๊ทผ์‚ฌํ•˜๊ฒŒ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด Latent representation์œผ๋กœ encoding(์ฐจ์›์ถ•์†Œ๊ณผ์ •)ํ•˜๊ณ , ๋‹ค์‹œ data๋กœ decoding(์žฌ๊ตฌ์„ฑ๊ณผ์ •)ํ•˜๋ฉด์„œ ์ด latent(;์ˆจ์–ด์žˆ๋Š”)๋Š” ๋ฐ์ดํ„ฐ์˜ ์ •๋ณด๋Ÿ‰์ด ๋งŽ์€ ๋ถ€๋ถ„, ๋˜๋Š” ๋Œ€ํ‘œ์ ์ธ ์†์„ฑ์„ ์šฐ์„ ํ•™์Šตํ•˜๊ฒŒ ๋œ๋‹ค.

์˜คํ†  ์ธ์ฝ”๋”์˜ ๋‹ค์–‘ํ•œ ์ •์˜

  • ์ฐจ์› ์ถ•์†Œ ๋“ฑ์„ ์œ„ํ•ด ํ‘œํ˜„ํ•™์Šต(Representation Learning) ๋˜๋Š” ํŠน์ง•ํ•™์Šต(Feature Learning)์„ ๋น„์ง€๋„ ํ•™์Šต์˜ ํ˜•ํƒœ๋กœ ํ•™์Šตํ•˜๋Š” ์‹ ๊ฒฝ๋ง
    • ํ‘œํ˜„ํ•™์Šต(Representation Learning) ๋˜๋Š” ํŠน์ง•ํ•™์Šต(Feature Learning)
      : ํŠน์ง• ํƒ์ง€(feature detection)๋‚˜ ๋ถ„๋ฅ˜(classification)๋ฅผ ์œ„ํ•ด ํ•„์š”ํ•œ ํŠน์ง•์ ๋“ค์„ ์ž๋™์œผ๋กœ ๋ฐœ๊ฒฌํ•˜๋Š” ์‹œ์Šคํ…œ์  ๊ธฐ๋ฒ•๋“ค์˜ ์ด์ฒด

    • ์ฐจ์›์ถ•์†Œ๋ฅผ ํ•˜๋Š” ์ด์œ ; ์ฐจ์›์˜ ์ €์ฃผ
      ๊ณ ์ฐจ์› ๊ณต๊ฐ„์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„์„ํ•˜๊ฑฐ๋‚˜ ์ธก์ •ํ•  ๋•Œ ์ €์ฐจ์› ๊ณต๊ฐ„์—์„œ๋Š” ๋‚˜ํƒ€๋‚˜์ง€ ์•Š์•˜๋˜ ์—ฌ๋Ÿฌ ๋ฌธ์ œ๋“ค์ด ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์œผ๋กœ, ๋จธ์‹ ๋Ÿฌ๋‹์—์„œ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์ฐจ์›์ด ์ฆ๊ฐ€ํ•  ๊ฒฝ์šฐ ๊ธฐํ•˜๊ธ‰์ˆ˜์ ์ธ ๋ฐ์ดํ„ฐ๊ฐ€ ์š”๊ตฌ๋˜๋Š” ํ˜„์ƒ
      *Manifold Hypothesis : ๊ณ ์ฐจ์›์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์ฐจ์›์˜ ๋‹ค์–‘์ฒด(Manifold)์— ํ‘œํ˜„๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๊ฐ€์ •ํ•˜๋Š” ๊ฒƒ
      => ์ฐจ์›์ด ๋Š˜์–ด๋‚ ์ˆ˜๋ก ์šฐ๋ฆฌ๊ฐ€ ์ฐพ์•„๋‚ด๊ณ ์žํ•˜๋Š” ํŠน์ง•๋“ค์„ ๋ฝ‘์•„๋‚ด๊ธฐ ์œ„ํ•ด ๋” ๋งŽ์€ ๋ฐ์ดํ„ฐ๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

  • ๋น„์ง€๋„ํ•™์Šต ๋ฐฉ์‹์œผ๋กœ ํšจ์œจ์ ์ธ ๋ฐ์ดํ„ฐ ์ฝ”๋”ฉ(encoding, decoding)์„ ํ•™์Šตํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์ธ๊ณต ์‹ ๊ฒฝ๋ง์˜ ํ•œ ์œ ํ˜•
  • ๋ณ„๋„์˜ ๋ ˆ์ด๋ธ” ์—†์ด ์ž…๋ ฅ๋ฐ์ดํ„ฐ ์ž์ฒด๋ฅผ ๋ ˆ์ด๋ธ”๋กœ ํ™œ์šฉํ•˜๋Š” ๋น„์ง€๋„ํ•™์Šต ๋ฐฉ์‹
  • ๋ฐ์ดํ„ฐ ์ฝ”๋”ฉ(encoding, decoding)์„ ์œ„ํ•ด ์›ํ•˜๋Š” ์ฐจ์›๋งŒ ํ• ๋‹นํ•ด์ฃผ๋ฉด, ์ž๋™์œผ๋กœ ํ•™์Šตํ•˜์—ฌ ์›ํ•˜๋Š” ํ˜•ํƒœ๋กœ ๋ฐ์ดํ„ฐ์˜ ์ฐจ์›์„ ์ถ•์†Œํ•ด์ฃผ๋Š” ์‹ ๊ฒฝ๋ง์˜ ํ•œ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜
  • ๋„คํŠธ์›Œํฌ๊ฐ€ ์ค‘์š”ํ•œ ์˜๋ฏธ๋ฅผ ๊ฐ–๋Š” ์‹ ํ˜ธ ์™ธ์˜ "๋…ธ์ด์ฆˆ"๋ฅผ ์ œ๊ฑฐํ•˜๋„๋ก ํ›ˆ๋ จ(๋ฐ์ดํ„ฐ์˜ ํ•ต์‹ฌ ์š”์†Œ๋ฅผ ์ฐพ์•„ ์š”์•ฝํ•˜๊ณ  ์š”์•ฝ๋œ ์ •๋ณด๋ฅผ ์ด์šฉํ•ด์„œ ๋‹ค์‹œ ์žฌ๊ตฌ์„ฑ์„ ํ•ด๋ณด๋ฉด์„œ ์š”์•ฝ์ด ์ž˜ ๋˜์—ˆ๋Š”์ง€ ํ™•์ธ)
  • ์ฝ”๋”ฉ๋œ ์ฝ”๋“œ์˜์—ญ = ์ž…๋ ฅ ๋ฐ์ดํ„ฐ์˜ ์ž ์žฌ์  ํ‘œํ˜„(Latent representation)
  • ์ธ์ฝ”๋”ฉ ๋ชจ๋ธ(ํŒŒ๋ผ๋ฏธํ„ฐ)๊ณผ ๋””์ฝ”๋”ฉ ๋ชจ๋ธ(ํŒŒ๋ผ๋ฏธํ„ฐ)์€ ๋™์‹œ์— ํ•™์Šต์ด ๋˜์ง€๋งŒ, ์ด๋ฅผ ๊ฐ๊ฐ์˜ ๋ชจ๋ธ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.



2. Stacked ์˜คํ† ์ธ์ฝ”๋” / deep ์˜คํ† ์ธ์ฝ”๋”

  • ์—ฌ๋Ÿฌ๊ฐœ์˜ ํžˆ๋“  ๋ ˆ์ด์–ด๋ฅผ ๊ฐ€์ง€๋Š” ์˜คํ† ์ธ์ฝ”๋”(์—ฌ๋Ÿฌ๊ฐœ์˜ ์˜คํ† ์ธ์ฝ”๋”๋ฅผ ์Œ“์€ ๊ฒƒ)
  • ๋ ˆ์ด์–ด๋ฅผ ์ถ”๊ฐ€ํ• ์ˆ˜๋ก ์˜คํ† ์ธ์ฝ”๋”๊ฐ€ ๋” ๋ณต์žกํ•œ ์ฝ”๋”ฉ(๋ถ€ํ˜ธํ™”)์„ ํ•™์Šตํ•  ์ˆ˜ ์žˆ๋‹ค.
  • stacked ์˜คํ† ์ธ์ฝ”๋”์˜ ๊ตฌ์กฐ๋Š” ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ๊ฐ€์šด๋ฐ ํžˆ๋“ ๋ ˆ์ด์–ด(์ฝ”๋”ฉ์ธต)์„ ๊ธฐ์ค€์œผ๋กœ ๋Œ€์นญ์ธ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง„๋‹ค.



3. ์‹ค์Šต

Colab ์‹ค์Šต

  • ๊ธฐ๋ณธ ์˜คํ† ์ธ์ฝ”๋”
  • ๋…ธ์ด์ฆˆ ์ œ๊ฑฐ์šฉ ์˜คํ† ์ธ์ฝ”๋”
  • convolutional ์˜คํ† ์ธ์ฝ”๋”
  • ์ด์ƒํ˜„์ƒ ๋ฐœ๊ฒฌ์šฉ ์˜คํ† ์ธ์ฝ”๋”



Review

  • Autoencoder๋Š” encoder์™€ decoder๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.

    • Decoder์™€ Encoder๋ฅผ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • Encoder : ํŠน์ง• ์ถ”์ถœ -> ์ค‘์š”ํ•œ ์ •๋ณด๋งŒ ๋‚จ๊น€ -> ์ฐจ์› ์ถ•์†Œ
    • Decoder : ์ถ”์ถœ๋œ ํŠน์ง•์„ ๋ฐ”ํƒ•์œผ๋กœ ์›๋ž˜ ์ด๋ฏธ์ง€๋กœ ๋ณต์›
    • label : ์›๋ณธ, input
  • ๋‹จ์ˆœํ•œ Denseํ˜•ํƒœ๋กœ๋„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, CNN์„ ์ด์šฉํ•œ ๊ตฌ์„ฑ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค

    • ๊ธฐ๋ณธ ์˜คํ† ์ธ์ฝ”๋”์™€ Convolution ์˜คํ† ์ธ์ฝ”๋”๋Š” ์–ด๋””์—์„œ ์ฐจ์ด๊ฐ€ ๋‚ ๊นŒ?
  • ์˜คํ† ์ธ์ฝ”๋”์˜ ์šฉ๋„

    • ๋…ธ์ด์ฆˆ ์ œ๊ฑฐ ์šฉ๋„

      • input ; ๋…ธ์ด์ฆˆ + ์›๋ž˜ ๋ฐ์ดํ„ฐ
      • lable : ์›๋ž˜ ๋ฐ์ดํ„ฐ
    • ์žฌ๊ตฌ์„ฑ์„ ํ†ตํ•œ ์ด์ƒ๊ฐ’์„ ์ฐพ์•„๋‚ด๋Š” ์šฉ๋„

      • ํ•™์Šต -> ์ •์ƒ ๋ฐ์ดํ„ฐ

      • ์ •์ƒ/๋น„์ •์ƒ ์–ด๋–ป๊ฒŒ ๊ตฌ๋ถ„? -> ์žฌ๊ตฌ์„ฑ ์˜ค๋ฅ˜๊ฐ’์ด ์ž„๊ณ„๊ฐ’์„ ์ดˆ๊ณผํ•˜๋ฉด ์ด์ƒ์น˜

      • ์ด์ง„๋ถ„๋ฅ˜ ๋ชจ๋ธ์— ๋น„ํ•ด AE ์žฅ์ 

        • ์ •์ƒ ๋ฐ์ดํ„ฐ๋งŒ์œผ๋กœ ๋ชจ๋ธ ๋งŒ๋“ค ์ˆ˜ ์žˆ์–ด ๋ฐ์ดํ„ฐ ํ™•๋ณด๊ฐ€ ์šฉ์ดํ•˜๋‹ค

          (์ด์ง„๋ถ„๋ฅ˜๋กœ ํ•  ๊ฒฝ์šฐ ๋ถˆ๊ท ํ˜• ๋ฐ์ดํ„ฐ๊ฐ€ ๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค. ์•” ๊ฑธ๋ฆฐ ์‚ฌ๋žŒ๋ณด๋‹ค ์•ˆ ๊ฑธ๋ฆฐ ์‚ฌ๋žŒ์ด ๋” ๋งŽ์œผ๋ฏ€๋กœ)

    • ํŠน์„ฑ์„ ์ถ”์ถœํ•˜๋Š” ์šฉ๋„

  • Conv2D <=> Conv2DTranspose : ๊ฐ€์ค‘์น˜ ํ•„์š”, ์ฑ„๋„ ์ˆ˜ ๋ณ€ํ•จ

  • Pooling <=> Unpooling : ๊ฐ€์ค‘์น˜๊ฐ€ ํ•„์š” X, ์ฑ„๋„ ์ˆ˜ ์•ˆ๋ณ€ํ•จ

0๊ฐœ์˜ ๋Œ“๊ธ€