Mashinada o'rganish qiziqarli 5-qism: chuqur o'rganish va sehrlarning sehrlari bilan tilga tarjima

Yangilanish: Ushbu maqola seriyaning bir qismi. To'liq seriyalarni ko'rib chiqing: 1 qism, 2 qism, 3 qism, 4 qism, 5 qism, 6 qism, 7 qism va 8 qism! Siz shuningdek ushbu maqolani 普通话, Russkiy, 한국어, Tiếng Việt yoki Italiano tillarida o'qishingiz mumkin.

Devning yangilanishi: Men ushbu maqolalar asosida yangi kitob yozdim! Bu nafaqat mening barcha maqolalarimni kengaytiradi va yangilaydi, balki juda ko'p minglab yangi tarkibga va ko'plab kodlash loyihalariga ega. Hozir tekshirib ko'ring!

Biz 100 ta turli xil odam tillarini birdaniga sehrgarlik bilan tarjima qila oladigan Google Tarjimonni bilamiz va yaxshi ko'ramiz. U hatto bizning telefonlarimizda va smartwatchlarda mavjud:

Google Translate orqasidagi texnologiya Machine Translation deb nomlanadi. Bu dunyoni o'zgartirdi, agar odamlar iloji bo'lmasa, ular bilan aloqa qilishlari mumkin.

Ammo biz hammamiz bilamizki, o'rta maktab o'quvchilari 15 yildan beri ispan uy vazifalarini bajarishda Google Translate-dan ... umm-ga yordam berishmoqda. Bu eski yangiliklar emasmi?

So'nggi ikki yil davomida chuqur o'rganish bizning mashinaviy tarjimaga bo'lgan yondashuvimizni to'liq qayta yozdi. Tilni tarjima qilish to'g'risida deyarli hech narsa bilmaydigan chuqur o'rganuvchilar tadqiqotchilar dunyodagi eng yaxshi mutaxassislar tomonidan yaratilgan til tarjima tizimlarini engib o'tadigan nisbatan sodda mashina o'rganish echimlarini yig'ishmoqda.

Ushbu yutuq orqasidagi texnologiya ketma-ketlikni o'rganish deb nomlanadi. Bu juda ko'p turli xil muammolarni hal qilishda ishlatiladigan juda kuchli texnik. Tarjima uchun qanday ishlatilishini ko'rib chiqqandan so'ng, biz AI chat-botlarini yozish va rasmlarni tasvirlash uchun aynan bir xil algoritmdan qanday foydalanish mumkinligini bilib olamiz.

Qani ketdik!

Kompyuterlarni tarjima qilish

Xo'sh, qanday qilib biz inson tilini tarjima qilish uchun kompyuterni dasturlashtiramiz?

Oddiy yondashuv - bu jumladagi har bir so'zni maqsadli tilga tarjima qilingan so'z bilan almashtirish. Ispan tilidan ingliz tiliga so'zma-so'z tarjima qilishning oddiy misoli.

Biz faqat har bir ispan so'zini mos keladigan inglizcha so'z bilan almashtiramiz.

Buni amalga oshirish juda oson, chunki har bir so'zning tarjimasini qidirish uchun lug'at kerak bo'ladi. Ammo natijalar yomon, chunki u grammatika va kontekstni e'tiborsiz qoldiradi.

Shunday qilib, keyingi ishingiz natijalarni yaxshilash uchun tilga tegishli qoidalarni qo'shishni boshlashdir. Masalan, siz ikkita ikki so'zli iboralarni bitta guruh sifatida tarjima qilishingiz mumkin. Va siz buyurtma otlarini va sifatlarni almashtirishingiz mumkin, chunki ular odatda ispan tilida ingliz tilida paydo bo'lganidan teskari tartibda paydo bo'ladi:

Bu ishladi! Agar biz grammatikaning har bir qismini o'zlashtira olgunimizcha ko'proq qoidalarni qo'shishda davom etsak, dasturimiz har qanday jumlalarni tarjima qila olishi kerak, shunday emasmi?

