لماذا تظل نظريات فيتجنشتاين أساس كل البرمجة اللغوية العصبية الحديثةقد يكون تمثيل الكلمات الموجه من أجمل الأفكار الرومانسية في تاريخ الذكاء الاصطناعي. فلسفة اللغة هي فرع من الفلسفة التي تستكشف العلاقة بين اللغة والواقع وكيفية جعل الكلام ذو مغزى ومفهوما. تمثيل المتجهات للكلمات هو طريقة محددة للغاية في معالجة اللغة الطبيعية الحديثة (NLP). بمعنى ما ، إنها دليل تجريبي على نظريات لودفيج فيتجنشتاين ، أحد أكثر الفلاسفة أهمية في القرن الماضي. بالنسبة لفيتجنشتاين ، فإن استخدام الكلمات هو خطوة في
لعبة اللغة الاجتماعية يلعبها أفراد المجتمع الذين يفهمون بعضهم البعض. يعتمد معنى الكلمة فقط على فائدتها في السياق ؛ فهي لا تتوافق مع واحد مع كائن من العالم الحقيقي.
بالنسبة لفئة كبيرة من الحالات التي نستخدم فيها كلمة "المعنى" ، يمكن تعريفها على أنها معنى الكلمة هي استخدامها في اللغة .
بالطبع ، فهم المعنى الدقيق للكلمة أمر صعب للغاية. هناك العديد من الجوانب التي يجب مراعاتها:
- الذي يعترض الكلمة قد يشير إلى ؛
- ما هو جزء الكلام؟
- سواء كان تعبيرًا اصطلاحيًا ؛
- جميع ظلال المعاني.
- و هكذا.
كل هذه الجوانب ، في النهاية ، تنقسم إلى شيء واحد: معرفة كيفية استخدام الكلمة.
إن مفهوم
المعنى ولماذا لدى مجموعة من الشخصيات مرتبة دلالة محددة في اللغة ليس فقط سؤالًا فلسفيًا ، ولكن أيضًا المشكلة الأكبر التي يجب على متخصصي الذكاء الاصطناعى الذين يعملون مع NLP التعامل معها. من الواضح تمامًا للشخص الناطق باللغة الروسية أن "الكلب" هو "حيوان" ، ويبدو أنه يشبه "القط" بدلاً من "الدلفين" ، لكن هذه المهمة بعيدة كل البعد عن حل منهجي.
بعد تصحيح بعض نظريات فيتجنشتاين قليلاً ، يمكننا أن نقول أن الكلاب تشبه القطط لأنها تظهر غالبًا في نفس السياقات: ربما تجد الكلاب والقطط المرتبطة بكلمات "الوطن" و "الحديقة" بدلاً من الكلمات "البحر" و "المحيط". هذا هو الحدس الذي يقوم عليه
Word2Vec ، وهو أحد أشهر التطبيقات الناجحة لتمثيل الكلمات المتجه. اليوم ، الآلات بعيدة كل البعد عن
الفهم الحقيقي للنصوص والمقاطع الطويلة ، ولكن تمثيل الكلمات الموجه هو بلا شك الطريقة الوحيدة التي سمحت لنا باتخاذ أكبر خطوة في هذا الاتجاه خلال العقد الماضي.
من BoW إلى Word2Vec
في العديد من مشاكل الكمبيوتر ، تتمثل المشكلة الأولى في تقديم البيانات في شكل رقمي. الكلمات والجمل هي على الأرجح الأصعب في هذا النموذج. في الإعداد الخاص بنا ، يتم تحديد الكلمات
D من القاموس ، ويمكن تعيين كل كلمة فهرس رقمي
i .
على مدار عقود عديدة ، تم اتباع طريقة كلاسيكية لتمثيل كل كلمة كمتجه عددي الأبعاد لجميع الأصفار باستثناء واحدة في الموضع i. على سبيل المثال ، فكر في قاموس يتكون من ثلاث كلمات: "كلب" و "قطة" و "دولفين" (D = 3). يمكن تمثيل كل كلمة كمتجه ثلاثي الأبعاد: "الكلب" يتوافق مع [1،0،0] ، و "cat" إلى [0،1،0] ، و "dolphin" ، من الواضح ، [0،0،1]. يمكن تمثيل المستند كمتجه ثلاثي الأبعاد ، حيث يحسب كل عنصر تكرارات الكلمة الأولى في المستند. يسمى هذا النموذج حقيبة الكلمات (BoW) ، وقد تم استخدامه منذ عقود.
على الرغم من نجاحها في التسعينيات ، كانت BoW تفتقر إلى الوظيفة المثيرة للاهتمام الوحيدة للكلمات: معناها. نحن نعلم أن كلمتين مختلفتين للغاية يمكن أن يكون لها معاني متشابهة ، حتى لو كانت مختلفة تمامًا عن وجهة النظر الإملائية. "Cat" و "dog" كلاهما حيوانات منزلية ، و "king" و "queen" قريبان من بعضهما البعض ، و "apple" و "cigarette" لا علاقة لهما تمامًا. نحن
نعرف هذا ، ولكن في نموذج BoW ، كل هذه الكلمات موجودة في نفس المسافة في مساحة المتجه: 1.
تنطبق نفس المشكلة على المستندات: باستخدام BoW ، يمكننا أن نستنتج أن المستندات متشابهة فقط إذا كانت تحتوي على نفس الكلمة وعدد معين من المرات. وهنا يأتي Word2Vec ، حيث قدم في آلة التعلم العديد من الأسئلة الفلسفية التي ناقشها فيتجنشتاين في دراساته
الفلسفية قبل 60 عامًا.
في قاموس بالحجم D ، حيث يتم تعريف الكلمة بفهرسها ، يكون الهدف هو حساب تمثيل متجه N-dimensional لكل كلمة لـ N << D. من الناحية المثالية ، نريدها أن تكون متجهًا كثيفًا يمثل بعض جوانب معنى الدلالة. على سبيل المثال ، نريد من الناحية المثالية أن يكون لكلمة "كلب" و "قطة" تمثيلان مشابهان ، وأن "التفاح" و "السيجارة" بعيدتان جدًا في الفضاء المتجه.
نريد إجراء بعض العمليات الجبرية الأساسية على المتجهات ، مثل
+−=
. أريد أن تتزامن المسافة بين المتجهات "الممثل" و "الممثلة" بشكل كبير مع المسافة بين "الأمير" و "الأميرة". على الرغم من أن هذه النتائج مثالية ، إلا أن التجارب أظهرت أن متجهات Word2Vec تعرض خصائص قريبة جدًا من هذه النتائج.
Word2Vec لا يتعلم بشكل مباشر طرق العرض من هذا ، لكنه يستقبلها كمنتج فرعي للتصنيف دون معلم. يتكون متوسط مجموعة الكلمات NLP corpus dataset من مجموعة من الجمل ؛ تظهر كل كلمة في جملة في سياق الكلمات المحيطة. الغرض من المصنف هو التنبؤ بالكلمة الهدف ، مع الأخذ في الاعتبار الكلمات السياقية كمدخلات. بالنسبة للجملة "الكلب البني يلعب في الحديقة" ، يتم توفير الكلمات [البني ، المسرحيات ، الحديقة ،] للنموذج كمدخل ، وعليها أن تتنبأ بكلمة "الكلب". تُعتبر هذه المهمة بمثابة تعلم بدون معلم ، نظرًا لأن الأمر الأساسي لا يحتاج إلى تمييز بمصدر خارجي للحقيقة: مع مجموعة من الجمل ، يمكنك دائمًا إنشاء أمثلة إيجابية وسلبية تلقائيًا. النظر إلى "اللعب باللون البني في الحديقة" كمثال إيجابي ، يمكننا إنشاء العديد من الأنماط السلبية ، مثل "اللعب باللون البني في الحديقة" أو "لعب العنب البني باللعب في الحديقة" ، مع استبدال الكلمة "dog" المستهدفة بكلمات عشوائية من مجموعة البيانات.
والآن أصبح تطبيق نظريات فيتجنشتاين واضحًا تمامًا: فالسياق ضروري للتمثيل المتجه للكلمات ، حيث إنه من المهم أن نعلق معنى على الكلمة في نظرياته. إذا كانت لكلمتين معاني متشابهة ، فستكون لديهم تمثيلات متشابهة (مسافة صغيرة في الفضاء ذي البعد N) فقط لأنها تظهر غالبًا في سياقات مماثلة. وبالتالي ، ستحتوي "القطة" و "الكلب" في نهاية المطاف على ناقلات قريبة لأنها تظهر غالبًا في نفس السياقات: من المفيد أن يستخدم النموذج تمثيلات متجهية مماثلة لهما ، لأن هذا هو أكثر شيء ملائم يمكنها القيام به ، للحصول على نتائج أفضل في التنبؤ بكلمتين بناءً على سياقاتها.
تقدم المقالة الأصلية تصميمين مختلفين: CBOW و Skip-gram. في كلتا الحالتين ، يتم تدريس التمثيل اللفظي مع مهمة تصنيف محددة ، مما يوفر أفضل تمثيلات متجهية ممكنة للكلمات التي تزيد من أداء النموذج.
الشكل 1. مقارنة بين المباني CBOW وتخطي غراميرمز
CBOW إلى حقيبة الكلمات المستمرة ، ومهمته هي تخمين كلمة مع مراعاة السياق كمدخلات. يتم تمثيل المدخلات والمخرجات على أنها ناقلات D- الأبعاد التي يتم إسقاطها في مساحة N- الأبعاد مع الأوزان الشائعة. نحن نبحث فقط عن أوزان الإسقاط. في الواقع ، يمثل متجه الكلمات مصفوفات D × N ، حيث يمثل كل صف كلمة قاموس. يتم عرض كل كلمات السياق في موضع واحد ، وتم حساب متوسطات المتجهات الخاصة بها ؛ لذلك ، لا يؤثر ترتيب الكلمات على النتيجة.
يعمل تخطي غرام على نفس الشيء ، لكن بالعكس: يحاول التنبؤ بكلمات السياق
C ، مع أخذ الكلمة الهدف كمدخلات. يمكن إعادة صياغة مهمة التنبؤ بعدة كلمات سياقية إلى مجموعة من مشاكل التصنيف الثنائي المستقل ، والهدف الآن هو التنبؤ بوجود (أو غياب) الكلمات السياقية.
كقاعدة عامة ، يتطلب Skip-gram مزيدًا من الوقت للتدريب وغالبًا ما يعطي نتائج أفضل قليلاً ، ولكن كالمعتاد ، يكون للتطبيقات المختلفة متطلبات مختلفة ، ومن الصعب التنبؤ مقدمًا بالتطبيقات التي ستظهر أفضل النتائج. على الرغم من بساطة المفهوم ، فإن تعلم هذا النوع من الهندسة المعمارية هو كابوس حقيقي نظرًا لكمية البيانات وقوة المعالجة اللازمة لتحسين الأوزان. لحسن الحظ ، يمكنك أن تجد على الإنترنت بعضًا من الكلمات الناقلة المدربة مسبقًا للكلمات ، ويمكنك دراسة مساحة المتجهات - الأكثر إثارة للاهتمام - من خلال بضعة أسطر من شفرة Python.
التحسينات الممكنة: GloVe و fastText
خلال Word2Vec الكلاسيكية في السنوات الأخيرة ، تم اقتراح العديد من التحسينات الممكنة. الأكثر إثارة للاهتمام والأكثر استخدامًا هما GloVe (جامعة ستانفورد) و fastText (تم تطويرهما بواسطة Facebook). إنهم يحاولون التعرف على حدود الخوارزمية الأصلية والتغلب عليها.
في
مقالة علمية أصلية ، يؤكد مؤلفو GloVe على أن التدريب النموذجي على سياق محلي منفصل يجعل الاستخدام السيئ للإحصائيات العالمية أمرًا ضعيفًا. الخطوة الأولى للتغلب على هذا القيد هي إنشاء مصفوفة عمومية
X ، حيث يحسب كل عنصر
i ، j عدد المراجع إلى الكلمة
j في سياق الكلمة
i . الفكرة المهمة الثانية في هذه الوثيقة هي فهم أن الاحتمالات وحدها وحدها لا تكفي للتنبؤ الموثوق بالقيم ، وهناك حاجة أيضًا إلى مصفوفة الحدوث المشترك ، والتي يمكن من خلالها استخلاص جوانب معينة من القيم مباشرةً.
فكر في كلمتين i و j ذات أهمية خاصة. وللتطابق ، افترض أننا مهتمون بمفهوم الحالة الديناميكية الحرارية ، حيث يمكننا أخذ i =
و j =
. يمكن دراسة العلاقة بين هذه الكلمات من خلال دراسة نسبة احتمالات حدوث المفصل باستخدام كلمات السبر المختلفة ، k. بالنسبة للكلمات k المتعلقة بالجليد وليس بالبخار ، قل k =
[الحالة الصلبة ، الحالة] ، نتوقع أن تكون النسبة Pik / Pjk أكبر. وبالمثل ، بالنسبة للكلمات k المرتبطة بالبخار ، ولكن ليس بالجليد ، قل k =
، يجب أن تكون النسبة صغيرة. بالنسبة لكلمات مثل "الماء" أو "الموضة" ، التي ترتبط بشكل متساوٍ بالثلج والبخار ، أو لا ترتبط بها ، يجب أن تكون هذه النسبة قريبة من الوحدة.
هذه النسبة من الاحتمالات تصبح نقطة البداية لدراسة التمثيل المتجه للكلمات. نريد أن نكون قادرين على حساب المتجهات التي ، بالاقتران مع دالة معينة
F ، تحافظ على هذه النسبة ثابتة في مساحة تمثيل المتجهات.
الشكل 2. الصيغة الأكثر شيوعا لتمثيل ناقلات الكلمات في نموذج GloVeيمكن تبسيط الوظيفة F والاعتماد على الكلمة k من خلال استبدال الأسي والإزاحة الثابتة ، والتي تعطي وظيفة تقليل الأخطاء إلى أدنى حد باستخدام طريقة المربعات الصغرى
J :
الشكل 3. الوظيفة النهائية لحساب تمثيل ناقلات الكلمات في نموذج GloVeالدالة
f هي وظيفة حسابية لا تحاول تحميل عبارات متكررة ونادرة للغاية ، في حين أن
b و
bj هما إزاحة لاستعادة تناظر الوظيفة. في الفقرات الأخيرة من المقالة ، يظهر أن تدريب هذا النموذج في النهاية لا يختلف اختلافًا كبيرًا عن تدريب نموذج Skip-gram الكلاسيكي ، على الرغم من أن GloVe في الاختبارات التجريبية متفوقة على كل من تطبيقات Word2Vec.
من ناحية أخرى ، يصحح
fastText عيبًا مختلفًا تمامًا في Word2Vec: إذا كان التدريب النموذجي يبدأ بالتشفير المباشر لواجهة أحادية الأبعاد ، فسيتم تجاهل البنية الداخلية للكلمات. بدلاً من الترميز المباشر لتشفير الكلمات التي تتعلم التمثيلات الشفوية ، يقدم fastText دراسة N-grams من الأحرف وتمثيل الكلمات كمجموع متجهات N-gram. على سبيل المثال ، مع N = 3 ، يتم ترميز كلمة "زهرة" على أنها 6 غرامات مختلفة [<fl، flo، low، Debt، wer، er>] بالإضافة إلى تسلسل خاص <زهرة>. لاحظ كيفية استخدام أقواس الزاوية للإشارة إلى بداية ونهاية الكلمة. وهكذا ، يتم تمثيل كلمة بفهرسها في قاموس الكلمات ومجموعة N-gram التي تحتوي عليها ، ويتم تعيينها إلى أعداد صحيحة باستخدام دالة التجزئة. يسمح لك هذا التحسين البسيط بتقسيم تمثيلات N-gram بين الكلمات وحساب تمثيلات المتجهات للكلمات التي لم تكن في حالة التعلم.
التجارب والتطبيقات الممكنة
كما قلنا من قبل ،
لاستخدام هذه الموجهات المتجهات ، تحتاج فقط إلى بضعة أسطر من كود Python. لقد أجريت عدة تجارب على
نموذج GloVe ذي الأبعاد 50 ، وتم تدريبه على 6 مليارات كلمة من جمل Wikipedia ، وكذلك مع
نموذج fastText ذي الأبعاد 300 ، الذي تم تدريبه على Common Crawl (والذي أعطى 600 مليار رمزًا). يوفر هذا القسم روابط لنتائج كلتا التجربتين فقط لإثبات المفاهيم وإعطاء فهم عام للموضوع.
بادئ ذي بدء ، أردت أن أتحقق من بعض أوجه التشابه الأساسية للكلمات ، وهي الميزة الأكثر بساطة ولكنها مهمة في تمثيل المتجهات. كما هو متوقع ، كانت أكثر الكلمات المشابهة للكلمة "dog" هي "cat" (0.92) ، "dogs" (0.85) ، "horse" (0.79) ، "puppy" (0.78) و "pet" (0.77). لاحظ أن صيغة الجمع لها نفس معنى المفرد تقريبًا. مرة أخرى ، إنه أمر تافه للغاية بالنسبة لنا أن نقول ذلك ، ولكن بالنسبة للسيارة فهي ليست حقيقة. الآن الطعام: أكثر الكلمات تشابهًا لـ "البيتزا" هي "ساندويتش" (0.87) ، "سندويشات" (0.86) ، "وجبة خفيفة" (0.81) ، "سلع مخبوزة" (0.79) ، "فرايز" (0.79) و "برجر" ( 0.78). من المنطقي أن تكون النتائج مرضية ويتصرف النموذج بشكل جيد.
والخطوة التالية هي إجراء بعض العمليات الحسابية الأساسية في مساحة المتجه والتحقق من مدى صحة اكتساب النموذج لبعض الخصائص المهمة. في الواقع ، كنتيجة لحساب متجهات
+-
، تكون النتيجة "ممثلة" (0.94) ، ونتيجة لحساب
+-
، يتم الحصول على كلمة "ملك" (0.86). بشكل عام ، إذا كانت القيمة هي
a:b=c:d
، فيجب الحصول على الكلمة
d كـ
d=b-a+c
. بالانتقال إلى المستوى التالي ، من المستحيل تخيل كيف تصف عمليات المتجهات هذه الجوانب الجغرافية: نعلم أن روما هي عاصمة إيطاليا ، لأن برلين هي عاصمة ألمانيا ، وفي الواقع
+-= (0.88)
،
+-= (0.83)
.
والآن بالنسبة للجزء المرح. باتباع نفس الفكرة ، سنحاول إضافة وطرح المفاهيم. على سبيل المثال ، ما هو المعادل الأمريكي للبيتزا للإيطاليين؟
+-= (0.60)
، ثم
+-= (0.60)
(0.59)
. منذ أن انتقلت إلى هولندا ، أقول دائمًا إن هذا البلد عبارة عن مزيج من ثلاثة أشياء: القليل من الرأسمالية الأمريكية والبرد السويدي ونوعية الحياة ، وأخيراً ، قرصة
الوفرة النابولية. من خلال تغيير النظرية الأولية قليلاً ، وإزالة القليل من الدقة السويسرية ، نحصل على هولندا (0.68) نتيجة
++-
: مؤثرة للغاية ، لنكون صادقين.
الشكل 4. لجميع القراء الهولنديين: خذ هذا مجاملة ، حسناً؟يمكن العثور على موارد عملية جيدة
هنا وهنا لاستخدام هذه الموجهات ناقلات المدربين مسبقا.
Gensim هي مكتبة Python بسيطة وكاملة مع بعض وظائف الجبر والتشابه الجاهزة للاستخدام. يمكن استخدام تمثيلات المتجهات المسبقة التدريب هذه بطرق مختلفة (ومفيدة) ، على سبيل المثال ، لتحسين أداء أجهزة تحليل الحالة المزاجية أو نماذج اللغة. مهما كانت المهمة ، فإن استخدام متجهات N-dimensional من شأنه أن يحسن بشكل كبير من كفاءة النموذج مقارنة بالتشفير المباشر. بطبيعة الحال ، فإن التدريب على تمثيل ناقلات الأمراض في منطقة معينة سيزيد من تحسين النتيجة ، لكن هذا قد يتطلب ، ربما ، جهدًا ووقتًا مفرطًا.