Deep Learning UB 2021 — summer school : Day#9
2B | +1% better 2day | ai.014
Сүүлчийн лекц #5 маань Гүнзгийрүүлсэн сэдэв (attention mechanism, self-supervised learning) байлаа. Цэндсүрэн + Сайнбаяр 2 нэг нэгээр нь хувааж тайлбарласан.
Зуны сургалтын 3дах хэсэг гэж хэлж болно гэсэн.
— 1. Математик суурь
— 2. Машин сургалт + Гүнзгий сургалт үндэс
— 3. Гүнзгий сургалт гүнзгийрсэн нь (ахисан түвшин)
1 Self-supervised representation learning
Гүнзгий Ньюроны Сүлжээ нь (DNN) өөрөө маш их хэмжээний тэмдэглэсэн (labeled) өгөгдлийг ашигладаг. Гэтэл их хэмжээний тэмдэглэсэн өгөгдөл бэлдэх нь өртөг ихтэй. Харин тэмдэглэгээгүй өгөгдөл ҮНЭГҮЙ-гээр интернет-д байж л байдаг.
Тэгвэл self-supervised learning нь их хэмжээний тэмдэглэгээгүй өгөгдөл дээр pre-training хийчихээд дараа нь харьцангуй багахаан хэмжээний өгөгдөл дээр fine-tuning хийдэг.
Fine-tuning дээр 1 сургасан (pre-training) загвараа жоохон2 өөрчлөөд, өөр өөр зориулалтад ашиглах боломжтой. Тэр нь дотроо үндсэн 2 төрөл бий.
— Generative : дараагийн оролтыг таамагладаг
— Contrastive : 2 оролтын ижил эсвэл өөр байгааг харьцуулах
A. Generative : BERT
Pre-training of Deep Bidirectional Transformers for Language Understanding
Masked Language (нуусан) буюу X-н оронд ямар үг байхыг таамагладаг. Суралцахдаа Semantic=утга зүй болон Syntax=Бүтэц 2-г сурдаг. Word2Vec-с ялгаатай нь Context Embedding хийж байгаа. Үг болгоноор биш.
Нийт үгний 15%-г таахын тулд 80% MASK, 10% random, 10% same үлдээж сургадаг. Ингэснээр илүү сайн, бодитоор таамагладаг. Мөн Fine-Tuning хийх үед гарч болох эрсдлийг байхгүй болгоно. (Mask token never seen)
Түүнээс гадна BERT-д нэг өгүүлбэрийн араас ямар өгүүлбэр орохыг таадаг хэсэг бас бий. 2 өгүүлбэр нь бие биенээ сөргөж байна уу, дэмжиж байна уу гэх мэтийг таамагладаг.
Цаашлаад оролтоо WordPiece ашиглан дүрсэлдэг. Үсэг болгоноор эсвэл Үг болгоноор явснаас WordPiece буюу үгийг хэсэгчилсэн байдлаар дахин давтагдахгүй Vocabulary болгож ашигласан нь илүү амар.
Pre-training → Fine-Tuning Өөр өөр зорилгоор 1 үндсэн загвараа ашиглаж байгаа нь. Жишээ болгож BERT-Base болон BERT-Large загварын сургалт нь Wikipedia (2.5B words) + BookCorpus (800M) өгөгдөл дээр 8х8 TPU дээр 4 өдрийн турш сургасан байна. Энэ загвар нь дунджаар 82% оновчлолтой маш сайн ажилладаг байгаа.
B. Contrastive : SimCLR
A simple framework for contrastive learning of visual representations
2 зургийг сонгож авч хооронд нь харьцуулалт хийдэг. Unlabelled буюу тэмдэглэгээ байхгүй 1 зургийг аваад Data Augmentation хийж, хувиргалт хийгээд бага зэрэг өөр болгоно. Тэр 2 зургаа Ньюрон Сүлжээгээр оруулж, сургалтаа хийнэ.
1 зургийн таслах, эргүүлэх, өнгө солих, бүдэгрүүлэх гэх мэт аргуудаар Data Augmentation хийдэг. Зурагны 1 давуу тал нь Augmentation хийх боломж их байдаг.
Дараа нь сургалтаа хийгээд Cosine Similarity ашиглаж 2 зураг хоорондоо төстэй эсэхийг тооцоолдог. 1 дөхвөл ижил -1-рүү дөхвөл өөр (dissimilar) гэсэн үг болно.
Цаашлаад дахиад 1 хувиргалт нэмж (Softmax) ашиглаад Муурыг мууртай харьцуулахад адилхан байх магадлалыг тооцдог. Дараа нь сургасан загвараа Fine-Tuning хийдэг. Зарим тохиолдолд сүүлийн Linear давхаргыг л солиод, өөр өөр зүйлийг сайн таних, ангилах боломжтой.
C. Wav2Vec
A framework for self-supervised learning of speech representations
Үндсэн 3 хэсгээс бүтдэг. 1-т нь CNN ашиглаад оролтод орж ирсэн аудио бичлэгийг вектор болгоно. Дараа нь Transformers загварыг ашиглаад, тухайн оролтод орж ирж байгаа аудионуудыг нэгтгэсэн Context Representations гаргаж авна. Сүүлд нь гаралтдаа Contrastive loss ашиглана.
Мөн CNN-г Transformers луу оруулахын өмнө Mask хийдэг 1 хэсэг бий (ногоон Q). Тэрийг Quantization module гэнэ. Өөрөө 1 жижиг NN гэж болно.
Quantization Module нь өөрөө 2 хэсэгтэй. Аудио долгион өөрөө үргэлжилсэн байдаг тул эхний хэсэгт үргэлжилсэн тоог Дискрет тоо болгох хувиргалт хийдэг. Дараа нь Gumbel Softmax нь ашиглан сургалтын явцад argmax-г сурах боломжийг бүрдүүлдэг.
Сургалтаа хийхдээ бас 2 loss-г тооцдог. 10 мин өгөгдөл дээр сургалт хийхэд л WER нь 8% орчим болж сайн ажиллаж байна.
2 Attention mechanism
BERT, Wav2Vec нтрт ашиглагддаг нэг гол юм нь Attention mechanism байгаа. RNN-н хэд хэдэн асуудалтай. Тэдний нэг нь оролтоос гаралт хүртэл явахдаа олон хувиргалтын явцад мэдээлэл сарниж алга болох эрсдэлтэй. (Gradient vanishing) Мөн RNN нь зөвхөн 1 чиглэлд явдаг учир өөр дарааллаар боловсруулалт хийж чаддаггүй. (out-of-order)
Үүнийг шийдэхийн тулд Memory Network үүссэн.
A. Memory Network
Загварын гадна талд нь Санах ой (Memory) байршдаг.
Оролтын олонлог байдлаар, дараалал хамаагүй болгож, тэндээсээ 1 хэсэгт анхаарч (attention) ажилладаг.
Convolution-тэй харьцуулахад хэрэггүй хэсгийг хаяаад чухал хэсгийг л сонгож ажиллах боломжтой. RNN шиг бүх мэдээллийг 1 векторт багтаах хэрэггүй.
Memory вектороос Dot Product тооцоод, Softmax-аар оруулаад Attention weights гарч ирнэ. Эндээс аль P-г сонгохыг шийдээд Weighted Sum-г бодно. Ингэснээр зөвхөн хэрэгтэй тооцололоо хийдэг. Жишээ харцгаавал
- Sam цэцэрлэг рүү хөдлөв
- Sam гал тогоо рүү явсан
- Sam тэндээ алимаа унагаав
B. Transformer networks
Анх орчуулганд зориулж гарч ирсэн, Анхаарлын механизмийг ашигладаг загвар. Хэлтэй холбоотой загваруудад дийлдэшгүй байгаа гэнэ.
Keys нь оролт Values нь гаралт болдог. Query нь хайлт юм.
Анхаарлын механизмын давуу тал нь орчуулгын үед зөвхөн 1 хэсгийг сонгож, олон хувиргалт хийхгүйгээр хариугаа гаргаж авах боломжтой.
Өмнө нь цуваа, вектор дээр ажилладаг байсан бол одоо ОЛОНЛОГ дээр ажилладаг болсон байгаа. Оролт, гаралтын векторуудын цуглуулга дээр (олонлог) үйлдэл хийдэг. Үүнийгээ self-attention гэж нэрлэдэг. Бие биерүүгээ хандалт хийдэг (attention).
Selff-attention-ы ахисан түвшин нь Multi-head attention болно. Ингэснээр нэгэн зэрэг өөр өөр зүйлийг анхаарах боломжтой болдог.
Олонлогийн хувьд дараалал алдагдах учир байршлыг Анхаарлын механизмд оруулах хэрэгтэй. Хэлний хувьд дараалал ЧУХАЛ. Үүнийг Position Embedding-р хийдэг.
Transformers нь Анхаарлын механизмаас гадна Feedforward гэсэн дэд давхаргатай. Анхаарлын механизм нь үгнүүдийг хооронд нь холбож тооцоолол хийдэг бол Feedforward нь тус тусад нь хийсэн тооцооллыг хэлдэг.
Энэ 2 (Attention + FeedForward) нь нийлээд Transformer давхарга болдог.
Жишээ нь Transformers Network ашиглаад орчуулга хийхэд 2 [Encoder + Decoder] Transformer давхарга ашиглана. Decoder нь дотроо 3-н дэд давхаргатай байдаг. Шалтгаан нь 1 дэд давхарга орчуулах Encoder-н векторлуу анхаарлаа хандуулах хэрэгтэй байдаг.
Орчуулга хийж байгаа үед ИРЭЭДҮЙН тэмдэгрүү харж/анхаарч болохгүй. Ингэхийн тулд Masked Attention ашиглана.
Мэдээж сургахад бас асуудлууд бий. Сургахад хэцүү, Сургалт тогтворгүй болох, тооцоолоо их учир их хэмжээний resource хэрэгтэй гэх мэт. Attention weight дээр Dropout ашиглах, Learning Rate-г багаар эхлүүлэх зэргийг ашигладаг.
Сүүлийн үед Transformers ашиглаад машины орчуулга маш сайн болоод байгаа ч дагаад мөн загварын хэмжээ бас ихээр өсч байгаа. Анх Overfit болохоос сэргийлж хэт их сургаж болохгүй гэж байсан бол сүүлийн үед том загвар байх тусмаа хэсэг зуур алдаа өссөн ч буцаад буурч байгаа тренд ажигладсан. Үүнийг Double Descend гэж нэрлэдэг.
За ингээд сүүлийн лекц дууслаа. Одоо 1 семинар, 2 нээлттэй илтгэл тэгээд өнгөрсөн Food Image Classification тэмцээний тэмдэглэл л үлдлээ дээ.