Mashinalarni tarjima qilishning eng dastlabki tizimlari shunday ishlagan. Tilshunoslar murakkab qoidalar bilan chiqishdi va ularni birma-bir dasturlashdi. Dunyodagi ba'zi aqlli tilshunoslar Sovuq urush davrida yillar davomida rus tilidagi aloqalarni osonroq izohlash uchun tarjima tizimini yaratish uchun ko'p mehnat qildilar.

Afsuski, bu ob-havo ma'lumotlari kabi oddiy, aniq tuzilgan hujjatlar uchun ishladi. Haqiqiy dunyo hujjatlari uchun ishonchli ishlamadi.

Muammo shundaki, inson tili belgilangan qoidalar to'plamiga amal qilmaydi. Inson tillari alohida holatlarga, mintaqaviy tafovutlarga to'la va oddiy qoidalarni buzadi. Bizning ingliz tilida gaplashish uslubimiz ko'proq asrlar muqaddam kimga bostirib kirganga qaraganda ko'proq o'tiradi va grammatika qoidalarini belgilaydi.

Statistikadan foydalangan holda kompyuterlarni yaxshiroq tarjima qilish

Qoidalarga asoslangan tizimlarning ishdan chiqqandan so'ng, grammatik qoidalar o'rniga, ehtimollik va statistikaga asoslangan modellardan foydalangan holda yangi tarjima usullari ishlab chiqilgan.

Statistikaga asoslangan tarjima tizimini yaratish juda ko'p ma'lumotni talab qiladi, bu erda aynan bitta matn kamida ikkita tilga tarjima qilinadi. Ushbu ikki marta tarjima qilingan matn parallel korpora deb nomlanadi. 1800 yillarda olimlar tomonidan Rosetta Stoun Misr ierogliflarini yunon tilidan aniqlashda foydalanganidek, kompyuterlar matnni bir tildan boshqasiga qanday qilib o'zgartirishni taxmin qilish uchun parallel korporadan foydalanishlari mumkin.

Baxtimizga, g'alati joylarda allaqachon ko'p marta tarjima qilingan matn mavjud. Masalan, Evropa Parlamenti ularning ishini 21 tilga tarjima qilmoqda. Shunday qilib, tadqiqotchilar ko'pincha ushbu ma'lumotlardan tarjima tizimini yaratishda foydalanadilar.

Trening ma'lumotlari odatda hayajonli! Ammo bu shunchaki millionlab va millionlab quruq hukumat hujjatlari ...

Ehtimollar haqida o'ylash

Statistik tarjima tizimlarining tub farqi shundaki, ular bitta aniq tarjimani yaratishga harakat qilishmaydi. Buning o'rniga ular minglab mumkin bo'lgan tarjimalarni ishlab chiqaradilar va keyin ushbu tarjimalarni to'g'ri bo'lishi kerak deb tartiblashadi. Ular biror narsaning "to'g'ri" ekanligini u ma'lumotlarga qanchalik o'xshash ekanligi bilan baholaydilar. Bu quyidagicha ishlaydi:

1-qadam: Asl jumlalarni bo'laklarga bo'ling

Birinchidan, biz jumlalarimizni har biriga oson tarjima qilinishi mumkin bo'lgan oddiy qismlarga ajratamiz:

2-qadam: Har bir bo'lak uchun barcha mumkin bo'lgan tarjimalarni toping

Keyinchalik, biz ushbu ma'lumotlarning har birini tarjima qilamiz, shunda biz o'quv ma'lumotlarimizdagi o'sha qismlarni tarjima qilish usullarini topamiz.

Shuni ta'kidlash kerakki, biz shunchaki tarjimalarni oddiy tarjima lug'atida ko'rib chiqayotganimiz yo'q. Buning o'rniga, haqiqiy odamlar ushbu bir xil so'zlarni haqiqiy dunyodagi jumlalarda qanday tarjima qilganlarini ko'rib turibmiz. Bu bizga turli kontekstlarda ishlatilishi mumkin bo'lgan barcha usullarni topishga yordam beradi:

Hatto eng keng tarqalgan iboralarda ham juda ko'p tarjimalar mavjud.

