কেরাস 'এম্বেডিং' স্তর কীভাবে কাজ করে?


68

কেরাস লাইব্রেরিতে 'এম্বেডিং' স্তরটির কাজ বোঝার প্রয়োজন। আমি পাইথনে নিম্নলিখিত কোডটি কার্যকর করি

import numpy as np
from keras.models import Sequential
from keras.layers import Embedding

model = Sequential()
model.add(Embedding(5, 2, input_length=5))

input_array = np.random.randint(5, size=(1, 5))

model.compile('rmsprop', 'mse')
output_array = model.predict(input_array)

যা নিম্নলিখিত আউটপুট দেয়

input_array = [[4 1 3 3 3]]
output_array = 
[[[ 0.03126476  0.00527241]
  [-0.02369716 -0.02856163]
  [ 0.0055749   0.01492429]
  [ 0.0055749   0.01492429]
  [ 0.0055749   0.01492429]]]

আমি বুঝতে পারি যে ইনপুট_আরে প্রতিটি মান আউটপুট_আরে 2 টি উপাদান ভেক্টরকে ম্যাপ করা হয়, সুতরাং 1 এক্স 4 ভেক্টর 1 এক্স 4 এক্স 2 ভেক্টর দেয়। তবে ম্যাপযুক্ত মানগুলি কীভাবে গণনা করা হয়?


1
সম্ভবত একটি ভাল শুরু: github.com/fchollet/keras/issues/3110 ?
fnl

এই ব্লগে কেরাস এম্বেডিং স্তরটি ব্যবহার করে এম্বেডিং করা একটি শব্দ শেখা
নেওরাল-নেট

উত্তর:


85

আসলে, কোনও গাণিতিক ক্রিয়াকলাপ ব্যবহার করে আউটপুট ভেক্টরগুলি ইনপুট থেকে গণনা করা হয় না। পরিবর্তে, প্রতিটি ইনপুট পূর্ণসংখ্যা সূচক হিসাবে একটি টেবিলটিতে প্রবেশ করতে ব্যবহৃত হয় যাতে সমস্ত ধরণের ভেক্টর থাকে contains এই কারণেই আপনাকে প্রথম আর্গুমেন্ট হিসাবে ভোকাবুলারিটির আকার নির্দিষ্ট করতে হবে (যাতে সারণিটি আরম্ভ করা যেতে পারে)।

এই স্তরটির সর্বাধিক সাধারণ প্রয়োগ হ'ল পাঠ্য প্রক্রিয়াজাতকরণ। আসুন একটি সহজ উদাহরণ দেখুন। আমাদের প্রশিক্ষণ সেটটি কেবল দুটি বাক্যাংশ নিয়ে গঠিত:

আশা করি শীঘ্রই দেখা হবে

তোমাকে আবার দেখে ভালো লাগলো

সুতরাং আমরা প্রতিটি শব্দকে একটি অনন্য পূর্ণসংখ্যার নম্বর প্রদান করে (উদাহরণস্বরূপ আমাদের প্রশিক্ষণ ডেটাসেটে উপস্থিতির ক্রম অনুসারে) এই বাক্যগুলি এনকোড করতে পারি। তারপরে আমাদের বাক্যাংশগুলি আবার লিখিত হতে পারে:

[0, 1, 2, 3, 4]

[5, 1, 2, 3, 6]

এখন কল্পনা করুন আমরা এমন কোনও নেটওয়ার্ককে প্রশিক্ষণ দিতে চাই যার প্রথম স্তরটি এম্বেডিং স্তর। এই ক্ষেত্রে, আমাদের নিম্নলিখিত হিসাবে এটি সূচনা করা উচিত:

Embedding(7, 2, input_length=5)

প্রথম যুক্তি (7) হ'ল প্রশিক্ষণ সেটে স্বতন্ত্র শব্দের সংখ্যা। দ্বিতীয় যুক্তি (2) এম্বেডিং ভেক্টরগুলির আকার নির্দেশ করে। Input_length argumet, অবশ্যই, প্রতিটি ইনপুট ক্রম আকার নির্ধারণ করে।

নেটওয়ার্কটি প্রশিক্ষিত হয়ে গেলে, আমরা এম্বেডিং স্তরের ওজন পেতে পারি, যা এই ক্ষেত্রে আকারের (7, 2) হবে এবং ভ্যাক্টর এম্বেডিংয়ের জন্য পূর্ণসংখ্যার মানচিত্র তৈরি করার জন্য ব্যবহৃত টেবিল হিসাবে বিবেচনা করা যেতে পারে:

+------------+------------+
|   index    |  Embedding |
+------------+------------+
|     0      | [1.2, 3.1] |
|     1      | [0.1, 4.2] |
|     2      | [1.0, 3.1] |
|     3      | [0.3, 2.1] |
|     4      | [2.2, 1.4] |
|     5      | [0.7, 1.7] |
|     6      | [4.1, 2.0] |
+------------+------------+

সুতরাং এই এম্বেডিং অনুযায়ী আমাদের দ্বিতীয় প্রশিক্ষণের বাক্যাংশটি উপস্থাপিত হবে:

[[0.7, 1.7], [0.1, 4.2], [1.0, 3.1], [0.3, 2.1], [4.1, 2.0]]

এটি প্রথমে স্বতঃস্ফূর্ত মনে হতে পারে তবে অন্তর্নিহিত স্বয়ংক্রিয় ডিফারেন্সেশন ইঞ্জিনগুলি (যেমন, টেনসরফ্লো বা থানো) আপনার মডেলের অন্যান্য প্যারামিটারের মতো প্রতিটি ইনপুট পূর্ণসংখ্যার সাথে যুক্ত এই ভেক্টরগুলিকে অনুকূল করতে পরিচালনা করে। বিভিন্ন ডোমেনের অন্যান্য পদ্ধতি / লোকদের দ্বারা শিখে নেওয়া এম্বেডিংগুলি ( যেমন https://blog.keras.io/ using-pre-trained-word-e એમ્બેડdings-in-a-keras-model.html দেখুন ) হিসাবে ব্যবহার করা আকর্ষণীয় [1] সালে সম্পন্ন।

[1] ল্যাপেজ-সানচেজ, ডি।, হেরেরো, জেআর, অ্যারিটা, এজি, এবং করচাডো, জেএম হাইব্রিডাইজিং মেট্রিক লার্নিং এবং অভিযোজ্য ক্লিকবাইট সনাক্তকরণের জন্য কেস-ভিত্তিক যুক্তি। ফলিত গোয়েন্দা তথ্য, 1-16।


4
উত্তরের জন্য ধন্যবাদ. কেবলমাত্র একটি ক্যোয়ারী যে এমবেডিং স্তরের ওজন কীভাবে পাওয়া যায়। সূচক 0 এর মতো, কীভাবে [1.2, 3.1] প্রাপ্ত হয়।
prashanth

5
এম্বেডিং ভেক্টরগুলির সূচকগুলির সাথে সম্পর্কিত টেবিলের সামগ্রীগুলি (যেমন, এম্বেডিং স্তরের ওজন) এলোমেলোভাবে শুরু করা হয় এবং তারপরে প্রশিক্ষণ অ্যালগরিদম (যেমন গ্রেডিয়েন্ট বংশোদ্ভূত) দ্বারা অনুকূলিত হয়।
ড্যানিয়েল লোপেজ

3
ধন্যবাদ। আমি এখনও কিছুটা অস্পষ্ট যে অপ্টিমাইজারটি অপ্টিমাইজারের বিরুদ্ধে কী করবে? পছন্দ করুন, "সঠিক উত্তর" কী এটি এটি কোনও ক্ষতির কার্য গণনা করতে দেয়? অথবা অন্যভাবে বলেছেন, এটি ফরোয়ার্ড এবং পশ্চাদপদ পাসের জন্য কী করছে?
সর্বশেষে

2
সুতরাং ... এম্বেডিং মূলত সামগ্রিক আর্কিটেকচারের কেবল একটি সাবনেটওয়ার্ক যা কোনও এক-হট এনকোডড ইনপুটকে কম ইনপুটগুলিতে কমিয়ে দেয়, আফিকা
মাইক ক্যাম্পবেল

1
এম্বেডিং স্তরটি যেহেতু প্রশিক্ষণযোগ্য, তাই প্রশিক্ষণ সংস্থায় অনুপস্থিত মানগুলির প্রতি এটি কতটা সংবেদনশীল? ধরা যাক, ট্রেনিং সেটে আমি দশটি শব্দ পেয়েছি এবং পরীক্ষায় আরও পাঁচটি শব্দ পেয়েছি - আমার শব্দভান্ডারটির দৈর্ঘ্য 15 ... তবে প্রশিক্ষণ চলাকালীন স্তরটি সেই পাঁচটি 'পরীক্ষার' শব্দ দ্বারা কখনই সক্রিয় হয় না। আপনি কি এই পরিস্থিতিটি ব্যাখ্যা করতে পারেন?
মিকালাই

6

আমারও একই প্রশ্ন ছিল এবং বেশ কয়েকটি পোস্ট এবং উপকরণ পড়ার পরে আমি মনে করি যে এম্বেডিং স্তরের ভূমিকাটি কী।

আমি মনে করি এই পোস্টটি বুঝতে সহায়তা করে, তবে, আমি সত্যিই ড্যানিয়েলের উত্তর হজম করার জন্য সুবিধাজনক পাই। তবে আমি এর পিছনে ধারণাটি মূলত এম্বেডিং শব্দগুলি বুঝতে পেরেছিলাম ।

আমি বিশ্বাস করি যে এম্বেডিং স্তরগুলি এক-হট এনকোডিং ইনপুটকে কম ইনপুট হ্রাস করে say সমস্ত ওয়ান-হেক্টর ভেক্টর একটি দ্বিমাত্রিক ডেটা হওয়ার পরে এবং এটি সত্যই আমাদের ক্ষেত্রে 2 মাত্রায় রূপান্তরিত হয়েছে। বলা ভাল

এম্বেডিং স্তরটি অন্য মাত্রায় ইনপুটগুলির একটি সম্পর্ক নিয়ে আসে

এটি 2 মাত্রায় বা তার চেয়েও উচ্চতর হোক।

অধ্যক্ষ উপাদান উপাদান বিশ্লেষণে শব্দ এম্বেড করার মধ্যে আমি একটি খুব আকর্ষণীয় মিল খুঁজে পাই। নামটি জটিল মনে হলেও ধারণাটি সোজা for পিসিএ যা করে তা হ'ল কিছু সাধারণ নিয়ম (তথাকথিত নীতি উপাদান) এর উপর ভিত্তি করে ডেটাগুলির একটি সেট নির্ধারণ করা। সুতরাং এটি একটি ডেটা থাকার মতো এবং আপনি এটি বর্ণনা করতে চান তবে কেবল 2 টি উপাদান ব্যবহার করছেন। যা এই অর্থে শব্দ এম্বেডিংয়ের সাথে খুব মিল। তারা উভয়ই বিভিন্ন প্রসঙ্গে একই কাজ করে job আপনি এখানে আরও জানতে পারেন । আমি আশা করি সম্ভবত পিসিএ বোঝা উপমা মাধ্যমে স্তর এমবেডিং বুঝতে সাহায্য করে।

মোড়ানোর জন্য, পোস্টটির মূল প্রশ্নের উত্তর যে " এটি কীভাবে মান গণনা করে? " হবে:

  • মূলত, আমাদের নিউরাল নেটওয়ার্ক ইনপুটগুলির (আমাদের বাক্যগুলি) অন্তর্নিহিত কাঠামো ক্যাপচার করে এবং আমাদের শব্দভাণ্ডারে শব্দের মধ্যে সম্পর্কটিকে উচ্চতর মাত্রায় পরিণত করে (আসুন 2 বলুন) অপ্টিমাইজেশনের মাধ্যমে।
  • গভীর বোঝা বলবে যে প্রতিটি শব্দটির ফ্রিকোয়েন্সি আমাদের শব্দভাণ্ডারের প্রভাবগুলি থেকে অন্য শব্দের সাথে উপস্থিত হয় (খুব নির্বোধ পদ্ধতির মধ্যে আমরা এটি হাতে হাতে গণনা করতে পারি)
  • উল্লিখিত ফ্রিকোয়েন্সি এনএন ক্যাপচার করতে পারে এমন অনেকগুলি অন্তর্নিহিত কাঠামোর মধ্যে একটি হতে পারে
  • এম্বেডিং শব্দটি ব্যাখ্যা করে আপনি ইউটিউব লিঙ্কে অন্তর্দৃষ্টি খুঁজে পেতে পারেন

7
চমৎকার দৃষ্টিকোণ। যাইহোক, আমি মনে করি এটি লক্ষ্য করার মতো যে যেমন শব্দ 2vec এর মতো শব্দ-এম্বেডিং কৌশলগুলি ফলস্বরূপ এম্বেডিংয়ের শব্দের পুরো অর্থ ধরার চেষ্টা করার সময়, তদারকি করা নেটওয়ার্কের এম্বেডিং স্তরটি সম্ভবত শব্দার্থ-সমৃদ্ধ এবং সাধারণ প্রতিনিধিত্ব শিখতে পারে না। উদাহরণস্বরূপ, যদি আপনার নেটওয়ার্কটি অনুভূতির শ্রেণিবদ্ধকরণ করতে প্রশিক্ষণপ্রাপ্ত হয় তবে এটি সম্ভবত তাদের "সংবেদনশীল" লোড অনুযায়ী এম্বেডিংয়ে কেবল গোষ্ঠী / ক্লাস্টার শব্দের সাথে যুক্ত হবে। তবুও, আমার অভিজ্ঞতার ভিত্তিতে এটি প্রায়শই একটি বড় কর্পাসে ওয়ার্ড 2vec দ্বারা শিখে নেওয়া ওজন সহ আপনার এম্বেডিং স্তরটি শুরু করতে কার্যকর হয়।
ড্যানিয়েল লোপেজ

2
এক-গরম ভেক্টর একটি মাত্রিক ডেটা নয়। এর মাত্রাটি শব্দভান্ডারের আকার।
বিনু জসিম

2
@ বিনুজাসিম আপনি ঠিক বলেছেন এক গরম ভেক্টর একটি শব্দভান্ডার প্রতিনিধিত্বমূলক একটি এক মাত্রিক ডেটা নেই। তবে এটি যে তথ্য উপস্থাপন করে তা প্রকৃতপক্ষে একটি মাত্রিক এবং শব্দভান্ডারের প্রতিটি সত্তা এক-মাত্রিক ডেটা। এটি সত্য যে আমাদের কাছে এন * ডাব্লু (এন = ভোকাবুলারি আকার, ডাব্লু = বিট সংখ্যা) উপাদান রয়েছে তবে প্রতিটি বাইনারি মান একটি ভেক্টরকে প্রতিনিধিত্ব করে যা আবার এক-মাত্রিক ইনপুট।
নভিন শাহরোদী

@ নভিনশাহরোদী উজ্জ্বল, ব্যাখ্যাটির জন্য ধন্যবাদ।
বেনিয়ামিন জাফারি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.