وبلاگ

یادگیری عمیق برای پردازش زبان طبیعی (NLP) — با استفاده از RNN و CNN

مقالات هوش مصنوعی

یادگیری عمیق برای پردازش زبان طبیعی (NLP) — با استفاده از RNN و CNN

شبکه های عصبی برای پردازش زبان طبیعی (NLP)

آیا جالب نیست اگر یک کامپیوتر بتواند احساسات واقعی انسانی را در پشت متون طعنه آمیز که گاهی حتی می تواند برتر از انسان های واقعی باشد درک کند؟

sarcasm.png

یا اینکه اگر کامپیوترها به زبان انسان به گونه ای عالی آشنایی پیدا کنند که بتوانند احتمال رخداد هر جمله تصادفی را به شما بگویند؟

یا شاید بتوانند کدهای کاملاً جعلی از هسته لینوکس ایجاد کنند که به قدری معتبر به نظر برسند که ترسناک هستند (خوب، مگر اینکه خودتان یک برنامه نویس هستید؟)

اگر کامپیوترها بتوانند به طور بی عیب و نقص انگلیسی را به فرانسوی یا بیش از 100 زبان دیگر در سراسر جهان ترجمه کنند چه می شد؟

یا تصویری را “ببینند” و شرح موارد موجود در عکس را بدهند؟

1.png

خب، اگر در دهه گذشته به دنبال یک برنامه کامپیوتری جذاب بودید که بتواند این کارها را انجام دهد، باید بگویم که شانس شما خوب نبود. در واقع، به سال ۲۰۱۲ یا قبل از آن بروید و خواهید دید که همه این‌ها فقط در داستان‌های علمی تخیلی وجود دارند.

اما به سرعت به امروز، این چیزها نه تنها امکان پذیر است، بلکه در زندگی روزمره ما گنجانده شده است. شرکت‌های رسانه‌های اجتماعی به طور فعال از تجزیه و تحلیل احساسات برای شناسایی و مهار رفتار بد/گفتار بد در پلت‌فرم‌های خود استفاده می‌کنند، Google Translate می‌تواند بین ۱۰۰ زبان ترجمه کند، و چت‌بات‌ها در نرم‌افزار چت خدمات مشتری زنده در حال افزایش هستند.

پردازش زبان طبیعی NLP (Natural Language Processing)

تمامی موارد فوق در حوزه پردازش زبان طبیعی (NLP) قرار دارند. محرک اصلی پشت این پدیده علمی-تخیلی که به واقعیت تبدیل شده است، پیشرفت تکنیک‌های یادگیری عمیق است، به ویژه شبکه‌های عصبی بازگشتی (RNN) و شبکه‌های عصبی پیچشی (CNN).

بیایید به چندین وظیفه از وظایف پردازش زبان طبیعی نگاه کنیم و درک کنیم چگونه یادگیری عمیق می‌تواند به انسان‌ها در انجام آن‌ها کمک کند.

  • مدل‌سازی زبان:
    هدف مدل های زبان این است که خلاصه تاریخچه متن مشاهده شده است نمایش دهند تا بتوانند کلمه بعدی را پیش‌بینی کنند. به طور ساده، به عبارت ساده، این وظیفه پیش بینی کلمه بعدی در دنباله است.
2.png

توجه کنید که یک مدل زبان برای پیش‌بینی، باید از کلماتی که تاکنون در توالی مشاهده کرده است استفاده کند. هر چه توالی کلماتی که مدل می‌تواند در هنگام پیش‌بینی استفاده کند بیشتر باشد، بهتر در انجام این وظیفه عمل خواهد کرد.

برای مثال:
اگر مدل فقط از 2 کلمه آخر « opened their »  برای پیش بینی استفاده کند، احتمال کلمه بعدی بسیار بیشتر از 3 کلمه آخر students opened their خواهد بود. از این رو، پیش بینی در مورد اول چندان دقیق نخواهد بود.

بنابراین، یک مدل خوب آنچه را که تاکنون خوانده است، «به یاد خواهد آورد».

و این چیزی است که شبکه های عصبی بازگشتی در آن بسیار خوب هستند. به‌ویژه، نسخه‌های پیشرفته‌تر به نام‌های GRU (Gated Recurrent Unit) و LSTM (Long Short-Term Memory) با داشتن واحدهای «حافظه» تعبیه‌شده در آن‌ها، نتایج کاملاً قابل‌توجهی را ارائه می‌دهند.

یک اثر جانبی جالب از مدل‌سازی زبان، دستیابی به یک مدل تولیدی است که می‌توانیم از آن برای تولید هر نوع توالی استفاده کنیم.

تولید متن شکسپیر/کد منبع لینوکس(!)/موسیقی جاز(!!)/سطوح سوپر ماریو(!!!)