Ushbu ba'zi tarjimalar boshqalariga qaraganda tez-tez ishlatiladi. Har bir tarjima bizning o'quv ma'lumotlarimizda qanchalik tez-tez paydo bo'lishiga qarab, biz unga reyting bera olamiz.

Masalan, kimdir "Quiero" so'zini "men xohlayman" degani emas, "harakat qilaman" deganini anglatishi odatiy holdir. Shunday qilib, biz o'quv ma'lumotlarimizda "Kiero" ning "Men xohlayman" ga qanchalik tez-tez tarjima qilinishini ishlatishimiz mumkin. bu tarjima kamroq tez-tez uchraydigan tarjimadan og'irroq.

3-qadam: Barcha mumkin bo'lgan jumlalarni tuzing va eng munosibini toping

Keyinchalik, biz mumkin bo'lgan jumlalar to'plamini yaratish uchun ushbu qismlarning har qanday kombinatsiyasidan foydalanamiz.

Biz 2-bosqichda qayd etilgan to'liq tarjimalardan biz allaqachon turli xil yo'llar bilan birlashtirib, 2500 ta turli xil jumlalarni yaratishimiz mumkin. Bir nechta misollar:

Men yaxshi ko'raman | qoldirmoq | da | dengiz sohilida | yanada tartibli.
Aytmoqchimanki | bo'lish | ga | ochiq joy | eng yoqimli.
Menga | bo'lish | ustida | dengiz bo'yida | yanada yoqimli.
Aytmoqchimanki | borish | ga | ochiq joy | eng tartibli.

Ammo real dunyoda tizimlarning kombinatsiyalari ko'proq mumkin, chunki biz so'zlarning tartibini va jumlalarni qisqartirishning turli usullarini sinab ko'ramiz:

Men sinab ko'raman | ishga tushirish | da | yoqimli | ochiq joy.
Men xohlayman | ishga tushirish | boshiga | ko'proq tartibli | ochiq joy.
Aytmoqchimanki | unutish | da | eng toza | plyaj.
Men sinab ko'raman | borish | boshiga | ko'proq tartibli | dengiz bo'yida.

Endi siz "eng odam" degan so'zni topish uchun hosil bo'lgan barcha jumlalarni ko'rib chiqing.

Buning uchun biz har bir yaratilgan jumlalarni ingliz tilida yozilgan kitoblar va yangiliklardan millionlab haqiqiy jumlalar bilan taqqoslaymiz. Ingliz tilidagi matn qancha ko'p bo'lsa, shunchalik yaxshi.

Ushbu tarjimani bajaring:

Men sinab ko'raman | qoldirmoq | boshiga | eng yoqimli | ochiq joy.

Ehtimol, hech kim bu kabi gaplarni ingliz tilida yozmagan bo'lishi mumkin, shuning uchun bizning ma'lumotlar to'plamimizdagi biron bir jumlaga juda o'xshash bo'lmasligi mumkin. Biz ushbu tarjimani past ehtimollik balini beramiz.

Ammo ushbu tarjimani ko'rib chiqing:

Men xohlayman | borish | ga | yoqimli | plyaj.

Ushbu jumla bizning mashg'ulotlar to'plamidagi narsaga o'xshash bo'ladi, shuning uchun u yuqori ehtimollik ballini oladi.

Mumkin bo'lgan barcha jumlalarni sinab ko'rganingizdan so'ng, biz eng ko'p tarjima qilingan jumlalarni tanlaymiz va shu bilan birga haqiqiy inglizcha jumlalarga juda o'xshashmiz.

Bizning oxirgi tarjimamiz: "Men eng go'zal plyajga borishni xohlayman" bo'ladi. Yomon emas!

Statistik mashina tarjimasi ulkan bir davr edi

Statistik mashinalarni tarjima qilish tizimlari, agar siz ularga etarli ma'lumotga ega bo'lsangiz, qoidalarga asoslangan tizimlarga qaraganda ancha yaxshi ishlaydi. Frants Josef Och ushbu g'oyalarni takomillashtirdi va ularni 2000-yillarning boshlarida Google Translate-ni yaratishda ishlatdi. Mashina tarjimasi nihoyat dunyoga ma'lum bo'ldi.

