ბუნებრივი ენის დამუშავება 5 წთ კითხვა

განმეორებადი ნერვული ქსელები

სალექციო ვიქტორინა

წინა სექციებში ჩვენ ვიყენებდით ტექსტის მდიდარ სემანტიკურ წარმოდგენებს და მარტივ ხაზოვან კლასიფიკატორს ემბედინგების თავზე. რასაც ეს არქიტექტურა აკეთებს არის სიტყვების გაერთიანებული მნიშვნელობის აღქმა წინადადებაში, მაგრამ ის არ ითვალისწინებს სიტყვების მიმდევრობას, რადგან ემბედინგების თავზე აგრეგაციის ოპერაციამ წაშალა ეს ინფორმაცია ორიგინალური ტექსტიდან. იმის გამო, რომ ამ მოდელებს არ შეუძლიათ სიტყვების დალაგების მოდელირება, მათ არ შეუძლიათ გადაჭრან უფრო რთული ან ორაზროვანი ამოცანები, როგორიცაა ტექსტის შექმნა ან კითხვებზე პასუხის გაცემა.

ტექსტის თანმიმდევრობის მნიშვნელობის გასაგებად, ჩვენ უნდა გამოვიყენოთ სხვა ნერვული ქსელის არქიტექტურა, რომელსაც ეწოდება განმეორებადი ნერვული ქსელი, ან RNN. RNN-ში ჩვენ წინადადებას ქსელის მეშვეობით გადავცემთ თითო სიმბოლოს და ქსელი აწარმოებს რაღაც მდგომარეობას, რომელსაც შემდეგ კვლავ გადავცემთ ქსელს შემდეგი სიმბოლოთი.

RNN

ავტორის სურათი

X0,...,Xn ტოკენების შეყვანის თანმიმდევრობის გათვალისწინებით, RNN ქმნის ნერვული ქსელის ბლოკების თანმიმდევრობას და ავარჯიშებს ამ თანმიმდევრობას ბოლოდან ბოლომდე უკან გავრცელების გამოყენებით. თითოეული ქსელის ბლოკი იღებს წყვილს (Xi, Si), როგორც შეყვანა და შედეგად წარმოქმნის Si+1. საბოლოო მდგომარეობა Sn ან (გამომავალი Yn) გადადის ხაზოვან კლასიფიკატორში შედეგის მისაღებად. ქსელის ყველა ბლოკი იზიარებს ერთსა და იმავე წონებს და წვრთნიან ბოლომდე გავრცელების ერთი საშვის გამოყენებით.

იმის გამო, რომ მდგომარეობის ვექტორები S0,...,Sn გადადის ქსელში, მას შეუძლია ისწავლოს თანმიმდევრული დამოკიდებულებები სიტყვებს შორის. მაგალითად, როდესაც სიტყვა not გამოჩნდება სადმე მიმდევრობაში, მას შეუძლია ისწავლოს გარკვეული ელემენტების უარყოფა მდგომარეობის ვექტორში, რაც გამოიწვევს უარყოფას.

ვინაიდან ზემოთ მოცემულ სურათზე ყველა RNN ბლოკის წონა გაზიარებულია, ერთი და იგივე სურათი შეიძლება იყოს წარმოდგენილი როგორც ერთი ბლოკი (მარჯვნივ) განმეორებადი უკუკავშირის მარყუჟით, რომელიც გადასცემს ქსელის გამომავალ მდგომარეობას უკან შეყვანაში.

RNN უჯრედის ანატომია

ვნახოთ, როგორ არის ორგანიზებული მარტივი RNN უჯრედი. ის იღებს წინა მდგომარეობას Si-1 და ამჟამინდელ სიმბოლოს Xi, როგორც შეყვანა და უნდა აწარმოოს გამომავალი მდგომარეობა Si (და, ზოგჯერ, ჩვენ ასევე გვაინტერესებს სხვა Yi, როგორც გენერაციული ქსელების შემთხვევაში).

