ხელოვნურმა ინტელექტმა (AI) ბოლო წლებში მნიშვნელოვანი პოპულარობა მოიპოვა.
თუ თქვენ ხართ პროგრამული უზრუნველყოფის ინჟინერი, კომპიუტერის მეცნიერი ან ზოგადად მონაცემთა მეცნიერების ენთუზიასტი, მაშინ ალბათ გაინტერესებთ ამ სფეროს მიერ მოწოდებული გამოსახულების დამუშავების, შაბლონების ამოცნობისა და ობიექტების ამოცნობის საოცარი აპლიკაციებით.
ხელოვნური ინტელექტის ყველაზე მნიშვნელოვანი ქვეველი, რომლის შესახებაც ალბათ გსმენიათ, არის ღრმა სწავლება. ეს ველი ფოკუსირებულია მძლავრ ალგორითმებზე (კომპიუტერული პროგრამის ინსტრუქციები), რომლებიც მოდელირებულია ადამიანის ტვინის ფუნქციების მიხედვით, რომელიც ცნობილია როგორც Ნეირონული ქსელები.
ამ სტატიაში ჩვენ განვიხილავთ ნერვული ქსელების კონცეფციას და როგორ ავაშენოთ, შევადგინოთ, მოერგოთ და შევაფასოთ ეს მოდელები. Python.
Ნეირონული ქსელები
ნერვული ქსელები, ანუ NN, არის ალგორითმების სერია, რომელიც მოდელირებულია ადამიანის ტვინის ბიოლოგიური აქტივობის მიხედვით. ნერვული ქსელები შედგება კვანძებისგან, რომლებსაც ასევე უწოდებენ ნეირონებს.
ვერტიკალური კვანძების კოლექცია ცნობილია როგორც ფენები. მოდელი შედგება ერთი შეყვანის, ერთი გამომავალი და რამდენიმე ფარული ფენისგან. თითოეული ფენა შედგება კვანძებისგან, რომლებსაც ასევე უწოდებენ ნეირონებს, სადაც ხდება გამოთვლები.
შემდეგ დიაგრამაზე წრეები წარმოადგენს კვანძებს, ხოლო კვანძების ვერტიკალური კოლექცია წარმოადგენს ფენებს. ამ მოდელში სამი ფენაა.
ერთი ფენის კვანძები უკავშირდება შემდეგ ფენას გადამცემი ხაზების მეშვეობით, როგორც ეს ქვემოთ ჩანს.
ჩვენი მონაცემთა ნაკრები შედგება ეტიკეტირებული მონაცემებისგან. ეს ნიშნავს, რომ თითოეულ მონაცემთა ერთეულს მინიჭებული აქვს სახელის გარკვეული მნიშვნელობა.
ასე რომ, ცხოველთა კლასიფიკაციის მონაცემთა ნაკრებისთვის ჩვენ გვექნება კატებისა და ძაღლების სურათები, როგორც ჩვენი მონაცემები, „კატა“ და „ძაღლი“ როგორც ჩვენი ეტიკეტები.
მნიშვნელოვანია აღინიშნოს, რომ ეტიკეტები უნდა გარდაიქმნას ციფრულ მნიშვნელობებად, რათა ჩვენმა მოდელმა გააცნობიეროს ისინი, ასე რომ, ჩვენი ცხოველების ეტიკეტები გახდება „0“ კატისთვის და „1“ ძაღლისთვის. ორივე მონაცემი და ეტიკეტები გადაეცემა მოდელს.
სასწავლო
მონაცემები მიეწოდება მოდელის ერთეულს ერთდროულად. ეს მონაცემები იყოფა ნაწილებად და გაივლის მოდელის თითოეულ კვანძში. კვანძები ახორციელებენ მათემატიკურ ოპერაციებს ამ ნაწილებზე.
თქვენ არ გჭირდებათ მათემატიკური ფუნქციების ან გამოთვლების ცოდნა ამ სახელმძღვანელოსთვის, მაგრამ მნიშვნელოვანია გქონდეთ ზოგადი წარმოდგენა იმის შესახებ, თუ როგორ მუშაობს ეს მოდელები. ერთ ფენაში გამოთვლების სერიის შემდეგ, მონაცემები გადადის შემდეგ ფენაზე და ა.შ.
დასრულების შემდეგ, ჩვენი მოდელი იწინასწარმეტყველებს მონაცემთა ეტიკეტს გამომავალი ფენაზე (მაგალითად, ცხოველთა კლასიფიკაციის პრობლემაში ჩვენ ვიღებთ წინასწარმეტყველებას "0" კატისთვის).
შემდეგ მოდელი აგრძელებს ამ წინასწარმეტყველური მნიშვნელობის შედარებას ეტიკეტის ფაქტობრივ მნიშვნელობასთან.
თუ მნიშვნელობები ემთხვევა, ჩვენი მოდელი მიიღებს შემდეგ შეყვანას, მაგრამ თუ მნიშვნელობები განსხვავდება, მოდელი გამოთვლის განსხვავებას ორივე მნიშვნელობას შორის, რომელსაც ეწოდება დაკარგვა, და დაარეგულირებს კვანძის გამოთვლებს, რათა გამოიმუშაოს შესაბამისი ეტიკეტები შემდეგ ჯერზე.
ღრმა სწავლის ჩარჩოები
ნერვული ქსელების კოდში ასაშენებლად, ჩვენ გვჭირდება იმპორტი ღრმა სწავლის ჩარჩოები ცნობილია, როგორც ბიბლიოთეკები ჩვენი ინტეგრირებული განვითარების გარემოს (IDE) გამოყენებით.
ეს ჩარჩოები არის წინასწარ დაწერილი ფუნქციების კოლექცია, რომელიც დაგვეხმარება ამ სახელმძღვანელოში. ჩვენ გამოვიყენებთ Keras ჩარჩოს ჩვენი მოდელის შესაქმნელად.
Keras არის პითონის ბიბლიოთეკა, რომელიც იყენებს ღრმა სწავლებას და ხელოვნური ინტელექტის ფონს ე.წ ტენზორული მარტივი თანმიმდევრული მოდელების სახით NN-ების შექმნა მარტივად.
Keras-ს ასევე გააჩნია საკუთარი უკვე არსებული მოდელები, რომელთა გამოყენებაც შესაძლებელია. ამ გაკვეთილისთვის ჩვენ შევქმნით საკუთარ მოდელს Keras-ის გამოყენებით.
თქვენ შეგიძლიათ გაიგოთ მეტი ამ ღრმა სწავლის ჩარჩოს შესახებ Keras საიტი.
ნერვული ქსელის აგება (სამეურვეო პროგრამა)
მოდით გადავიდეთ პითონის გამოყენებით ნერვული ქსელის შექმნაზე.
პრობლემის განცხადება
ნერვული ქსელები არის AI-ზე დაფუძნებული პრობლემების გადაწყვეტის ტიპი. ამ გაკვეთილისთვის ჩვენ განვიხილავთ Pima Indians დიაბეტის მონაცემებს, რომელიც ხელმისაწვდომია აქ დაწკაპუნებით.
UCI Machine Learning-მა შეადგინა ეს მონაცემთა ბაზა და შეიცავს ინდოელი პაციენტების სამედიცინო ჩანაწერს. ჩვენმა მოდელმა უნდა განსაზღვროს, აქვს თუ არა პაციენტს დიაბეტი 5 წლის განმავლობაში.
მონაცემთა ნაკრების ჩატვირთვა
ჩვენი მონაცემთა ნაკრები არის ერთი CSV ფაილი, სახელწოდებით 'diabetes.csv', რომლის მანიპულირება ადვილად შესაძლებელია Microsoft Excel-ის გამოყენებით.
ჩვენი მოდელის შექმნამდე, ჩვენ გვჭირდება მონაცემთა იმპორტი. შემდეგი კოდის გამოყენებით შეგიძლიათ ამის გაკეთება:
პანდას იმპორტი, როგორც pd
data = pd.read_csv('diabetes.csv')
x = data.drop („შედეგი“)
y = მონაცემები [„შედეგი“]
აქ ჩვენ ვიყენებთ პანდა ბიბლიოთეკაში, რომ შევძლოთ ჩვენი CSV ფაილის მონაცემების მანიპულირება, read_csv() არის Pandas-ის ჩაშენებული ფუნქცია, რომელიც საშუალებას გვაძლევს შევინახოთ მნიშვნელობები ჩვენს ფაილში ცვლადში სახელწოდებით 'data'.
ცვლადი x შეიცავს ჩვენს მონაცემთა ბაზას შედეგის (ეტიკეტების) მონაცემების გარეშე. ამას მივაღწევთ data.drop() ფუნქციით, რომელიც შლის ეტიკეტებს x-ისთვის, ხოლო y შეიცავს მხოლოდ შედეგის (ეტიკეტის) მონაცემებს.
თანმიმდევრული მოდელის აგება
ნაბიჯი 1: ბიბლიოთეკების იმპორტი
პირველ რიგში, ჩვენ უნდა შემოვიტანოთ TensorFlow და Keras, ჩვენი მოდელისთვის საჭირო გარკვეულ პარამეტრებთან ერთად. შემდეგი კოდი გვაძლევს ამის საშუალებას:
იმპორტი tensorflow როგორც tf
tensorflow იმპორტის კერებიდან
tensorflow.keras.models-დან იმპორტი თანმიმდევრობით
tensorflow.keras.layers-დან იმპორტი გააქტიურება, მკვრივი
tensorflow.keras.optimizers-დან იმპორტი Adam
tensorflow.keras.metrics იმპორტი categorical_crossentropy-დან
ჩვენი მოდელისთვის ჩვენ შემოგვაქვს მკვრივი ფენები. ეს არის სრულად დაკავშირებული ფენები; ანუ, ფენის თითოეული კვანძი სრულად არის დაკავშირებული მომდევნო ფენის სხვა კვანძთან.
ასევე ვახორციელებთ იმპორტს ა აქტივაციის ფუნქცია, რომელიც საჭიროა კვანძებში გაგზავნილი მონაცემების სკალირებისთვის. ოპტიმიზატორები ასევე იმპორტირებულია ზარალის შესამცირებლად.
ადამი ცნობილი ოპტიმიზატორია, რომელიც ჩვენი მოდელის განახლების კვანძის გამოთვლებს უფრო ეფექტურად ხდის categorical_crossentropy რომელიც არის დანაკარგის ფუნქციის ტიპი (ითვლის განსხვავებას რეალურ და პროგნოზირებულ ლეიბლის მნიშვნელობებს შორის), რომელსაც ჩვენ გამოვიყენებთ.
ნაბიჯი 2: ჩვენი მოდელის დიზაინი
მოდელს, რომელსაც მე ვქმნი, აქვს ერთი შეყვანის (16 ერთეულით), ერთი ფარული (32 ერთეულით) და ერთი გამომავალი (2 ერთეულით) ფენა. ეს რიცხვები არ არის დაფიქსირებული და მთლიანად იქნება დამოკიდებული მოცემულ პრობლემაზე.
ერთეულებისა და ფენების სწორი რაოდენობის დაყენება არის პროცესი, რომელიც შეიძლება გაუმჯობესდეს ზეგანაკვეთური პრაქტიკით. აქტივაცია შეესაბამება სკალირების ტიპს, რომელსაც ჩვენ შევასრულებთ ჩვენს მონაცემებზე კვანძის გავლით.
Relu და Softmax არის ცნობილი აქტივაციის ფუნქციები ამ ამოცანისთვის.
მოდელი = თანმიმდევრული([
მკვრივი (ერთეულები = 16, შეყვანის_ფორმა = (1,), აქტივაცია = 'რელუ'),
მკვრივი (ერთეულები = 32, აქტივაცია = 'რელუ'),
მკვრივი (ერთეული = 2, აქტივაცია = 'softmax')
])
აი, როგორი უნდა იყოს მოდელის რეზიუმე:
მოდელის სწავლება
ჩვენი მოდელი გაივლის ორ ეტაპად, პირველი არის მოდელის შედგენა (მოდელის შეკრება) და შემდეგი იქნება მოდელის მორგება მოცემულ მონაცემთა ბაზაზე.
ეს შეიძლება გაკეთდეს model.compile() ფუნქციის გამოყენებით, რასაც მოჰყვება model.fit() ფუნქცია.
model.compile(ოპტიმიზატორი = ადამი (სწავლის_ტემპი = 0.0001), დაკარგვა = 'ბინარული_ჯვარედინი', მეტრიკა = ['სიზუსტე'])
model.fit (x, y, ეპოქები = 30, batch_size = 10)
"სიზუსტის" მეტრიკის დაზუსტება საშუალებას გვაძლევს დავაკვირდეთ ჩვენი მოდელის სიზუსტეს ვარჯიშის დროს.
ვინაიდან ჩვენი ეტიკეტები არის 1-ისა და 0-ების სახით, ჩვენ გამოვიყენებთ ორობითი დაკარგვის ფუნქციას რეალურ და პროგნოზირებულ ლეიბლებს შორის სხვაობის გამოსათვლელად.
მონაცემთა ნაკრები ასევე იყოფა 10 პარტიად (პარტიის_ზომა) და გადაეცემა მოდელს 30-ჯერ (ეპოქებში). მოცემული მონაცემთა ნაკრებისთვის x იქნება მონაცემი და y იქნება მონაცემების შესაბამისი ეტიკეტები.
ტესტირების მოდელი პროგნოზების გამოყენებით
ჩვენი მოდელის შესაფასებლად, ჩვენ ვაკეთებთ პროგნოზებს ტესტის მონაცემებზე, predict() ფუნქციის გამოყენებით.
პროგნოზები = model.predict(x)
და ეს ის!
ახლა თქვენ კარგად უნდა გესმოდეთ ღრმა სწავლება აპლიკაცია, ნერვული ქსელები, როგორ მუშაობენ ისინი ზოგადად და როგორ ავაშენოთ, მოვამზადოთ და გამოვცადოთ მოდელი პითონის კოდში.
ვიმედოვნებ, რომ ეს გაკვეთილი მოგცემთ საწყისს, რომ შექმნათ და განათავსოთ თქვენი საკუთარი ღრმა სწავლის მოდელები.
შეგვატყობინეთ კომენტარებში, თუ სტატია სასარგებლო იყო.
დატოვე პასუხი