الانتباه للدمى وتنفيذها في كراس

حول مقالات عن الذكاء الاصطناعي باللغة الروسية


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

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

سأكتب دوريا مقالات بلغتي الأم ، مع إدخال المعرفة في مجال لغتنا. كما تعلمون ، فإن أفضل طريقة لفهم الموضوع هي شرحه لشخص ما. إذن من غيرك ، لكن يجب أن أبدأ سلسلة من المقالات حول أحدث الذكاء المعماري الحديث والمعقد والمتقدّم. بحلول نهاية المقال ، سوف أفهم بنفسي مقاربة 100 ٪ ، وسيكون مفيدًا للشخص الذي يقرأ ويحسن فهمه (بالمناسبة ، أحب Gesser ، لكن أفضل ** Blanche de bruxelles **).

عندما تفهم الموضوع ، فهناك 4 مستويات من الفهم:

  1. أنت تفهم مبدأ ومدخلات ومخرجات الخوارزمية / المستوى
  2. أنت تفهم مخارج التجمع وبصفة عامة كيف يعمل
  3. تفهم كل ما سبق ، وكذلك جهاز كل مستوى شبكة (على سبيل المثال ، في نموذج VAE فهمت المبدأ ، وفهمتم أيضًا جوهر خدعة إعادة التأهيل)
  4. لقد فهمت كل شيء ، بما في ذلك كل مستوى ، وفهمت أيضًا لماذا يتعلم كل شيء ، وفي الوقت نفسه ، يمكنني تحديد معلمات تشعبية لمهمتي ، بدلاً من الحلول الجاهزة للنسخ.

بالنسبة للمعماريات الجديدة ، غالباً ما يكون الانتقال من المستوى 1 إلى المستوى 4 أمرًا صعبًا: يؤكد المؤلفون على أنهم أوثق في وصف التفاصيل المهمة المختلفة بشكل سطحي (هل فهمهم أنفسهم؟). أو أن دماغك لا يحتوي على أي إنشاءات ، لذلك حتى بعد قراءة الوصف لم يفك الشفرة ولم يتحول إلى مهارات. يحدث هذا إذا كنت خلال سنوات الطلاب الخاصة بك نمت في نفس درس matan ، بعد حفلة ليلية ، حيث أعطيت حصيرة الصحيحة. جهاز. وهنا فقط نحتاج إلى مقالات بلغتنا الأم التي تكشف الفروق الدقيقة والخلفية الدقيقة لكل عملية.

مفهوم الاهتمام والتطبيق


ما سبق هو سيناريو لمستويات الفهم. لتحليل الانتباه ، لنبدأ من المستوى الأول. قبل وصف المدخلات والمخرجات ، سنقوم بتحليل الجوهر: بناءً على المفاهيم الأساسية المفهومة حتى للطفل ، يعتمد هذا المفهوم. في المقال ، سوف نستخدم المصطلح English Attention ، لأنه في هذا النموذج هو أيضًا استدعاء لوظيفة مكتبة Keras (لا يتم تنفيذه مباشرةً فيه ، مطلوب وحدة إضافية ، ولكن المزيد حول ذلك أدناه). لقراءة المزيد ، يجب أن يكون لديك فهم لمكتبات Keras و python ، لأنه سيتم توفير شفرة المصدر.

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

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

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

تتجلى الطبيعة الاحتمالية لآلية الاهتمام في التعلم في مهام الترجمة الآلية. على سبيل المثال ، أخبرنا الشبكة أنه عند الترجمة من الروسية إلى الإنجليزية ، تُترجم كلمة الحب في 90٪ من الحالات كحب ، في 9٪ من الحالات كجنس ، في 1٪ من الحالات على خلاف ذلك. تميز الشبكة على الفور العديد من الخيارات ، والتي تعرض أفضل جودة للتدريب. عند الترجمة ، نقول للشبكة: "عند ترجمة كلمة love ، انتبه بشكل خاص للكلمة الإنجليزية Love ، وانظر أيضًا إذا كان لا يزال من الممكن ممارسة الجنس".

يتم تطبيق نهج الاهتمام للعمل مع النص ، وكذلك الصوت والسلاسل الزمنية. لمعالجة النصوص ، تستخدم الشبكات العصبية المتكررة (RNN ، LSTM ، GRU) على نطاق واسع. الانتباه يمكن أن يكملها أو يحل محلها ، ونقل الشبكة إلى أبسط وأسرع البنى.

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

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

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

تنفيذ الاهتمام في Keras خارج الصندوق


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

الاهتمام غير مطبق حاليًا في Keras نفسها. ولكن هناك بالفعل تطبيقات الطرف الثالث ، مثل انتباه الانتباه ، والتي يمكن تثبيتها مع جيثب. بعد ذلك سيصبح الرمز بسيطًا للغاية:

from attention_keras.layers.attention import AttentionLayer attn_layer = AttentionLayer(name='attention_layer') attn_out, attn_states = attn_layer([encoder_outputs, decoder_outputs]) 