Dastlabki kunlarda, tarjimaga "soqov" yondoshish, tilshunoslar tomonidan ishlab chiqilgan qoidalarga asoslangan tizimlardan yaxshiroq ishlaganligi hamma uchun ajablanarli edi. Bu 80-yillarda tadqiqotchilar orasida bir muncha ma'noga ega edi:

"Har safar tilshunosni ishdan bo'shatganimda, mening aniqligim oshib boradi."
- Frederik Jelinek

Statistik mashina tarjimasining cheklovlari

Statistik mashinalarni tarjima qilish tizimlari yaxshi ishlaydi, ammo ularni qurish va saqlash murakkab. Siz tarjima qilmoqchi bo'lgan har bir yangi til juftligi mutaxassislardan yangi ko'p bosqichli tarjima quvurini sozlash va sozlashni talab qiladi.

Ushbu turli xil quvurlarni qurish juda ko'p ish bo'lganligi sababli, savdo-sotiq qilish kerak. Agar siz Google-dan gruzinni Telegu-ga tarjima qilishni so'rasangiz, uni ingliz tiliga ingliz tiliga tarjima qilish kerak, chunki bu til juftligiga katta miqdordagi sarmoyalarni oqlash uchun etarli darajada Georgain-Telegu tarjimalari mavjud emas. Va agar siz frantsuzdan to inglizchaga kengroq tanlov qilishni so'ragan bo'lsangiz, bu tarjimani unchalik rivojlangan bo'lmagan tarjima quvuridan foydalanib amalga oshirishi mumkin.

Agar bizda kompyuterni rivojlantirish uchun zerikarli ishlarni qiladigan barcha narsalar mavjud bo'lsa, bu bizga yoqmasmidi?

Kompyuterlarni tarjima qilishni yaxshiroq qilish - bu juda qimmat odamlarsiz

Mashinalarni tarjima qilishning muqaddas panjasi - bu "qora quti" tizimi bo'lib, o'z-o'zidan tarjima qilishni o'rganadi - faqat ma'lumotlarga qarab. Statistik mashina tarjimasi bilan odamlar hali ham ko'p bosqichli statistik modellarni yaratish va chiniqtirishga muhtoj.

2014 yilda KyungHyun Cho jamoasi katta yutuqlarga erishdi. Ular ushbu "qora quti" tizimini yaratish uchun chuqur o'rganishni qo'llash usulini topdilar. Ularning chuqur o'rganish modeli parallel korporani oladi va undan foydalanib, odamlarning aralashuvisiz ushbu ikki til o'rtasida tarjima qilishni o'rganadi.

Ikkita katta g'oya buni amalga oshirishga imkon beradi - takroriy neyron tarmoqlar va kodlashlar. Ushbu ikkita fikrni aqlli tarzda birlashtirib, biz o'z-o'zini o'rganish uchun tarjima tizimini yaratamiz.

Takrorlanadigan neyron tarmoqlari

Biz 2-bo'limda takroriy neyron tarmoqlar haqida gaplashdik, ammo tezda ko'rib chiqaylik.