تمامی آن پست‌های ویروسی توییتری که به این صورت هستند:

همگی با استفاده از شبکه عصبی بازگشتی امکان پذیر است!

“من یک هوش مصنوعی را با خواندن تمامی کتاب‌ها و داستان‌های نوشته شکسپیر آموزش دادم و سپس آن را به نوشتن داستانی شبیه به شکسپیر ترغیب کردم. اینجا صفحه اول آن است…”

فرض کنید می‌خواهید یک داستان شبیه به شکسپیر ایجاد کنید. شما باید یک شبکه عصبی بازگشتی را بر روی مجموعه داده‌ای از داستان‌های شکسپیر آموزش دهید و به آن یاد بدهید چگونه مدل سازی کند. در این روش، آن یاد خواهد گرفت که چگونه کلمه بعدی در داستان شکسپیر را پیش بینی کند (برای روشن شدن، باید گفت که این کار به صورت 100٪ دقیق نخواهد بود، اما بسیار رضایت‌بخش خواهد بود). حال ما می‌توانیم آن را به پیش بینی کلمه بعدی و بعدی و بعدی … تقویت کنیم.

کلمات تا زمانی که ماسترپیس جدید “شکسپیر” را در دست نداریم، همچنان اضافه می شوند!

چه چیز دیگر؟

شما می‌توانید نه تنها متن، بلکه هر نوع دنباله‌ای را با استفاده از شبکه عصبی بازگشتی مشابه مدل سازی کنید. به عنوان مثال:

از کد منبع موجود در مخزن لینوکس در Github برای آموزش یک شبکه عصبی بازگشتی و تولید کد منبع لینوکس جعلی مانند توابع استفاده کنید!
سطح سوپر ماریو را در فایل‌های متنی از قبل پردازش کنید، مدل را روی آن‌ها آموزش داده و سطح سوپر ماریو جدید خود را ایجاد کنید، که قبلاً هرگز دیده نشده‌اند!

لطفاً توجه داشته باشید که مثال‌های فوق از شبکه عصبی بازگشتی سطح کاراکتر استفاده می‌شود. در اینجا، مدل به جای پیش بینی کلمات در دنباله، مدل کاراکتر بعدی را پیش بینی می‌کند. این به RNN اجازه می‌دهد تا هر نوع دنباله خود را یاد بگیرد، مثلاً سطح سوپر ماریو!

تجزیه و تحلیل احساسات
ارتباط انسانی فقط شامل کلمات و معانی آن نیست. بسیار پیچیده‌تر است زیرا شامل احساسات است. انتخاب کلمات، سبک نوشتن و ساختار جمله نقش مهمی در تعیین احساسات پشت یک پیام نوشتاری دارند.

Reviews.png

رویکردهای قبلی برای تجزیه و تحلیل احساسات بر اساس توکن‌گذاری جملات نوشته شده و تلاش برای درک احساسات بر اساس قواعد دستور زبان بود. ناگفته نماند که آنها خیلی موثر نبودند.

اما امروزه، سیستم‌های تجزیه و تحلیل احساسات مبتنی بر شبکه عصبی بازگشتی توسط شرکت‌های بزرگ رسانه‌های اجتماعی برای شناسایی محتوای نامناسب در پلتفرم‌های خود استفاده می‌شوند. آن‌ها در کنار ناظران انسانی کار می کنند و به آن‌ها در حذف محتوای سمی کمک می‌کنند.

sentiment-classification.png

این معماری های دنباله به دنباله بر اساس شبکه های عصبی بازگشتی هستند.

ترجمه زبان
در طی سه سال گذشته، فناوری پشتیبانی از ترجمه ماشینی به طور کامل بازنویسی شده است. با استفاده از یک فناوری به نام یادگیری دنباله به دنباله، برنامه‌نویسان اکنون می‌توانند برخی از بهترین سیستم‌های ترجمه در جهان را ایجاد کنند.

این معماری‌های دنباله به دنباله بر اساس شبکه‌های عصبی بازگشتی استوار هستند.

3.png

فرض کنید می‌خواهیم بین زبان انگلیسی و فرانسوی ترجمه کنیم. در اینجا، یک شبکه عصبی بازگشتی (به عنوان کدگذار) مسئول گرفتن جمله انگلیسی و تبدیل آن به بردار ویژگی است که شبکه عصبی دوم (به عنوان کدگشا) آن را به عنوان ورودی دریافت کرده و ترجمه فرانسوی متناظر را خروجی می‌دهد.

این معماری‌های دنباله به دنباله نه تنها در ترجمه زبان مفید هستند، بلکه برای ساخت ربات‌های گفتگوی هوش مصنوعی نیز استفاده می‌شوند! ایده در اینجا بسیار ساده است:

