Autoencoder - BD-SEARCH/MLtutorial GitHub Wiki

Autoencoder(์˜คํ† ์ธ์ฝ”๋”)๋Š” ์ธํ’‹๊ณผ ์•„์›ƒํ’‹ ๋…ธ๋“œ์˜ ์ˆ˜๊ฐ€ ๊ฐ™์€ ์ธ๊ณต์‹ ๊ฒฝ๋ง์„ ์ด์šฉํ•ด Unsupervised Learning์œผ๋กœ feature๋ฅผ ์ถ”์ถœํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

input layer ๋…ธ๋“œ ์ˆ˜์™€ output layer ๋…ธ๋“œ ์ˆ˜๊ฐ€ ๊ฐ™์œผ๋ฏ€๋กœ hidden layer์˜ ์ˆ˜๊ฐ€ ๊ทธ๋ณด๋‹ค ๋งŽ๊ณ (sparsity) ์ ์Œ(reconstructed)์˜ ์—ฌ๋ถ€๊ฐ€ ์ค‘์š”ํ•˜๋‹ค. ๋”ฐ๋ผ์„œ Autoencoder๋ฅผ ํ†ตํ•ด hidden layer์— input ๋ฐ์ดํ„ฐ๋ฅผ ์••์ถ•์ ์œผ๋กœ ์ €์žฅํ•จ์œผ๋กœ์จ ์›๋ณธ ๋ฐ์ดํ„ฐ์˜ feature์„ ํšจ๊ณผ์ ์œผ๋กœ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ๋‹ค.

  • hidden layer์—์„œ ์ถ”์ถœํ•œ feature๋ฅผ SVM, ์ธ๊ณต์‹ ๊ฒฝ๋ง, Softmax Classifier์— ์ง‘์–ด๋„ฃ์–ด ๋ถ„๋ฅ˜ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

๊ณ ์ฐจ์›์˜ vector ๊ฐ’๋“ค์„ ์ €์ฐจ์›์˜ vector๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๊ฒŒ ๋ชฉ์ ์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Word2Vec๊ณผ ๊ฐ™์ด One-hot encoding(์–ด๋Š ๋ฒกํ„ฐ์—์„œ ๊ฐ๊ฐ์˜ ๋‹จ์–ด๊ฐ€ ํ•˜๋‚˜์˜ ์ฐจ์›์„ ๊ฐ€์ง€๋„๋ก ์ธ์ฝ”๋”ฉ) ์ˆ˜๋งŒ~์ˆ˜์‹ญ๋งŒ ๊ฐœ์˜ ๋‹จ์–ด๋ฅผ 200์ฐจ์›์˜ vector๋กœ ๋งŒ๋“ค ๋•Œ Autoencoder๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

Autoencoder์˜ ๊ตฌ์กฐ๋Š” ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™๋‹ค. ์ด Model์˜ ๋ชฉ์ ์€ ์–ด๋Š ๊ฐ’์„ ์ž…๋ ฅํ•˜๋ฉด ๋˜‘๊ฐ™์€ ๊ฐ’์„ ๊ทธ๋Œ€๋กœ ์ถœ๋ ฅํ•˜๋Š” ๊ฒƒ์ด๋‹ค. encoder ๋ถ€๋ถ„์—์„  ์ถ”์ƒ์ ์ธ feature๋ฅผ ์ฐพ๊ณ , decoder ๋ถ€๋ถ„์—์„  ์ถ”์ƒ์ ์ธ feature๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๋‹ค์‹œ ์›๋ž˜ ๊ฐ’์„ ์ถ”์ •ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. Code Layer์˜ ๊ฐ’์ด feature๊ฐ€ ์ถ”์ถœ๋œ ๊ฐ’์ด๋‹ค. ์—ฌ๊ธฐ์„œ Code Layer์˜ ํฌ๊ธฐ๋Š” Input/Output Layer์˜ ํฌ๊ธฐ๋ณด๋‹ค ์ž‘์•„์•ผ ํ•œ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด Input Layer์˜ ๊ฐ’์„ ๊ทธ๋Œ€๋กœ ๋ณต์ œํ•ด์„œ Output Layer๋กœ ๋‚ด ๋†“๊ฒŒ ๋˜๋ฉฐ, ๊ณ ์ฐจ์›์˜ vector๋ฅผ ์ €์ฐจ์› vector๋กœ ์ค„์ด๊ณ ์ž ํ•˜๋Š” Autoencoder์˜ ๋ชฉ์ ๊ณผ๋„ ๋งž์ง€ ์•Š๋Š”๋‹ค.