მარტივ RNN უჯრედს აქვს ორი წონის მატრიცა შიგნით: ერთი გარდაქმნის შეყვანის სიმბოლოს (მოდით დავარქვათ მას W), ხოლო მეორე გარდაქმნის შეყვანის მდგომარეობას (H). ამ შემთხვევაში ქსელის გამომავალი გამოითვლება როგორც σ(W×Xi+H×Si-1+b), სადაც σ არის აქტივაციის ფუნქცია და b არის დამატებითი მიკერძოება.

RNN Cell Anatomy

ავტორის სურათი

ხშირ შემთხვევაში, შეყვანის ნიშნები გადის ჩაშენების ფენაში RNN-ში შესვლამდე, განზომილების შესამცირებლად. ამ შემთხვევაში, თუ შეყვანის ვექტორების განზომილებაა emb_size, ხოლო მდგომარეობის ვექტორი არის hid_size - W-ის ზომაა emb_size×hid_size, ხოლო H-ის ზომაა hid_size×hid_size.

გრძელვადიანი მოკლევადიანი მეხსიერება (LSTM)

კლასიკური RNN-ების ერთ-ერთი მთავარი პრობლემა არის ეგრეთ წოდებული გაქრობის გრადიენტების პრობლემა. იმის გამო, რომ RNN-ები გაწვრთნიან ერთ უკნიდან გავრცელებაში, მას უჭირს შეცდომის გავრცელება ქსელის პირველ ფენებში და, შესაბამისად, ქსელი ვერ ისწავლის ურთიერთობას შორეულ ტოკენებს შორის. ამ პრობლემის თავიდან აცილების ერთ-ერთი გზაა ექსპლიციტური სახელმწიფო მენეჯმენტის დანერგვა ე.წ. კარიბჭეების გამოყენებით. ამ ტიპის ორი ცნობილი არქიტექტურა არსებობს: გრძელვადიანი მოკლევადიანი მეხსიერება (LSTM) და კარით სარელეო ერთეული (GRU).

Image showing an example long short term memory cell

გამოსახულების წყარო TBD

LSTM ქსელი ორგანიზებულია RNN-ის მსგავსად, მაგრამ არსებობს ორი მდგომარეობა, რომლებიც გადაეცემა ფენიდან ფენას: ფაქტობრივი მდგომარეობა C და ფარული ვექტორი H. თითოეულ ერთეულზე, ფარული ვექტორი Hi შეერთებულია შეყვანით X_3 და აკონტროლებს, თუ რა ხდება C____3. კარიბჭე. თითოეული კარიბჭე არის ნერვული ქსელი სიგმოიდური აქტივაციით (გამომავალი [0,1] დიაპაზონში), რომელიც შეიძლება ჩაითვალოს ბიტიურ ნიღბად, როდესაც მრავლდება მდგომარეობის ვექტორზე. არის შემდეგი კარიბჭე (მარცხნიდან მარჯვნივ ზემოთ სურათზე):

  • დავიწყების კარიბჭე იღებს ფარულ ვექტორს და განსაზღვრავს C ვექტორის რომელი კომპონენტები უნდა დავივიწყოთ და რომელზე გავიაროთ.
  • შესვლის კარიბჭე იღებს გარკვეულ ინფორმაციას შეყვანისა და ფარული ვექტორებიდან და აყენებს მას მდგომარეობაში.
  • გამომავალი კარიბჭე გარდაქმნის მდგომარეობას ხაზოვანი ფენის მეშვეობით tanh აქტივაციით, შემდეგ ირჩევს მის ზოგიერთ კომპონენტს ფარული ვექტორის Hi გამოყენებით ახალი მდგომარეობის Ci+1 საწარმოებლად.

C მდგომარეობის კომპონენტები შეიძლება ჩაითვალოს როგორც დროშები, რომლებიც შეიძლება ჩართოთ და გამორთოთ. მაგალითად, როდესაც თანმიმდევრობაში ვხვდებით სახელს ალისა, შეიძლება გვსურს ვივარაუდოთ, რომ ეს ეხება ქალი პერსონაჟს და ავწიოთ დროშა იმ მდგომარეობაში, რომ წინადადებაში გვაქვს ქალის არსებითი სახელი. როდესაც შემდგომ ვხვდებით ფრაზებს და ტომ, ჩვენ ავწევთ დროშას, რომ გვაქვს მრავლობითი არსებითი სახელი. ამრიგად, მდგომარეობით მანიპულირებით ჩვენ შეგვიძლია ვივარაუდოთ წინადადების ნაწილების გრამატიკულ თვისებებზე.

