متعة تعلم الأله Machine Learning – الجزء 5

ترجمة اللغات بإستخدام الـ Deep Learning وسحر ال Sequencing

1٬500

كلنا نعلم عن Google Translate، الموقع الذي يستطيع الترجمة بين 100 لغة مختلفة. حتي أنه متواجد علي الهواتف المحمولة والساعات الذكية:

التكنولوجيا المستخدمة في Google Translate تُسمي Machine Translation. لقد أحدثت تغييراً في التواصل بين كثيراً من الناس مع إختلاف لغاتهم.

حتي طلاب المدارس يستخدمون Google Translate للمساعدة في آداء مهامهم. أليست هذه أخبار سارة؟

غير الـ deep learning مفهومنا فى الـ machine transation في السنوات القليلة الماضية. الباحثون ذوي الخبرة البسيطة أو المعدومة في ترجمة اللغات بدأوا في إبتكار حلول جديدة تتغلب علي أفضل الأنظمة التي تم إختراعها من الخبراء في بناء أنظمة ترجمة اللغات.

التكنولوجيا المستخدمة في هذا تُسمي sequence-to-sequence learning. هذه تقنية رائعة يمكنها حل العديد من المشاكل. فمثلما يُستخدم في الترجمة، يمكننا أيضاً إستخدام نفس الخوارزمية لبناء chatbot وأيضاً لوصف الصور.

 

جعل الآلة تُترجم

كيف يمكننا كتابة برنامج لترجمة لغة الإنسان؟

الطريقة الأسهل هي تبديل كل كلمة في تسلسل ما بكلمة في لغة أخري. هذا مثال بسيط للترجمة من اللغة الإسبانية إلي اللغة الإنجليزية كلمة بكلمة:

هذا من السهل بناءه لأنه عبارة عن بحث في قاموس عن الكلمات المراد ترجمتها. لكنه للأسف يتغاضي عن قواعد اللغة.

لذلك، فإه من الأفضل أن نضع بعض قواعد اللغة في الأإعتبار حتي نجعل الترجمة أفضل. علي سبيل المثال، يمكنك ترجمة جمل تتكون من كلمتين بتعبير واحد فقك في اللغة المناظرة. وأيضاً يُمكنك تغيير ترتيب الأسماء والصفات لأنه دائماً ما يظهروا في الترتيب العكسي مقارنة بالإنجليزية:

البرنامج سيسطتيع ترجمة أي جملة إذا أضفنا قواعد أخري للغة. أيس هذا صحيحاً؟

هذه هي طريقة عمل أنظمة الترجمة السابقة. لكن هناك العديد من القواعد المعقدة والتي يصعب برمجتها واحدة بواحدة. من أذكي الأنظمة التي تم إختراعها بهذا الأسلوب إستطاع ترجمة رسائل الروس في الـ Cold War.

للأسف، هذا يعمل جيداً مع الموائق البسيطة المهيكلة. لكنه لا يعمل مع الوثائق الموجودة في الواقع.

المشكلة أن الإنسان لا يستخدم مجموعة ثابتة من القواعد في الترجمة. يوجد العديد من الحالات الخاصة في اللغات والتي تختلف من منطقة لمنطقة أخري. مستخدمي اللغة الأصليون يتحدثون بشكل مختلف عن المستخدمين الجدد لها.

 

تحسين ترجمة الحاسوب بإستخدام الإحصائيات

بعد فشل طريقة الترجمة بإستخدام القراعد، طرق جديدة في الترجمة بدأت في إستخدام نماذج تعتمد علي الإحصاء والإحتمالات.

بناء نظام يعتمد علي الإحصائات في الترجمة يحتاج العديد من بيانات التدريب، حيث أن نفس النص يجب أن يتوفر بلغتين علي الأقل. هذا يُضاعف حجم البيانات المراد ترجمتها. تُسمي هذه الطريقة parallel corpora. مثلما تم ترجمة اللغة الهيروغليفية عند قدماء المصريين، الحاسوب يستطيع الترجمة من لغة لأخري عن طريق التخمين.

لحسن الحظ، يوجد العديد من النصوص الموجودة بأكثر من لغة والتي يمكن للباحثين إستخدامها.

التفكير في الإحتمالات

الإختلاف الجوهري في طرق الترجمة الإحصائية هو عدم الإعتماد علي ترجمة واحدة فقط. لكن يتم عمل أكثر من ترجمة لنفس النص وإستخدام أفضلهم. يتم توقع صحة كل ترجمة مقارنة ببيانات التدريب. هذا كيف يعمل:

الخطوة 1: تقسييم النص الأصلي إلي أجزاء

أولاً، نقوم بقسييم النص الأأصلي إلي أجزاء بسيطة كي يسهل ترجمتهم:

الخطوة 2: إيجاد كل الطرق الممكنة لترجمة لكل جزء

بعد ذلك، بناءً علي بيانات التدريب نحصل علي كل النصوص المترجمة لهذا الجزء.

لا يتم البحث في قاموس كالسابق عند ترجمة كل جزء. لكن يتم البحث في نصوص مستخدمة عن طريق الإنسان تم ترجمتها مسبقاً. هذا يساعدنا في الحصوص علي أكثر من طريقة لترجمة كل جزء:

بعض النصوص المترجمة يتم غستخدامها أكثر من الأخري. إعتماداً علي عدد مرات غستخدام كل ترجمة، يتم إعطاء تقييم.

علي سبيل المثال، من الشائع أن يقول شخص ما “Quiero” لتعني “I want” أكثر من أن تعني “I try”. لذلك يتم التعرف علي أن كلمة “Quiero” تعني “I want” وإعطائها تقييم أعلي.

 

الخطوة 3: إستخراج كل الجمل الممكنة وإستخدام أكثرهم ملائمة

بإستخدام ترجمة الأجزاء المسبقة، نحصل علي جمل كاملة مترجمة.

بعد ترجمة الأجزاء المنفصلة، حصلنا علي 2,500 طريقة لترجمة الجملة المستخدمة في المثال. هذه بعض الأمثلة:

في الواقع، سيوجد أكثر من هذا العدد لأنه يمكننا إعادة ترتيب الكلمات حتي نحصل علي أجزاء أخري:

يجب أن نبحث في كل هذه النتائج لنحصل علي أكثرهم إستخداماً.

لفعل ذلك، نقارن كل جملة بملايين الحمل من الكتب والروايات المكتوبة بالفعل بالإنجليزية. كلما زادت النصوص المستخدمة، كلما كلن الناتج أفضل.

بالنسبة إلي هذه الترجمة:

لأنه لا أحد يكتب جمل مشابهة لهذه من قبل، فإنها لا تُشبه أي من النصوص الموجودة ببيانات التدريب. لذلك سنعطيها تقييم ضعيف.

لكن بالنسبة لهذه الترجمة:

ستحصل علي تقييم أعلي وذلك لأنها مشابهة لبعض الجمل الموجودة ببيانات التدريب المستخدمة. بعد إختبار كل الجمل، سنستخدم أفضلهم.

الترجمة النهائية يتكون ” I want to go to the prettiest beach.”. هذا ليس سيئاً.

 

الطريقة الإحصائية في ترجمة الآلة علامة مميزة

أنظمة ترجمة الآلة المعتدمة علي الطرق الإحصائية أعطت نتائج أفضل من إستخدادم القواعد.

في البداية، كان من المزهل أن إستخدام الإحصائيات في الترجمة أعطي ناتج أفضل من إستخدام القواعد. لذلك إشتهرت هذه المقولة بين الباحثين:

“Every time I fire a linguist, my accuracy goes up.” Frederick Jelinek

 

عيوب الطريقة الإحصائية في ترجمة الآلة

من العيوب الموجودة في هذه الطريقة أنها معقدة. نحتاج إلي خبراء لنباء كميات كبيرة من البيانات في لغتين علي الأقل.

لأنه من الصعب عمل ذلك، يوجد تنازلات في هذا الأمر. إذا طلبت من Google ترجمة نص من اللغة الجورجية إلي التيلوغوية، فبسبب عدم توفر نصوص كافية بتدريب النموذج ببن تلك اللغتين، فيتم ترجمة اللغة الجورجية إلي الإنجليزية كخطوة مساعدة وبعد ذلك ترجمة النص الإنجليزي إلي التيلوغوية.

 

جعل ترجمة الحاسوب أفضل

بإستخدام بيانات التدريب فقط، يمكن للآلة تعليم نفسها كيف أن تحول النص من لغة إلي أخري. بإستخدام الـ statistical machine translation، الإنسان مازال له دوراً في بناء هذه النماذج.

توصل مجموعة علماء في 2014 إلي طريقة لتطبيق الـ deep learning لبناء هذا النظام. إستقبل الـ deep learning model الـ parallel corpora وإستخدمها لمعرفة كيف أن تتم الترجمة بين لغتين مختلفتين بدون تدخل الإنسان.

فكرتان رئيسيتنات جعلت هذا ممكناً: recurrent neural networks وencodings. بإستخدامها معاً بطريقة ذكية، يمكننا بناء نظام ذاتي للترجمة.

الـ neural network تعتبر خوارمية معممة تأخذ مجموعة أرقام وتحسب الناتج. يمكننا إستخدامها كصندوق أسود لحل العديد من المشاكل. علي سبيل المثال، يمكننا إستخدامها لتوقع سعر منزل بناءً علي بعض خصائصه:

لكن مثل العديد من خوارزميات الـ machine learning، الـ neural networks لا ذاكرة بها. إذا مررت نفس المدخلات مرة أخري، فلن تتذكر الـ neural network شيئاً عما حدث في السابق. لا ذاكرة لتخزين الحسابات الماضية. فهي تُعطي نفس الناتج كل مرة طالما نفس المدخلات مستخدمة. دائماً 2+2 يُطعي 4.

الـ recurrent neural network (RNN) تستطيع الإحتفاظ بذاكرة لتخزين الناتج السابق وإستخدامه كمدخل في المرة القادمة. هذا يعني أن الحسابات السابقة ستغير في نتائج المستقبل.

لكن لماذا نحتاج إلي ذلك في الواقع؟ أليس من المفترض أن ناتج 2+2 هو دائماً 4.

هذا يساعدنا في تعلم أنماط موجودة في البيانات. علي سبيل المثال، يمكننا إستخدامها لمعرفة الكلمة التالية في نص ما بناءً علي الكلمات الموجودة مسبقاً:

الـ RNNs مفيدة في أي تطبيق تحتاج فيه معرفة الأنماط المودودة في البيانات. لأن لغة الإنسان تُعتبر نطم واحد ضخم، فإن إستخدام ال RNNs توايد في الـ natural language processing.

الفكرة الأخري التي نحتاج لمراجعتها هي Encodings.

إذا أردت أن تُخبر الحاسوب أن هناك صورتان لوجهان مختلفان، تقوم بتجميع العديد من القياسات من كل وجه وتستخدمهم في المقارنة.

فكرة تحويل صورة الوجه إلي بعض القياسات هو مثال عن الـ encoding. تحويل البيانات الخام إلي مجموعة معبرة من القياسات.

لكننا لم نستخدم مجموعة واحدة فقط من القياسات كمان كان الأمر في الجزء 4. لكن تعلمت الـ neural network إستنتاج تلك القياسات بنفسها. فلدي الحاسوب قدرة أكبر في معرفة أفضل القياسات التي يجب إستخدامها:

هذا هو الـ encoding. تعبير عن شيئ معقد بطريقة بسيطة بإستخدام فقط 128 رقم. الآن، مقارنة الوجهان سيصبح أسهل عما كان مسبقاً.

هل يمكننا تطبيق ذلك علي الجمل؟ هل يمكننا التعبير عن الجمل المختلفة بإستخدام مجموعة أرقام:

لإستنتاج هذا الـ encoding، سنقوم بإدخال الجملة كلمة بكلمة إلي الـ RNN. الناتج النهائي هو مجموعة قيم رقمية لتعبر عن الجملة كلها.

لدينا الآن طريقة للتعبير عن الجملة بكالمها عن طريق مجموعة أرقام. لا نعلم ماذا يعني كل رقم لكن الأمر لا يهم طالما أن كل جملة تم تعريفها بمجموعة أرقام.

لنقوم بالترجمة

إستخدمنا الـ RNN في عمل encoding لجملة عن طريق مجموعة أرقام. كيف سيساعدنا ذلك؟

ماذا لو تم توصيل 2 RNNs من النهاية ببعضهم؟ ال RNN الأولي تُنتج الـ encoding لتمثي الجملة عن طريق أرقام. الـ RNN الأخري تستخدمه لتحويله إلي الجملة الأصلية:

للإستفادة من ذلك، يمكننا تدريب الـ RNN الأخري لترجمة الناتج إلي اللغة الإسبانية بدلاً من الإنجليزية. يجب إستخدام parallel corpora في التدريب:

بهذه الشكل، لدينا طريقة عامة في تحويل الكلمات من الإنجليزية إلي الإسبانية.

هذه فكرة رائعة:

  • هذه الطريقة تعتمد علي كمية البيانات المستخدمة في التدريب.
  • لا تعتمد علي أي قواحد. الخوارزمية تستنتج هذه القواعد بنفسها. هذا يعني أنك لست بحاجة إلي خبراء في عملية الترجمة. الحاسوب وحده كافي.
  • تعمل هذه الطريقة في تحويل أي نص لآخر وليست مقتصرة علي لغات بعينها.

بناء نظام الترجمة الخاص بك

إذا أردت بناء نظامك الخاص في الترجمة، يوجد العديد من النماذج التي يمكنك إستخدامها بمكتبة الـ TensorFlow والتي يمكنها الترجمة بين الفرنسة والإنجليزية. هذه التكنولوجيا تعتبر حديثة وتستهلك العديد من الموارد. فيمكن للتدريب أن يأخذ شهراً من العمل المتواصل.

إستخدامات أخري للـ sequence-to-sequence models

ماذا أيضاً يمكننا فعله بالـ sequence-to-sequence models؟

قبل حوالي سنة، باحثي Google توصلوا أن الـ sequence-to-sequence models قادرة علي بناء AI bost. الفكرة بسيطة لكنها مزهلة لأنها تعمل جيداً.

أولاً، تدريب الـ sequence-to-sequence models بناءً علي الرسائل بين موظفي Google وفريق الدعم الفني بها. الأسئلة كانت المدخلات والإجابة كانت الترجمة للجمل المدخلة.

الردود كانت شبه منطقية. ها هو جزء من المحاحدثة التي دارت بين أحد المستخدمين والـ bot من هذا البحث:

حاولوا أيضاً بناء chatbot بإستخدام ملايين من الأفلام العنواين الفرعية. المدخلات كانت الجمل من شخصية ما والناتج كان الرد من شخصية أخري.

حصلوا علي نتائج جيدة. لم يجعلوا الـ bot مثل الإنسان فقط، لكنه أظهر بعض الذكاء في الأمر:

لم نعد مقتصرين علي ترجمة جملة بأخري إذ أنه بالإمكان تحويل صورة إلي نص.

فريق آخر من Google قام بذلك عن طريق إستبدال ال RNN ب Convolutional Neural Network كما كان في جزء 3. عدا ذلك يعمل كما كان في السابق:

قام Andrej Karpathy بإستخدام هذه الفكرة لبناء نظام قادر علي وصف الصورة بدرجة من التفاصيل وذلكبمعالجة أكثر من جزء من الصورة بشكل منفصل:

هذا يجعل الأمر ممكن لبناء محركات بحث لإسترجاع الصور التي تتوافق مع وصف معين:

هناك باحثون يعملوان في العكس وهو بناء نظام لتوليد صورة كاملة من خلال وصف نصي.

 

لتعلم المزيد

لتعلم المزيد عن الـ sequence-to-sequence models، ها هي مجموعة مصادر مفيدة:


تم الترجمة بواسطة أحمد جاد.

الدرس الأصلي:

https://medium.com/@ageitgey/machine-learning-is-fun-part-5-language-translation-with-deep-learning-and-the-magic-of-sequences-2ace0acca0aa

تعليقات