Doimiy (takrorlanmaydigan) neyron tarmog'i bu raqamlar ro'yxatini oladigan va natijani hisoblaydigan (oldingi mashg'ulot asosida) umumiy mashina o'rganish algoritmi. Neyron tarmoqlari ko'plab muammolarni hal qilish uchun qora quti sifatida ishlatilishi mumkin. Masalan, biz uyning atributlari asosida uyning taxminiy qiymatini hisoblash uchun neyron tarmoqdan foydalanishimiz mumkin:

Ammo aksariyat mashina o'rganish algoritmlari singari, neyron tarmoqlari ham fuqaroligi yo'q. Siz raqamlar ro'yxatiga o'tasiz va neyron tarmog'i natijani hisoblaydi. Agar siz yana o'sha raqamlarni kiritsangiz, u har doim bir xil natijani hisoblab chiqadi. O'tmishdagi hisob-kitoblarning xotirasi yo'q. Boshqacha aytganda, 2 + 2 har doim 4 ga teng.

Takrorlanuvchi neyron tarmoq (yoki qisqasi RNN) bu neyron tarmoqning biroz chayqalgan versiyasidir, bu erda neyron tarmoqning oldingi holati keyingi hisoblashning kirish qismidir. Bu shuni anglatadiki, oldingi hisob-kitoblar kelajakdagi hisob-kitoblarning natijalarini o'zgartiradi!

Odamlar undan nafratlanishadi: 1 g'alati hiyla-nayrang mashinalarni aqlli qiladi!

Nega dunyoda biz buni qilishni xohlaymiz? Biz oxirgi hisoblaganimizdan qat'i nazar, 2 + 2 har doim ham 4 ga teng bo'lmasligi kerakmi?

Ushbu hiyla neyron tarmoqlarga ma'lumotlarning ketma-ketligida naqshlarni o'rganishga imkon beradi. Masalan, birinchi bir nechta so'zlarga asoslanib, jumladagi keyingi ehtimoliy so'zni bashorat qilish uchun undan foydalanishingiz mumkin:

Bu smartfonning klaviatura ilovasi uchun

RNN-lar har qanday vaqtda siz ma'lumotlarning naqshlarini o'rganmoqchi bo'lganingizda foydalidir. Inson tili faqat bitta katta, murakkab naqsh bo'lganligi sababli, RNNlar tabiiy tillarni qayta ishlashning ko'plab sohalarida tobora ko'proq foydalanilmoqda.

Agar siz RNN haqida ko'proq bilmoqchi bo'lsangiz, siz 2-qismni o'qishingiz mumkin, unda biz soxta Ernest Xeminguey kitobini yaratishda foydalanganmiz, keyin esa boshqasini soxta Super Mario Brothers darajasini yaratish uchun ishlatganmiz.

Kodlash

Biz ko'rib chiqishimiz kerak bo'lgan boshqa g'oya - kodlash. Biz yuzni aniqlashning bir qismi sifatida 4-qismdagi kodlash haqida gaplashdik. Kodirovkalarni tushuntirish uchun, kompyuterdan tashqari, ikki xil odamga qanday qilib gaplashishimiz mumkinligini biroz aylanib chiqaylik.

Kompyuter bilan birga ikkita yuzni aytib berishga harakat qilayotganda, siz har bir yuzdan har xil o'lchovlarni to'playsiz va yuzlarni taqqoslash uchun shu o'lchovlardan foydalanasiz. Masalan, biz har bir quloqning o'lchamini yoki ko'zlar orasidagi bo'shliqni o'lchashimiz va ikkala rasmdagi o'lchovlarni ular bir xil ekanligini aniqlash uchun solishtirishimiz mumkin.

Ehtimol siz CSI kabi har qanday dastlabki detektiv tomoshalarni tomosha qilishdan oldin bu fikr bilan tanish bo'lgansiz:

Men CSI-dagi bu soqovni juda yaxshi ko'raman, shuning uchun uni yana ishlataman - chunki u qandaydir tarzda bu g'oyani aniq namoyish etishga qodir va shu bilan birga bema'nilikdir.

Yuzni o'lchovlar ro'yxatiga aylantirish g'oyasi kodlashga misoldir. Biz xom ma'lumotlarni (yuzning rasmini) olamiz va uni o'lchovlar ro'yxatiga (kodlash) aylantirmoqdamiz.

Ammo biz 4-bo'limda ko'rganimizdek, o'zimizni o'lchash uchun yuz xususiyatlarining aniq ro'yxatini tuzishning hojati yo'q. Buning o'rniga, biz yuzdan o'lchovlarni yaratish uchun neyron tarmoqdan foydalanishimiz mumkin. Ikkala o'xshash odamni qaysi o'lchovlar bilan eng yaxshi farqlashini aniqlashda kompyuter bizdan ko'ra yaxshiroq ish qila oladi.

Ushbu yuz o'lchovlari turli xil odamlarning yuzlari har xil raqamlarga ega bo'lishiga ishonch hosil qilish uchun o'rgatilgan neyron tarmoq tomonidan yaratiladi.

Bu bizning kodlashimiz. Bu bizga juda murakkab narsani (yuzning surati) oddiy (128 raqam) bilan ifodalashga imkon beradi. Endi ikki xil yuzni taqqoslash ancha oson, chunki biz to'liq tasvirlarni taqqoslashning o'rniga har bir yuz uchun ushbu 128 raqamni taqqoslashimiz kerak.

Nima deb o'ylaysan? Biz xuddi shu narsani jumlalar bilan qila olamiz! Biz har qanday turli xil jumlalarni noyob raqamlar seriyasi sifatida ifodalovchi kodlash usulini ishlab chiqishimiz mumkin:

Ushbu raqamlar ro'yxati ingliz tilidagi

Ushbu kodlashni yaratish uchun biz bir vaqtning o'zida bitta so'zni RNN-ga yuboramiz. Oxirgi so'zni qayta ishlagandan so'ng yakuniy natija butun jumlani ifodalovchi qiymatlar bo'ladi:

RNNda u orqali o'tgan har bir so'zning

Ajoyib, shuning uchun bizda butun jumlalarni noyob raqamlar to'plami sifatida ifodalashning bir usuli bor! Kodlashdagi har bir raqam nimani anglatishini bilmaymiz, ammo bu unchalik muhim emas. Modomiki har bir jumlani o'ziga xos raqamlar to'plami ajratib tursa, biz bu raqamlar qanday yaratilganligini aniq bilishimiz shart emas.

Tarjima qilaylik!

Ok, shuning uchun biz noyob raqamlar to'plamiga jumlalarni kodlash uchun RNN-dan qanday foydalanishni bilamiz. Bu bizga qanday yordam beradi? Bu erda narsalar juda ajoyib!

Ikkita RNNni olib, ularni oxirigacha bog'lab qo'ysak nima bo'ladi? Birinchi RNN jumlalarni ifodalovchi kodlashni yaratishi mumkin. Keyin ikkinchi RNN kodlashni olishi va xuddi shu mantiqni teskarisini bajarib, asl jumlani qaytadan dekodlashi mumkin:

Albatta dastlabki kodni kodlash va keyin yana dekodlash imkoniyati unchalik foydali emas. Ammo (va bu erda katta g'oya!) Biz ikkinchi RNN-ni inglizcha emas, balki ispan tilida jumlasini dekodlashga o'rgatsak nima bo'ladi? Buni amalga oshirish uchun biz parallel korpora bo'yicha ma'lumotlardan foydalanishimiz mumkin:

Va xuddi shunga o'xshash, bizda inglizcha so'zlarning ketma-ketligini ispan so'zlarining ekvivalenti ketma-ketligiga aylantirishning umumiy usuli bor!

Bu kuchli g'oya:

  • Ushbu yondashuv asosan sizda mavjud bo'lgan ma'lumotlarning soni va unga ulanadigan kompyuter kuchi bilan cheklangan. Mashinasozlik bo'yicha tadqiqotchilar buni ikki yil oldin ixtiro qilishgan, ammo u 20 yil davom etgan statistik mashinalarni tarjima qilish tizimlari singari allaqachon ishlamoqda.
  • Bu inson tiliga tegishli qoidalarni bilishga bog'liq emas. Algoritm bu qoidalarni o'zi aniqlaydi. Bu sizning tarjima quvurining har bir bosqichini sozlash uchun mutaxassislar kerak emasligini anglatadi. Kompyuter buni siz uchun qiladi.
  • Ushbu yondashuv deyarli har qanday ketma-ketlik muammosi uchun ishlaydi! Va shunisi aniqki, juda ko'p qiziqarli muammolar ketma-ketlik muammosidir. Qilishingiz mumkin bo'lgan boshqa ajoyib narsalar uchun o'qing!

E'tibor bering, biz ushbu ishni haqiqiy dunyo ma'lumotlari bilan bajarish uchun talab qilinadigan ba'zi narsalar haqida nashr qildik. Masalan, har xil uzunlikdagi kirish va chiqish jumlalari bilan shug'ullanish uchun qo'shimcha ish kerak (qarang va to'ldiring). Nodir so'zlarni to'g'ri tarjima qilishda muammolar mavjud.

O'zingizning ketma-ketlikdan tartibli tarjima tizimingizni yarating

Agar siz o'zingizning tilingiz tarjima tizimini yaratmoqchi bo'lsangiz, TensorFlow bilan birga ingliz va frantsuz tillari o'rtasida tarjima qilinadigan ishchi demo mavjud. Biroq, bu yurak xiralashishi yoki byudjeti cheklanganlar uchun emas. Ushbu texnologiya hali ham yangi va juda katta resurs talab qiladi. Agar sizda yuqori darajadagi video kartaga ega tezkor kompyuteringiz bo'lsa ham, o'zingizning tilingiz tarjima tizimini tayyorlash uchun bir oylik uzluksiz ishlov berish vaqti talab qilinishi mumkin.

Shuningdek, "ketma-ketlik va ketma-ketlik" tilini tarjima qilish texnikasi shu qadar tez yaxshilanadiki, uni ushlab turish qiyin. Yaqinda qilingan ko'pgina yaxshilanishlar (masalan, diqqat mexanizmini qo'shish yoki kontekstni kuzatib borish) natijalarni sezilarli darajada yaxshilaydi, ammo bu o'zgarishlar shu qadar yangiki, ular uchun hatto Vikipediya sahifalari ham yo'q. Agar ketma-ketlikni o'rganish bilan biron bir jiddiy ish qilishni xohlasangiz, ular sodir bo'lganda yangi ishlanmalarni davom ettirishingiz kerak bo'ladi.