LSTM-ის შინაგანი მახასიათებლების გასაგებად შესანიშნავი რესურსია ეს შესანიშნავი სტატია LSTM ქსელების გაგება კრისტოფერ ოლაჰის მიერ.

ორმხრივი და მრავალშრიანი RNN

ჩვენ განვიხილეთ განმეორებადი ქსელები, რომლებიც მოქმედებენ ერთი მიმართულებით, მიმდევრობის დასაწყისიდან ბოლომდე. ბუნებრივად გამოიყურება, რადგან წააგავს სიტყვის კითხვისა და მოსმენის ხერხს. თუმცა, რადგან ბევრ პრაქტიკულ შემთხვევაში გვაქვს შემთხვევითი წვდომა შეყვანის თანმიმდევრობაზე, შეიძლება აზრი ჰქონდეს განმეორებითი გამოთვლების გაშვებას ორივე მიმართულებით. ასეთ ქსელებს უწოდებენ ორმხრივი RNN-ებს. როდესაც საქმე გვაქვს ორმხრივ ქსელთან, დაგვჭირდება ორი ფარული მდგომარეობის ვექტორი, თითო თითოეული მიმართულებისთვის.

განმეორებითი ქსელი, ცალმხრივი ან ორმხრივი, იჭერს გარკვეულ შაბლონებს მიმდევრობის ფარგლებში და შეუძლია შეინახოს ისინი სახელმწიფო ვექტორში ან გადავიდეს გამოსავალში. როგორც კონვოლუციურ ქსელებში, ჩვენ შეგვიძლია ავაშენოთ კიდევ ერთი განმეორებადი ფენა პირველის თავზე, რათა აღვბეჭდოთ უფრო მაღალი დონის შაბლონები და ავაშენოთ დაბალი დონის შაბლონებიდან, რომლებიც ამოღებულია პირველი ფენით. ეს მიგვიყვანს მრავალფენიანი RNN-ის ცნებამდე, რომელიც შედგება ორი ან მეტი განმეორებადი ქსელისაგან, სადაც წინა ფენის გამომავალი გადაეცემა შემდეგ ფენას შეყვანის სახით.

Image showing a Multilayer long-short-term-memory- RNN

სურათი ეს მშვენიერი პოსტი-დან ფერნანდო ლოპესიდან

სავარჯიშოები: ჩასმა

განაგრძეთ სწავლა შემდეგ რვეულებში:

  • RNN-ები PyTorch-ით
  • RNN-ები TensorFlow-ით

დასკვნა

ამ ერთეულში, ჩვენ ვნახეთ, რომ RNN-ები შეიძლება გამოვიყენოთ თანმიმდევრობის კლასიფიკაციისთვის, მაგრამ სინამდვილეში, მათ შეუძლიათ მრავალი სხვა ამოცანის შესრულება, როგორიცაა ტექსტის შექმნა, მანქანური თარგმანი და სხვა. ამ ამოცანებს განვიხილავთ შემდეგ განყოფილებაში.

გამოწვევა

წაიკითხეთ რამდენიმე ლიტერატურა LSTM-ების შესახებ და განიხილეთ მათი აპლიკაციები:

  • ბადე გრძელვადიანი მოკლევადიანი მეხსიერება
  • ჩვენება, დასწრება და უთხარი: ნერვული გამოსახულების წარწერა თაობა ვიზუალური ყურადღებით

ლექციის შემდგომი ვიქტორინა

მიმოხილვა და თვითშესწავლა

  • LSTM ქსელების გაგება კრისტოფერ ოლაჰის მიერ.

ეს გაკვეთილი არის Microsoft “AI for Beginners” კურსის ქართული თარგმანი, გავრცელებული MIT ლიცენზიით.