Deep Learning UB 2021 — summer school : Day#10

2B | +1% better 2day | ai.015

--

Сүүлчийн семинар #5 дээр McKinsey-н Энхболд BERT-г хийж үзүүлсэн.

Сургалт хийхэд мэдээж өгөгдлөө ойлгогдохоор бэлдэх, илэрхийлэх шаардлагатай байдаг. NLP загварын хувьд Language Representation нь текст ороод ирэхэд түүнийг яаж илэрхийлэх вэ гэдгийг тодорхойлдог. Task Model нь харин гол хийх ажлыг тодорхойлно. Текстийн утгыг эерэг сөргөөр ангилах г.м.

2013 оноос өмнө Bag of Words аргыг ашигладаг байсан. Энэ нь гэхдээ Context-г ойлгодоггүй байсан. Тухайн үед Task Model дээр голлон анхаардаг байж.

2013-с хойш Word2Vec, FastText, GloVe зэрэг нь Word Embedding ашиглаад Context-н талаар ойлголттой болсон. Гэхдээ өгүүлбэрийг бүтнээр нь биш үг тус бүрийг ойролцоо вектороор олж болдог байсан.

Мэдээж энэ нь бас асуудалтай учир дараагийн шат болох Contextual Embedding нь 2017 оноос бий болсон. Анх үүсэхдээ CoVe үүсч 1 жилийн дараа ELMo гарсан.
— CoVe : LSTM ашигласан, machine translation байсан
(encoder & decoder сургаад зөвхөн encoder-оо авч ашигласан)
— ELMo : CoVe-тэй төстэй LSTM + урагшаа, арагшаа таамагласан 2 чиглэлтэй болсон (performance илүү сайжирсан)

Contextual Embeddings дээр өгүүлбэрээс хамаарч (өгүүлбэр дотор бусад үгээс) тухайн вектор тодорхойлогддог болсон.

За тэгээд сүүлийн үед Task Model-с илүү Language Representation дээр илүү анхаардаг болсон байгаа.

ELMo, OpenAI GPT, BERT 3-н бүтцийг харьцуулж харвал ELMo нь нэгэн зэрэг 2 давхарга сургаж байгаа нь удаан болгодог. OpenAI, BERT 2 нь ижилхэн Transformers ашигладаг.

За тэгээд Монгол хэл дээрээ шууд BERT-г ашиглая.

Мэдээж эхлээд хэрэгтэй сангуудаа суулгаж, хэрэглэх өгөгдлөө бэлдэнэ. Мөн Transformers маань амжилттай суусан эсэхийг шалгаж байгаа. python -c ‘’

Оруулж ирсэн өгөгдлөө шалгаж харвал (dataset) доорх шиг харагдана.

Бэлэн сургасан байгаа загварын оруулж ирээд tokenizer ашиглаад үзье. HuggingFace-с tugstugi/bert-base-mongolian-uncased сонгосон. Uncased → Бүх үсгийг ижилхэн жижиг болгосон гэсэн үг. Tokenizer гээд run-двал ямар сан, хэдэн vocabulary-тай гэх мэт бүх мэдээллийг харж болно.

Дараа нь мэдээний уртыг 128 token-ы урт гэж болно. Ойролцоогоор 3–4 өгүүлбэрийг хэсэгчилж авч сургахад бэлдэж байгаа гэсэн үг. (128 sub-words) Дараа нь түүнийгээ pre-process хийсэн. Өгүүлбэрийг тоо-руу хувиргасан.

Дараа нь pre-trained загвараа оруулж ирээд (MaskedLanguageModel=MLM). Жишээ болгож “Монгол бол MASK онцлогтой улс” гэсэн өгүүлбэрийг оруулахад дараах хариултууд гарч ирж байна.

Дараагийн хэсэгт model-руу оноож өгч байна. BERT-н хэсгийг аваад, ямархуу загвар гэдэг мэдээллийг харж байгаа. Бидний хувьд classifier давхаргыг нэмж сургана.

Тэгээд гараас hyperparameters-г оноож өгөөд, performance-аа accuracy-р хэмжихээр тохируулж байгаа.

За тэгээд сургалтаа эхлэнэ. Ойролцоогоор 2 цаг орчим ажиллахаар байна лээ.

Сургаж дууссаны дараа ямар нэг мэдээний сайтруу ороод мэдээг шалгаж ямар категори гэдгийг харж болно.

https://huggingface.co/datasets/eduge

Дараагийн 1 дасгал нь Wave2Vec-г туршсан. Текст дээр хийсэн шиг зураг болон дуу дээр яг адилхан санааг хэрэгжүүлж болно. Wave2Vec нь дууг 2 CNN дамжуулаад, Transformers оруулаад Contrastive loss тооцно.

Мэдээж хэрэгтэй сангуудаа суулгаад, import хийгээд, бэлэн сургасан сангаа ашиглахаар оруулцгаая. Мөн ямархуу загвар гэдэг мэдээллийг нь харья.

Өгөгдлийн хувьд Mozilla-н CommonVoice-г ашиглацгаая. Би бас Baidu DeepSpeech туршихдаа энийг ашиглаж байсын байна.

Тест хийгээд 2 өгүүлбэр оруулаад шалгахад иймэрхүү таньж байна.

Өөрсдөө бас шууд Colab дээр хоолойгоо бичээд шалгавал

“Зуны сургалт хийсэн хүмүүсдээ маш их баярлалаа”

Ингээд дуусчихлаа ш… :) DLUB2021 зохион байгуулсан бүх залуустаа баярлалаа. Удахгүй нэгдсэн нийтлэлээрээ уулзана аа.

--

--

Билигүн.Б (Програмч аав)
2B +1% better 2day

I am who I am... || өөрийнхөөрөө байхаас ичихгүй