يدعم هذا التطبيق وظيفة تصور مقياس الاهتمام. بعد تدريب الانتباه ، يمكنك الحصول على إشارة مصفوفة ، والتي وفقًا للشبكة مهمة بشكل خاص حول هذا النوع (صورة من github من صفحة مكتبة اهتمام الانتباه).


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

تنفيذ Keras من الاهتمام المنخفض


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

أبسط تطبيق لآلية الاهتمام في Keras لا يستغرق سوى 3 خطوط:

 inputs = Input(shape=(input_dims,)) attention_probs = Dense(input_dims, activation='softmax', name='attention_probs')(inputs) attention_mul = merge([inputs, attention_probs], output_shape=32, name='attention_mul', mode='mul' 

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

يوجد أدناه فئة Attention بأكملها ، والتي تنفذ آلية ذاتية أكثر تعقيدًا قليلاً ، والتي يمكن استخدامها كمستوى كامل في النموذج ؛ يرث الفصل فئة طبقة Keras.

 # Attention class Attention(Layer): def __init__(self, step_dim, W_regularizer=None, b_regularizer=None, W_constraint=None, b_constraint=None, bias=True, **kwargs): self.supports_masking = True self.init = initializers.get('glorot_uniform') self.W_regularizer = regularizers.get(W_regularizer) self.b_regularizer = regularizers.get(b_regularizer) self.W_constraint = constraints.get(W_constraint) self.b_constraint = constraints.get(b_constraint) self.bias = bias self.step_dim = step_dim self.features_dim = 0 super(Attention, self).__init__(**kwargs) def build(self, input_shape): assert len(input_shape) == 3 self.W = self.add_weight((input_shape[-1],), initializer=self.init, name='{}_W'.format(self.name), regularizer=self.W_regularizer, constraint=self.W_constraint) self.features_dim = input_shape[-1] if self.bias: self.b = self.add_weight((input_shape[1],), initializer='zero', name='{}_b'.format(self.name), regularizer=self.b_regularizer, constraint=self.b_constraint) else: self.b = None self.built = True def compute_mask(self, input, input_mask=None): return None def call(self, x, mask=None): features_dim = self.features_dim step_dim = self.step_dim eij = K.reshape(K.dot(K.reshape(x, (-1, features_dim)), K.reshape(self.W, (features_dim, 1))), (-1, step_dim)) if self.bias: eij += self.b eij = K.tanh(eij) a = K.exp(eij) if mask is not None: a *= K.cast(mask, K.floatx()) a /= K.cast(K.sum(a, axis=1, keepdims=True) + K.epsilon(), K.floatx()) a = K.expand_dims(a) weighted_input = x * a return K.sum(weighted_input, axis=1) def compute_output_shape(self, input_shape): return input_shape[0], self.features_dim 

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

الطبقة لديها معلمة "التحيز" أي التحيز. إذا تم تنشيط المعلمة ، فبعد تطبيق الطبقة الكثيفة ، ستتم إضافة الموجه النهائي إلى متجه معلمات الطبقة "self.b" ، مما سيتيح ليس فقط تحديد "الأوزان" لوظيفة الانتباه لدينا ، ولكن أيضًا لتحويل مستوى الانتباه برقم. مثال على الحياة: نحن خائفون من الأشباح ، لكننا لم نلتق بهم قط. وبالتالي ، نقوم بتصحيح الخوف -100 نقطة. بمعنى أنه إذا خرج الخوف عن نطاق 100 نقطة ، فسنتخذ قرارات بشأن الحماية من الأشباح ، واستدعاء وكالة خبيثة ، وشراء أجهزة تخويف ، إلخ.

استنتاج


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

عند كتابة هذا المقال القصير نسبيًا ، درست أكثر من 10 مقالات باللغة الإنجليزية. بالطبع ، لم أتمكن من تنزيل جميع البيانات من كل هذه المقالات إلى 5 صفحات ، لقد قمت فقط بالضغط من أجل إنشاء "دليل للدمى". لفهم جميع الفروق الدقيقة في آلية الاهتمام ، تحتاج إلى كتاب الصفحات 150-200. آمل حقًا أن أتمكن من الكشف عن الجوهر الأساسي لهذه الآلية ، حتى يتسنى لأولئك الذين بدأوا للتو في فهم التعلم الآلي فهم كيف يعمل كل هذا.

مصادر


  1. آلية الانتباه في الشبكات العصبية مع Keras
  2. الانتباه في أعماق الشبكات مع Keras
  3. تسلسل قائم على الانتباه في تسلسل Keras
  4. تصنيف النص باستخدام آلية الاهتمام في Keras
  5. اهتمام واسع الانتشار: الشبكات العصبية التلافيفية ثنائية الأبعاد للتنبؤ من التسلسل إلى التسلسل
  6. كيفية تطبيق طبقة الاهتمام في كراس؟
  7. الاهتمام؟ اهتمام!
  8. الترجمة الآلية العصبية مع الاهتمام

Source: https://habr.com/ru/post/ar458992/


All Articles