Sequence-to-ketma-ketlik modellarining kulgili kuchi

Xo'sh, ketma-ketlik-ketma-ketlik modellari bilan yana nima qilishimiz mumkin?

Taxminan bir yil oldin Google tadqiqotchilari AI-botlarni yaratish uchun ketma-ketlik-ketma-ketlik modellaridan foydalanishingiz mumkinligini ko'rsatdilar. Fikr shunchalik oddiyki, u juda ajoyib.

Birinchidan, ular Google ishchilari va Google-ning Tech Support jamoasi o'rtasidagi suhbat jurnallarini yozib olishdi. Keyin ular ketma-ketlik-ketma-ketlik modelini o'rgatishdi, bu erda xodimning savolini kiritish jumlasi va Texnik qo'llab-quvvatlash guruhining javobi ushbu gapning "tarjimasi" edi.

Foydalanuvchi bot bilan o'zaro aloqada bo'lganda, ular botning javobini olish uchun har bir foydalanuvchi ushbu tizimdagi xabarlarni "tarjima qiladi".

Natijada (real) texnik qo'llab-quvvatlashga oid savollarga (ba'zan) javob beradigan yarim aqlli bot paydo bo'ldi. Foydalanuvchi va botning qog'ozlaridan olingan namunaviy suhbatning bir qismi:

Inson: aloqa rad qilindi yoki shunga o'xshash narsa
Mashina: siz ulanadigan tarmoq versiyasini bilishim mumkinmi?
Odam: men buni bilganimga amin emasman
Mashina: tarmoq biron bir foydalanuvchi sertifikati uchun ulanishni talab qiladimi?
Odam: ha
Mashina: siz hozir uyda yoki ishdamisiz? idora?
Odam: men uyda
Mashina: buni sinab ko'ring. goto sahifasiga kirib, ismingiz va parolingizni kiriting
Inson: bajarildi
Mashina: bilan tizimga kirishga urinib ko'ring va hozir yaxshi ishlashini tekshiring
Odam: ha, endi ishlaydi!
Mashina: ajoyib. yordam beradigan yana bir narsa bormi?

Shuningdek, ular millionlab film subtitrlari asosida chat botini yaratishga harakat qilishdi. G'oya kino qahramonlari o'rtasidagi suhbatlardan bot-botni odam kabi gapirishga o'rgatish vositasi sifatida foydalanish edi. Kirish jumlasi - bu bitta belgi tomonidan aytilgan dialog chizig'i va "tarjima" - keyingi belgi javob sifatida quyidagicha:

Bu haqiqatan ham qiziqarli natijalarni berdi. Bot nafaqat inson kabi suhbatlashdi, balki ozgina aql-zakovatni namoyish etdi:

Odam: mening ismim - Devid. ismim nima?
Mashina: david.
Odam: mening ismim john. ismim nima?
Mashina: john.
Inson: siz rahbarmisiz yoki izdoshisiz?
Mashina: i etakchi.
Inson: siz izdoshmisiz yoki rahbarmisiz?
Mashina: i etakchi.

Bu imkoniyatlarning boshlanishi. Biz bitta gapni boshqa jumlaga aylantirish bilan cheklanib qolmaymiz. Tasvirni matnga aylantiradigan tasvirni ketma-ketlik modelini yaratish ham mumkin!

Google-ning boshqa jamoasi buni birinchi RNN-ni konvolyutsion neyron tarmog'iga almashtirish orqali amalga oshirdi (biz 3-bo'limda bilib olganimiz kabi). Bu kirishga jumlalar o'rniga rasm bo'lishga imkon beradi. Qolganlari asosan xuddi shunday ishlaydi:

Va xuddi shunga o'xshab, biz rasmlarni so'zlarga aylantira olamiz (agar bizda juda ko'p ma'lumot mavjud bo'lsa)!

Andrey Karpati ushbu g'oyalarni kengaytirib, tasvirni batafsil tasvirlashga qodir bo'lgan tizimni yaratdi, bunda tasvirning bir nechta mintaqalarini alohida-alohida qayta ko'rib chiqardi:

Andrej Karpatining surati

Bu aniq qidiruv so'rovlariga mos keladigan rasmlarni topishga qodir bo'lgan tasvir qidiruv tizimini yaratishga imkon beradi:

Masalan: http://cs.stanford.edu/people/karpathy/deepimagesent/rankingdemo/

Hatto tadqiqotchilar teskari muammo ustida ishlaydilar, shunchaki matn tavsifiga asoslangan holda butun rasmni yaratadilar!

Faqatgina ushbu misollardan siz imkoniyatlarni tasavvur qilishni boshlashingiz mumkin. Xullas, nutqni tanib olishdan tortib, kompyuterni ko'rishgacha bo'lgan hamma narsada ketma-ketlikdan ketma-ket qo'llaniladigan dasturlar mavjud. Kelgusi yil ichida juda ko'p narsa bo'lishiga ishonaman.

Agar ketma-ketlikdan ketma-ketlik modellari va tarjimalar haqida ko'proq ma'lumot olishni istasangiz, bu erda tavsiya etilgan manbalar mavjud:

  • Richard Sokerning CS224D ma'ruzasi - Mashina tarjima qilish uchun takroriy takrorlanadigan neyron tarmoqlari (video)
  • Thang Luongning CS224D ma'ruzasi - Neyron mashinalarining o'tishi (PDF)
  • Sez2Seq modellashtirish haqida TensorFlow tavsifi
  • Deep Learning Bookning ketma-ketlikni o'rganish ketma-ketligi bobi (PDF)

Agar sizga ushbu maqola yoqqan bo'lsa, iltimos, mening Machine Learning-ga yozilishni o'ylab ko'ring! elektron pochta ro'yxati. Sizga faqat yangi va ajoyib narsalarni ulashganimda elektron pochta xabarlarini yuboraman. Bu kabi ko'proq maqolalar qachon yozganimni aniqlashning eng yaxshi usuli.

Bundan tashqari, meni Twitter-da @ageitgey-da kuzatib borishingiz, to'g'ridan-to'g'ri elektron pochta orqali yuborishingiz yoki linkda topishingiz mumkin. Agar siz mashinangizni o'rganish bo'yicha sizga yoki jamoangizga yordam bera olsam, sizdan eshitishni istayman.

Endi "Machine Learning" ishini davom ettirish qiziqarli! 6-qism!