بجای آموزش کدگذار و کدگشا در دو زبان، آن‌ها را بر روی دو طرف گفتگو آموزش می‌دهیم. بنابراین، شاید کدگذار پیام‌های درخواست کاربران را نشان دهد در حالی که کدگشا پاسخ‌های متناظر تیم پشتیبانی را نشان می‌دهد. بنابراین، سامانه یاد می‌گیرد که بین درخواست‌های کاربران و پاسخ‌های تیم پشتیبانی “ترجمه” کند.

استفاده از شبکه‌های کانولوشنی (CNN) برای وظایف پردازش زبان طبیعی (NLP)
سنتی‌ترین فکر ما این است که یک شبکه عصبی کانولوشنی (CNN) یک شبکه عصبی است که پردازش شبکه‌ای از مقادیر مانند یک تصویر است و یک شبکه عصبی بازگشتی (RNN) یک شبکه عصبی است که برای پردازش یک دنباله از مقادیر است.

اما اخیراً ما شروع به استفاده از شبکه‌های کانولوشنی (CNN) برای مسائل در حوزه پردازش زبان طبیعی کرده‌ایم و نتایج جالبی به دست آورده‌ایم.

وظایف طبقه‌بندی
از آنجا که شبکه‌های کانولوشنی، برخلاف شبکه‌های بازگشتی، تنها بردارهای با اندازه ثابت را خروجی می‌دهند، به نظر می‌رسد که برای آن‌ها جایگاه مناسب در وظایف طبقه‌بندی مانند تجزیه و تحلیل احساسات، تشخیص اسپم یا دسته‌بندی موضوع طبیعی است.

در وظایف بینایی ماشین، فیلترهای استفاده شده در شبکه‌های کانولوشنی بر روی بخش‌های تصویر شناور می‌شوند در حالی که در وظایف پردازش زبان طبیعی، فیلترها بر روی ماتریس جملات، چند کلمه به طور همزمان، شناور می‌شوند.

how-the-cnn-works.png

لایه اول 6 فیلتر را نشان می دهد: 2 فیلتر در یک زمان از 2 کلمه عبور می کنند، 2 فیلتر دیگر در هر بار از روی 3 کلمه عبور می کنند و 2 فیلتر آخر روی 4 کلمه در یک زمان عبور می کنند.

فیلترهای یادگیری شده در لایه اول، ویژگی‌هایی را که به نسبت n-gram ها شبیه هستند، به صورتی کوچکتر نمایش می‌دهند.

یک دلیل بزرگ برای استفاده از شبکه‌های کانولوشنی این است که آن‌ها بسیار سریع هستند. کانولوشن‌ها بخش مهمی از گرافیک کامپیوتری هستند و در سطح سخت‌افزار در GPU پیاده‌سازی شده‌اند.

شما باید این مقاله را بررسی کنید تا خلاصه‌ای از روش‌های مختلف استفاده از شبکه‌های کانولوشنی برای وظایف پردازش زبان طبیعی را دریافت کنید.

تولید توضیحات تصویر
آیا به یاد دارید که چگونه در مدل های دنباله به دنباله، رمزگذار یک نمایش برداری از داده های ورودی ایجاد می کند و رمزگشا آن بردار را برای تولید یک دنباله جدید می گیرد؟

حال، اگر RNN را در آن رمزگذار با یک CNN جایگزین کنیم، چه اتفاقی می‌افتد؟

این به ما مدلی می دهد که می تواند یک تصویر بگیرد و یک دنباله بر اساس آن تصویر ایجاد کند!

NIC.png

سپس ما می‌توانیم یک تصویر را به مدل خود ارسال کرده و اجازه دهیم که یک جمله را که تصویر را توصیف می‌کند، خروجی دهد.

توصیف خودکار محتوای یک تصویر یک مسئله اساسی در هوش مصنوعی است که ارتباطی بین بینایی ماشین و پردازش زبان طبیعی برقرار می‌کند. توانایی توصیف خودکار محتوای یک تصویر با استفاده از جملات انگلیسی مناسب، یک وظیفه بسیار چالش برانگیز است، اما می‌تواند تأثیر بسیار بزرگی داشته باشد. به عنوان مثال، می‌تواند به افراد کم بینا کمک کند تا محتوای تصاویر موجود در وب را بهتر درک کنند.

selection-of-evaluation-results.png

تدوین و ترجمه: لیلا قدیری کارشناس هوش مصنوعی و آموزش الکترونیک

منبع: https://www.exxactcorp.com/blog/Deep-Learning/deep-learning-for-natural-language-processing-nlp-using-rnns-cnns?gclid=CjwKCAjw15eqBhBZEiwAbDomEn9DMoSAGKUlAr6ESX8W3Oy_AU6Z0WUpDoZhPUvsv_jhIYJ3l-A24RoCJx8QAvD_BwE

دیدگاه خود را اینجا قرار دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *