محول (نموذج تعلم آلي)

(تم التحويل من Transformer (machine learning model))

المحول Transformer هو نموذج التعلم العميق الذي تم تقديمه في عام 2017، ويستخدم بشكل أساسي في مجال معالجة اللغة الطبيعية (NLP).[1]

مثل الشبكات العصبونية المتكررة (RNNs)، تم تصميم المحولات للتعامل مع البيانات المتسلسلة، مثل اللغة الطبيعية، لمهام مثل الترجمة و تلخيص النصوص. ومع ذلك، على عكس RNNs، لا تتطلب المحولات معالجة البيانات المتسلسلة بالترتيب. على سبيل المثال، إذا كانت بيانات الإدخال عبارة عن جملة لغة طبيعية، فلن يحتاج المحول إلى معالجة بدايتها قبل النهاية. بسبب هذه الميزة، يسمح المحول بأكثر من موازاة من RNNs وبالتالي تقليل أوقات التدريب.[1]

منذ تقديمها، أصبحت المحولات النموذج المفضل لمعالجة العديد من المشكلات في البرمجة اللغوية العصبية، لتحل محل نماذج الشبكات العصبية المتكررة القديمة مثل الذاكرة طويلة المدى (LSTM). نظراً لأن نموذج المحول يسهل المزيد من التوازي أثناء التدريب، فقد أتاح التدريب على مجموعات بيانات أكبر مما كان ممكناً قبل تقديمه. وقد أدى ذلك إلى تطوير الأنظمة سابقة التدريب مثل BERT (تمثيلات التشفير ثنائية الاتجاه من المحولات) و GPT (محول ما قبل التدريب التوليدي)، التي تم تدريبها باستخدام مجموعات بيانات ضخمة للغة العامة، ويمكن ضبطها لمهام لغوية محددة.[2][3]

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

خلفية

قبل إدخال المحولات، اعتمدت معظم أنظمة البرمجة اللغوية العصبية الحديثة على الشبكة العصبونية المتكررة (RNNs) المبوبة، مثل LSTMs و الوحدات المتكررة المبوبة (GRUs)، مع آليات ملاحظة إضافية. اعتمد المحول على تقنيات ملاحظة هذه دون استخدام بنية RNN، مما يبرز حقيقة أن آليات الملاحظة وحدها، دون المعالجة المتسلسلة المتكررة، قوية بما يكفي لتحقيق أداء RNNs بملاحظة دقيقة.

تعالج RNNs المبوبة الرموز المميزة المحجوزة بالتتابع، مع الحفاظ على متجه الحالة الذي يحتوي على تمثيل للبيانات التي يتم رؤيتها بعد كل رمز محجوز. لمعالجة الرمز المحجوز ، يجمع النموذج الحالة التي تمثل الجملة حتى الرمز مع معلومات عن الرمز الجديد لإنشاء حالة جديدة، مملثة الجملة إلى الرمز المحجوز . من الناحية النظرية، يمكن أن تنتشر المعلومات من رمز واحد بشكل عشوائي أسفل التسلسل، إذا استمرت الحالة في كل نقطة في ترميز المعلومات حول الرمز المحجوز. لكن من الناحية العملية، هذه الآلية غير كاملة: ويرجع ذلك جزئياً إلى مشكلة التدرج المتلاشي، غالباً ما لا تحتوي حالة النموذج في نهاية الجملة الطويلة على معلومات دقيقة وقابلة للاستخراج حول الرموز المحجوزة الأولية.

