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

ეს ბლოგ-პოსტი იყენებს Concrete-ML ბიბლიოთეკას, რაც მონაცემთა მეცნიერებს საშუალებას აძლევს გამოიყენონ მანქანური სწავლების მოდელები სრულად ჰომომორფული დაშიფვრის (FHE) გარემოში კრიპტოგრაფიის წინასწარი ცოდნის გარეშე. ჩვენ გთავაზობთ პრაქტიკულ სახელმძღვანელოს, თუ როგორ გამოვიყენოთ ბიბლიოთეკა დაშიფრულ მონაცემებზე სენტიმენტების ანალიზის მოდელის შესაქმნელად. პოსტის ბოლოს წარმოდგენილია სრულყოფილი დემო ვერსია Hugging Face Spaces-ზე, რათა ეს ფუნქციონირება მოქმედებაში იყოს ნაჩვენები.

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

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

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

ვიწყებთ ტრანსფორმერებისთვის საჭირო მოთხოვნების იმპორტირებით. აქ, ჩვენ ვიყენებთ Hugging Face-ის პოპულარულ ბიბლიოთეკას ტრანსფორმერის სწრაფად მისაღებად. ჩვენს მიერ არჩეული მოდელი არის BERT ტრანსფორმერი, დახვეწილი Stanford Sentiment Treebank მონაცემთა ნაკრებზე. ამით უნდა გადმოიწეროს მოდელი, რომელიც ახლა მზად არის გამოსაყენებლად.

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

შედეგი არის მატრიცა ფორმატით (მაგალითების რაოდენობა, ფარული ზომა). ფარული ზომა არის ფარულ წარმოდგენაში განზომილებების რაოდენობა. BERT-ისთვის ფარული ზომაა 768. ფარული წარმოდგენა არის რიცხვების ვექტორი, რომელიც წარმოადგენს ტექსტს და შეიძლება გამოყენებულ იქნას მრავალი სხვადასხვა ამოცანისთვის. ამ შემთხვევაში, ჩვენ მას მოგვიანებით გამოვიყენებთ კლასიფიკაციისთვის XGBoost-ის გამოყენებით. ტექსტის ეს ტრანსფორმაცია (ტექსტიდან ტრანსფორმერის წარმოდგენამდე) უნდა შესრულდეს კლიენტის მანქანაზე, რადგან დაშიფვრა ხორციელდება ტრანსფორმერის წარმოდგენაზე.

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

ახლა მოდით ვიწინასწარმეტყველოთ დაშიფრულ ტექსტზე. იდეა აქ არის ის, რომ ჩვენ დავშიფრავთ ტრანსფორმერის მიერ მოცემულ წარმოდგენას და არა თავად ნედლ ტექსტს. Concrete-ML-ში ამის გაკეთება შეგიძლიათ ძალიან სწრაფად, predict ფუნქციაში პარამეტრის `execute_in_fhe=True` დაყენებით. ეს მხოლოდ დეველოპერის ფუნქციაა (ძირითადად გამოიყენება FHE მოდელის მუშაობის დროის შესამოწმებლად). ჩვენ ცოტა ქვემოთ ვნახავთ, როგორ შეგვიძლია ამის მუშაობა განლაგების გარემოში. ასევე აუცილებელია შემოწმება, რომ FHE პროგნოზები იგივეა, რაც გამჭვირვალე პროგნოზები.

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