এমবেডিং: শ্রেণীবদ্ধ ইনপুট ডেটা

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

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

আমাদের সিনেমা সুপারিশ সমস্যার জন্য একটি নমুনা ইনপুট.

চিত্র 3. আমাদের চলচ্চিত্র সুপারিশ সমস্যার জন্য ডেটা।

চিত্র 3-এ ম্যাট্রিক্সের প্রতিটি সারি একটি ব্যবহারকারীর মুভি দেখার ইতিহাস ক্যাপচার করার একটি উদাহরণ, এবং এটি একটি স্পার্স টেনসর হিসাবে উপস্থাপন করা হয়েছে কারণ প্রতিটি ব্যবহারকারী শুধুমাত্র সমস্ত সম্ভাব্য চলচ্চিত্রের একটি ছোট অংশ দেখেন। শেষ সারিটি মুভি আইকনগুলির উপরে দেখানো শব্দভাণ্ডার সূচকগুলি ব্যবহার করে স্পার্স টেনসর [1, 3, 999999] এর সাথে মিলে যায়।

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

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

সবচেয়ে সহজ উপায় হল আপনার শব্দভান্ডারের প্রতিটি শব্দের জন্য একটি নোড সহ একটি বিশাল ইনপুট স্তর সংজ্ঞায়িত করা, অথবা আপনার ডেটাতে উপস্থিত প্রতিটি শব্দের জন্য অন্তত একটি নোড। যদি আপনার ডেটাতে 500,000 অনন্য শব্দ উপস্থিত হয়, আপনি 500,000 ভেক্টর দৈর্ঘ্য সহ একটি শব্দ উপস্থাপন করতে পারেন এবং ভেক্টরের একটি স্লটে প্রতিটি শব্দ বরাদ্দ করতে পারেন।

আপনি যদি সূচী 1247-এ "ঘোড়া" বরাদ্দ করেন, তাহলে আপনার নেটওয়ার্কে "ঘোড়া" খাওয়ানোর জন্য আপনি 1247 তম ইনপুট নোডে একটি 1 এবং বাকি সমস্তটিতে 0s অনুলিপি করতে পারেন। এই ধরণের উপস্থাপনাকে এক-হট এনকোডিং বলা হয়, কারণ শুধুমাত্র একটি সূচকের মান শূন্য নয়।

আরো সাধারণত আপনার ভেক্টর টেক্সট একটি বৃহত্তর খণ্ড শব্দ গণনা থাকতে পারে. এটি "শব্দের ব্যাগ" উপস্থাপনা হিসাবে পরিচিত। একটি ব্যাগ-অফ-শব্দ ভেক্টরে, 500,000 নোডের মধ্যে কয়েকটির মান শূন্য নয়।

কিন্তু যদিও আপনি অ-শূন্য মানগুলি নির্ধারণ করেন, এক-নোড-প্রতি-শব্দে আপনাকে খুব স্পার্স ইনপুট ভেক্টর দেয় - তুলনামূলকভাবে কয়েকটি অ-শূন্য মান সহ খুব বড় ভেক্টর। স্পার্স উপস্থাপনাগুলির কয়েকটি সমস্যা রয়েছে যা একটি মডেলের পক্ষে কার্যকরভাবে শেখা কঠিন করে তুলতে পারে।

নেটওয়ার্কের আকার

বিশাল ইনপুট ভেক্টর মানে একটি নিউরাল নেটওয়ার্কের জন্য অতি-বিশাল সংখ্যক ওজন। যদি আপনার শব্দভান্ডারে M শব্দ থাকে এবং ইনপুটের উপরে নেটওয়ার্কের প্রথম স্তরে N নোড থাকে, তাহলে সেই স্তরের জন্য প্রশিক্ষণের জন্য আপনার কাছে MxN ওজন আছে। বিপুল সংখ্যক ওজন আরও সমস্যা সৃষ্টি করে:

  • ডেটার পরিমাণ । আপনার মডেলের ওজন যত বেশি, কার্যকরভাবে প্রশিক্ষণের জন্য তত বেশি ডেটা প্রয়োজন।

  • গণনার পরিমাণ । যত বেশি ওজন, মডেলটি প্রশিক্ষণ এবং ব্যবহার করার জন্য তত বেশি গণনার প্রয়োজন। আপনার হার্ডওয়্যারের ক্ষমতা অতিক্রম করা সহজ।

ভেক্টরের মধ্যে অর্থপূর্ণ সম্পর্কের অভাব

আপনি যদি আরজিবি চ্যানেলের পিক্সেল মানগুলিকে একটি ইমেজ ক্লাসিফায়ারে ফিড করেন, তাহলে "ক্লোজ" মানগুলি সম্পর্কে কথা বলা বোধগম্য। লাল নীল খাঁটি নীলের কাছাকাছি, শব্দার্থগতভাবে এবং ভেক্টরের মধ্যে জ্যামিতিক দূরত্বের দিক থেকে। কিন্তু "ঘোড়া"-এর জন্য সূচক 1247-এ 1 সহ একটি ভেক্টর "টেলিভিশন"-এর জন্য সূচক 238-এর জন্য 1-এর ভেক্টরের চেয়ে "অ্যান্টেলোপ"-এর জন্য 50,430 সূচক 50,430-এ 1 সহ ভেক্টরের কাছাকাছি নয়।

সমাধান: এম্বেডিং

এই সমস্যার সমাধান হল এমবেডিং ব্যবহার করা, যা বড় স্পার্স ভেক্টরকে একটি নিম্ন-মাত্রিক স্থানে অনুবাদ করে যা শব্দার্থগত সম্পর্ক রক্ষা করে। আমরা এই মডিউলের নিম্নলিখিত বিভাগগুলিতে স্বজ্ঞাত, ধারণাগত এবং প্রোগ্রামগতভাবে এমবেডিংগুলি অন্বেষণ করব।