تمت معالجة هذه المشكلة من خلال إدخال آليات الملاحظة. تسمح آليات الملاحظة للنموذج بالنظر مباشرة إلى الحالة والاستفادة منها في أي نقطة سابقة في الجملة. يمكن لطبقة الملاحظة الوصول إلى جميع الحالات السابقة وتزنها وفقاً لبعض المقاييس المكتسبة من الصلة بالرمز المحجوز الحالي، مما يوفر معلومات أكثر وضوحاً حول الرموز المحجوزة ذات الصلة البعيدة. مثال واضح على فائدة الملاحظة في الترجمة. في نظام الترجمة من الإنگليزية إلى الفرنسية، من المحتمل أن تعتمد الكلمة الأولى من المخرجات الفرنسية بشكل كبير على بداية المدخلات الإنگليزية. ومع ذلك، في نموذج LSTM الكلاسيكي للمشفر وفك التشفير، من أجل إنتاج الكلمة الأولى من الناتج الفرنسي، يتم إعطاء النموذج فقط متجه الحالة للكلمة الإنگليزية الأخيرة. من الناحية النظرية، يمكن لهذا المتجه ترميز المعلومات حول الجملة الإنگليزية بأكملها، مما يمنح النموذج كل المعرفة اللازمة، ولكن في الممارسة العملية، غالباً ما لا يتم حفظ هذه المعلومات جيداً. إذا تم تقديم آلية ملاحظة، يمكن للنموذج بدلاً من ذلك أن يتعلم ملاحظة حالات الرموز الإنگليزية الأولية عند إنتاج بداية المخرجات الفرنسية، مما يمنحها مفهوماً أفضل بكثير لما يتم ترجمته.

عند إضافتها إلى RNNs، أدت آليات الملاحظة إلى مكاسب كبيرة في الأداء. سلط إدخال المحول الضوء على حقيقة أن آليات الملاحظة كانت قوية في حد ذاتها، وأن المعالجة المتكررة المتسلسلة للبيانات لم تكن ضرورية لتحقيق مكاسب أداء RNNs مع الملاحظة. يستخدم المحول آلية ملاحظة دون أن يكون RNN، حيث يقوم بمعالجة جميع الرموز المحجوزة في نفس الوقت وحساب أوزان الملاحظة بينها. حقيقة أن المحولات لا تعتمد على المعالجة المتسلسلة، وتسهل على نفسها بسهولة الموازاة، تسمح بتدريب المحولات بشكل أكثر كفاءة على مجموعات البيانات الأكبر.


البنية

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

تتمثل وظيفة كل طبقة تشفير في معالجة مدخلاتها لإنشاء ترميزات تحتوي على معلومات حول أجزاء المدخلات ذات الصلة ببعضها البعض. يمرر مجموعة الترميزات الخاصة به إلى طبقة التشفير التالية كمدخلات. تقوم كل طبقة وحدة فك ترميز بالعكس، حيث تأخذ كل الترميزات وتعالجها، باستخدام المعلومات السياقية المدمجة الخاصة بها لإنشاء تسلسل إخراج.[4] لتحقيق ذلك، تستفيد كل طبقة تشفير وفك تشفير من آلية الملاحظة، والتي تزن لكل مدخلات أهمية كل مدخلات أخرى وتستمد المعلومات منها وفقاً لذلك لإنتاج المخرجات.[5]تحتوي كل طبقة وحدة فك ترميز أيضاً على آلية ملاحظة إضافية تستمد المعلومات من مخرجات وحدات فك التشفير السابقة، قبل أن تستمد طبقة وحدة فك التشفير المعلومات من الترميزات. تحتوي كل من طبقات التشفير وفك التشفير على شبكة عصبونية مغذاة أمامياً من أجل معالجة إضافية للمخرجات، وتحتوي على اتصالات متبقية وخطوات تسوية الطبقة.[5]

تحجيم الملاحظة إلى الناتج النقطي

اللبنات الأساسية للمحول هي وحدات الملاحظة للناتج النقطي. عندما يتم تمرير جملة في نموذج المحول، يتم حساب أوزان الملاحظة بين كل رمز في وقت واحد. تُنتج وحدة الملاحظة التضمينات لكل رمز محجوز في السياق الذي يحتوي على معلومات ليس فقط حول الرمز المحجوز نفسه، ولكن أيضًا مجموعة مرجحة من الرموز المحجوزة الأخرى ذات الصلة المرجحة بأوزان الملاحظة.

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

يمكن التعبير عن حساب الملاحظة لجميع الرموز المحجوزة في صورة حساب مصفوفة كبيرة واحدة، وهو أمر مفيد للتدريب بسبب تحسينات عملية المصفوفة الحسابية التي تجعل عمليات المصفوفة سريعة للحساب. يتم تعريف المصفوفات و و على أنها المصفوفات حيث تكون الصفوف هي متجهات و و على التوالي.

الملاحظة متعددة الرؤوس

تسمى مجموعة واحدة من المصفوفات رأس الملاحظة، وكل طبقة في نموذج المحولات لها رؤوس ملاحظة متعددة. بينما يهتم رئيس ملاحظة واحد بالرموز المحجوزة ذات الصلة بكل رمز محجوز، يمكن للنموذج مع وجود العديد من الملاحظات أن يتعلم القيام بذلك لتعريفات مختلفة لـ "العلاقة". أظهرت الأبحاث أن العديد من رؤوس الملاحظة في المحولات تقوم بترميز العلاقات ذات الصلة التي يمكن تفسيرها من قبل المستخدمين. على سبيل المثال، هناك رؤوس الملاحظة الذين، لكل رمز، يحضرون في الغالب إلى الكلمة التالية، أو رؤوس الملاحظة الذين يحضرون بشكل أساسي من الأفعال إلى الأشياء المباشرة.[6] نظراً لأن نماذج المحول لها رؤوس اهتمام متعددة، فإن لديها إمكانية التقاط العديد من المستويات وأنواع العلاقات ذات الصلة، من المستوى السطحي إلى الدلالي. يتم توصيل المخرجات المتعددة لطبقة الملاحظة متعددة الرؤوس لتمريرها إلى طبقات الشبكة العصبونية ذات التغذية الأمامية.

المشفر

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

يأخذ المشفر الأول المعلومات الموضعية و التضمينات لتسلسل الإدخال كمدخلات له، بدلاً من الترميز. المعلومات الموضعية ضرورية للمحول للاستفادة من ترتيب التسلسل، لأنه لا يوجد جزء آخر من المحول يقوم باستخدام ذلك.[1]

مفكك التشفير

يتكون كل مفكك تشفير من ثلاثة مكونات رئيسية: آلية الملاحظة الذاتية، وآلية الملاحظة عبر الترميزات، والشبكة العصبونية المغذاة أمامياً. يعمل مفكك التشفير بطريقة مشابهة للمشفر، ولكن يتم إدخال آلية ملاحظة إضافية والتي بدلاً من ذلك تستمد المعلومات ذات الصلة من الترميزات التي تم إنشاؤها بواسطة المشفرات.[1][5]

مثل المشفر الأول، يأخذ مفكك التشفير الأول المعلومات الموضعية ودمج تسلسل الإخراج كمدخلات، بدلاً من الترميز. نظراً لأن المحول يجب ألا يستخدم الإخراج الحالي أو المستقبلي للتنبؤ بالمخرجات، يجب إخفاء تسلسل الإخراج جزئياً لمنع تدفق المعلومات العكسي.[1] يتبع مفكك الشفرة الأخير التحويل الخطي و طبقة سوفت ماكس، لإنتاج احتمالات الخرج على المفردات.

البدائل

يمكن أن يكون التدريب على البنى القائمة على المحولات مكلفًا للغاية ، خاصة للجمل الطويلة.[7] تشتمل البنى البديلة على المصلح، والذي يقلل من الحمل الحسابي من إلى ، حيث هو طول التسلسل. يتم ذلك باستخدام تجزئة حساسة للموضع وطبقات قابلة للعكس.[8][9]

التدريب

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

التنفيذات

تم تنفيذ نموذج المحول في أطر التعلم العميق الرئيسية مثل تنسورفلو و پاي تورش. يوجد أدناه رمز مستعار لتنفيذ متغير المحولات المعروف باسم محول "الڤانيليا":

def vanilla_transformer(enc_inp, dec_inp):
    """Transformer variant known as the "vanilla" transformer."""
    x = embedding(enc_inp) * sqrt(d_m)
    x = x + pos_encoding(x)
    x = dropout(x)
    for _ in range(n_enc_layers):
        attn = multi_head_attention(x, x, x, None)
        attn = dropout(attn)
        attn = layer_normalization(x + attn)

        x = point_wise_ff(attn)
        x = layer_normalization(x + attn)

    # x is at this point the output of the encoder
    enc_out = x

    x = embedding(dec_inp) * sqrt(d_m)
    x = x + pos_encoding(x)
    x = dropout(x)
    mask = causal_mask(x)
    for _ in range(n_dec_layers):
        attn1 = multi_head_attention(x, x, x, mask)
        attn1 = layer_normalization(attn1 + x)

        attn2 = multi_head_attention(attn1, enc_out, enc_out, None)
        attn2 = dropout(attn2)
        attn2 = layer_normalization(attn1 + attn2)

        x = point_wise_ff(attn2)
        x = layer_normalization(attn2 + x)
    return dense(x)

التطبيقات

يجد المحول معظم تطبيقاته في مجال معالجة اللغة الطبيعية (NLP)، على سبيل المثال مهام الترجمة الآلية و توقع السلاسل الزمنية.[11] تُظهر العديد من النماذج التي تم اختبارها مسبقاً مثل GPT-3 و GPT-2 و BERT و XLNet و RoBERTa قدرة المحولات على أداء مجموعة متنوعة من المهام المتعلقة بمعالجة اللغات الطبيعية، ولديها القدرة على العثور على تطبيقات واقعية.[2][3][12] قد تشمل هذه:

في عام 2020، تبين أن بنية المحولات، وبشكل أكثر تحديداً GPT-2، يمكن ضبطها لتلعب الشطرنج.[15]

المراجع

  1. ^ أ ب ت ث ج قالب:Cite arxiv
  2. ^ أ ب ت "Open Sourcing BERT: State-of-the-Art Pre-training for Natural Language Processing". Google AI Blog. Retrieved 2019-08-25.
  3. ^ أ ب ت "Better Language Models and Their Implications". OpenAI. 2019-02-14. Retrieved 2019-08-25.
  4. ^ "Sequence Modeling with Neural Networks (Part 2): Attention Models". Indico. 2016-04-18. Retrieved 2019-10-15.
  5. ^ أ ب ت Alammar, Jay. "The Illustrated Transformer". jalammar.github.io. Retrieved 2019-10-15.
  6. ^ Clark, Kevin; Khandelwal, Urvashi; Levy, Omer; Manning, Christopher D. (August 2019). "What Does BERT Look at? An Analysis of BERT's Attention". Proceedings of the 2019 ACL Workshop BlackboxNLP: Analyzing and Interpreting Neural Networks for NLP. Florence, Italy: Association for Computational Linguistics: 276–286. doi:10.18653/v1/W19-4828.
  7. ^ "Reformer: The Efficient Transformer" (PDF). ICLR 2020.
  8. ^ "Task with long sequences".{{cite web}}: CS1 maint: url-status (link)
  9. ^ "Reformer: The Efficient Transformer". Google AI Blog (in الإنجليزية). Retrieved 2020-10-22.
  10. ^ أ ب Wang, Alex; Singh, Amanpreet; Michael, Julian; Hill, Felix; Levy, Omer; Bowman, Samuel (2018). "GLUE: A Multi-Task Benchmark and Analysis Platform for Natural Language Understanding". Proceedings of the 2018 EMNLP Workshop BlackboxNLP: Analyzing and Interpreting Neural Networks for NLP. Stroudsburg, PA, USA: Association for Computational Linguistics: 353–355. arXiv:1804.07461. Bibcode:2018arXiv180407461W. doi:10.18653/v1/w18-5446. S2CID 5034059.
  11. ^ Allard, Maxime (2019-07-01). "What is a Transformer?". Medium (in الإنجليزية). Retrieved 2019-10-21.
  12. ^ Yang, Zhilin Dai, Zihang Yang, Yiming Carbonell, Jaime Salakhutdinov, Ruslan Le, Quoc V. (2019-06-19). XLNet: Generalized Autoregressive Pretraining for Language Understanding. OCLC 1106350082.{{cite book}}: CS1 maint: multiple names: authors list (link)
  13. ^ أ ب Monsters, Data (2017-09-26). "10 Applications of Artificial Neural Networks in Natural Language Processing". Medium (in الإنجليزية). Retrieved 2019-10-21.
  14. ^ Rives, Alexander; Goyal, Siddharth; Meier, Joshua; Guo, Demi; Ott, Myle; Zitnick, C. Lawrence; Ma, Jerry; Fergus, Rob (2019). "Biological structure and function emerge from scaling unsupervised learning to 250 million protein sequences". bioRxiv 10.1101/622803. doi:10.1101/622803. {{cite journal}}: Cite journal requires |journal= (help)
  15. ^ قالب:Cite arxiv


الكلمات الدالة: