یک مقاله ساده در مورد تجزیه و تحلیل احساسات با یادگیری عمیق و کراس

  • 2021-02-5

یاد بگیرید چگونه به راحتی ساخت, قطار و اعتبار یک شبکه عصبی راجعه

راحت باش, خواندن چند دقیقه طول می کشد اما امیدوارم در کل مقاله با من همراه باشید. من می خواهم شما را از طریق یک کار اساسی هدایت کنم که شما به عنوان دانشمند داده/مهندس یادگیری ماشین باید بدانید که چگونه انجام دهید زیرا در برخی از مراحل حرفه ای شما باید این کار را انجام دهید. در متن این مقاله, من فرض شما یک درک اساسی از چه من قصد دارم به صحبت در سطرهای بعدی. من انباشته لایه از مفاهیم به عنوان من به جلو حرکت, نگه داشتن یک زبان سطح بسیار پایین-نگران نباشید اگر شما سقوط کمی بین خطوط از دست داده, بعد من احتمالا روشن شک و تردید خود را. ایده اصلی این است که شما بفهمید چه چیزی را توضیح خواهم داد. که می شود گفت, اجازه دهید دست در (جهت مشاهده فرم خرید, هر گونه اطلاعات را از دست ندهید و دانلود کل پروژه از مخزن من.)

من با تعریف اولین اصطلاح غیر معمول در عنوان شروع می کنم: تجزیه و تحلیل احساسات یک اصطلاح بسیار مکرر در طبقه بندی متن است و اساسا برای استفاده از پردازش زبان طبیعی (اغلب به سادگی به عنوان ان نامیده می شود)+ یادگیری ماشین برای تفسیر و طبقه بندی احساسات در اطلاعات متن است. وظیفه تعیین مثبت یا منفی بودن بررسی محصول را تصور کنید; شما می توانید این کار را خودتان فقط با خواندن انجام دهید, درست? اما چه اتفاقی می افتد زمانی که شرکت شما برای کار به فروش می رساند 2ک محصولات هر روز ? شما تظاهر به خواندن تمام بررسی و دستی طبقه بندی? بیایید صادق باشیم, کار خود را خواهد بود که بدترین. جایی است که تجزیه و تحلیل احساسات وارد می شود و زندگی و شغل شما را ساده تر می کند.

بیایید وارد موضوع شویم

روش های مختلفی برای پیاده سازی تجزیه و تحلیل احساسات وجود دارد و هر دانشمند داده روش مورد علاقه خود را دارد, من شما را از طریق یک روش بسیار ساده راهنمایی می کنم تا بتوانید درک کنید که این شامل چه مواردی است, اما برخی دیگر را نیز به شما پیشنهاد می کنم که می توانید در مورد این روش تحقیق کنید. بیایید اول چیزها را اول قرار دهیم: اگر یادگیری ماشین را نمی شناسید باید بدانید که همه الگوریتم ها فقط قادر به درک و پردازش داده های عددی هستند (به خصوص داده های ممیز شناور) بنابراین نمی توانید با متن تغذیه کنید و منتظر بمانید تا مشکلات شما حل شود; بجای, شما باید چندین تغییر در داده های خود ایجاد کنید تا زمانی که به شکل عددی نماینده برسد. رایج ترین و اساسی ترین مراحل عبارتند از:

  • نشانیهای وب و نشانیهای ایمیل را از هر نمونه حذف کنید — زیرا ارزش معناداری اضافه نمیکنند.
  • حذف نشانه های نقطه گذاری — در غیر این صورت مدل خود را نمی خواهد درک کنند که "خوب!"و" خوب " در واقع به همین معنی است.
  • حروف کوچک تمام متن-زیرا شما می خواهید متن ورودی را تا حد ممکن عمومی کنید و از این امر خودداری کنید مثلا "خوب" که در ابتدای عبارت است متفاوت از "خوب" در نمونه دیگری درک شود.
  • کلمات توقف را حذف کنید-زیرا فقط نویز اضافه می کنند و داده ها را معنادارتر نمی کنند. جهت مشاهده فرم خرید, توقف کلمات به کلمات رایج ترین در یک زبان مراجعه, مانند "من", "دارند", "هستند" و غیره. من امیدوارم که شما نقطه دریافت کنید چرا که یک لیست رسمی توقف کلمات وجود ندارد خارج وجود دارد.
  • Stemming/Lemmatizing: This step is optional, but for most of data scientist considered as crucial. I’ll show you that it’s not THAT relevant to achieve good results. Stemming and lemmatizing are very similar tasks, both look forward to extract the root words from every word of a sentence of the corpus data. Lemmatizing generally returns valid words (that exist) while stemming techniques return (most of the times) shorten words, that’s why lemmatizing is used more in real world implementations. This is how lemmatizers vs. stemmers work: suppose you want to find the root word of ‘caring’: ‘Caring’ -> Lemmatization -> ‘Care’. In the other hand: ‘Caring’ -> Stemming ->'ماشین'; شما نقطه دریافت? شما می توانید تحقیق در مورد هر دو و بدیهی است که اگر کسب و کار نیاز به پیاده سازی هر.
  • مجموعه داده (متن) را به سنسورهای عددی تبدیل کنید — معمولا به عنوان برداری نامیده می شود . اگر برخی از خطوط بالا را به خاطر بیاورید توضیح دادم که مانند سایر شبکه های عصبی مدل های یادگیری عمیق به عنوان متن خام ورودی عمل نمی کنند: فقط با سنسورهای عددی کار می کنند و به همین دلیل این مرحله قابل مذاکره نیست. راه های متعدد برای انجام این کار وجود دارد; مثلا, اگر شما در حال رفتن به استفاده از یک مدل کلاسیک میلی لیتر (نه دسی لیتر) و سپس شما قطعا باید با شمارش بروید, بردار تفدف و یا فقط رویکرد اساسی اما نه چندان خوب: کیسه از کلمات. این به شما بستگی دارد. با این حال, اگر شما در حال رفتن به پیاده سازی یادگیری عمیق شما ممکن است بدانید که بهترین راه این است که به نوبه خود داده های متنی خود را (که می تواند به عنوان دنباله ای از کلمه یا توالی از شخصیت های درک) به بردارهای ممیز شناور کم بعدی-نگران نباشید, من این را در یک بیت توضیح.

عملکرد بسیار ساده تمیز کردن متن پایتون به این شکل است (این یک روش بسیار ساده است که می توانید بهترین کار را برای هدف خود انجام دهید-کتابخانه های بسیار کاملی مانند جنسیم یا ان تی تی وجود دارد):

اکنون یک روش بسیار ساده برای حذف کلمات تکراری از مجموعه داده خود است که این ایده را دنبال می کند که کوتاه ترین و طولانی ترین کلمات معمولا بی فایده هستند:

در نهایت یک تابع برای پاک کردن تمام جملات (این به این دلیل است که من از جاسازی کلمه استفاده می کنم و نه از این روش توکن سازی قدیمی):

برای اجرای همه چیز را در جهت سمت راست, شما فقط نیاز به اجرای این:

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

اگر شما می خواهید برای رفتن حتی فراتر از, سپس ناشی و یا مسیرهای لیماتیزه, شما نتایج بسیار بهتری دریافت کنید. در این خاص چگونه به این راه فقط شما که کاملا ممکن است برای دستیابی به نتایج بزرگ پرش که مرحله (اگر شما در حال ساخت مدل خود را در زمینه کسب و کار سپس شما 100% تعهد به انجام این کار می شود را حفظ خواهد کرد!)

از جملات گرفته تا تعبیه کلمات

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

جاسازی کلمات (یا گاهی اوقات بردارهای کلمه نامیده می شوند) از داده ها یاد گرفته می شوند و اساسا بردارهای نقطه شناور کم بعدی هستند (بردارهای متراکم برخلاف بردارهای پراکنده حاصل از فرایندهایی مانند رمزگذاری یک گرم) که اطلاعات را در چند بعد بسته بندی می کنند. چرا این روش استفاده می کنید و هر دیگر متفاوت و ساده تر? زیرا مدل های یادگیری عمیق با بردارهای متراکم راحت تر از مدل های پراکنده همگرا می شوند. باز هم همیشه به ماهیت مجموعه داده و نیاز تجاری بستگی دارد.

دو روش برای دستیابی به تعبیه کلمات وجود دارد:

  • از یک پشته تعبیه شده از پیش تعیین شده در بالای مدل خود استفاده کنید همانطور که از یک لایه پیش ساخته (یا گروهی از لایه ها) استفاده می کنید — یک رویکرد بسیار نادر است.
  • تعبیه کلمات را از ابتدا بیاموزید. برای رسیدن به این هدف شما با بردارهای کلمه تصادفی شروع می کنید و به تدریج موارد معنی دار را یاد می گیرید همانطور که یک ان وزن خود را یاد می گیرد. این گزینه ای است که ما استفاده خواهیم کرد و در واقع برای یادگیری یک فضای تعبیه جدید با هر کار جدید منطقی است. خوشبختانه این مرحله با تنسورفلو یا کراس بسیار ساده است و شما می توانید تعبیه کلمه را دقیقا مانند یک لایه دیگر در پشته خود پیاده سازی کنید.

قبل از حرکت به جلو, ما نیاز به یک گام قبلی. ما باید مجموعه متن خود را به مجموعه های عددی 2 بعدی تبدیل کنیم:

خروجی شما می خواهم این نگاه:

مرحله قبل به چه معناست? بیایید تعریف از اسناد رسمی کراس, شما بهتر نقطه را دریافت کنید:

این تابع لیستی (از نمونه های عددی طول) از توالی ها (لیست اعداد صحیح) را به مجموعه ای از شکل های 2 بعدی تبدیل می کند (نمونه های عددی, زمان های عددی). عدد_زمان ها یا استدلال ماکسلن در صورت وجود یا طول طولانی ترین دنباله در لیست است.

توالی هایی که کوتاهتر از زمان های عددی هستند با ارزش پر می شوند تا زمانی که طولانی شوند.

توالی های طولانی تر از زمان های عددی کوتاه می شوند تا متناسب با طول مورد نظر باشند

لایه تعبیه شده

بسیار مهم است که به خاطر داشته باشید که مهم نیست که از تنسورفلو یا هر نوع رابط کاربری دیگر مانند کراس استفاده کنید , شما باید در پایان تمرین خود به همان نتیجه برسید. در این فرصت ما از کراس به دلایل واضح استفاده خواهیم کرد: پیاده سازی بسیار ساده است. به این ترتیب یک لایه تعبیه ایجاد می کنید:

لایه فوق طول می کشد 2 بعدی تانسورهای عدد صحیح شکل (نمونه ها, توالی_طول) و حداقل دو استدلال: تعداد نشانه های ممکن و ابعاد تعبیه شده (به ترتیب در اینجا 1000 و 64). برای اینکه بیشتر مجازی, فقط تصور کنید لایه تعبیه یک فرهنگ لغت است که لینک شاخص عدد صحیح به بردارهای متراکم است. در نهایت یک تانسور نقطه شناور 3 بعدی شکل (نمونه ها, طول توالی, جاسازی _ بعدی) را برمی گرداند که اکنون توسط شبکه عصبی ما قابل پردازش است. اجازه دهید در مورد این موضوع صحبت, به خصوص در مورد شبکه های عصبی مکرر است که بهترین زمانی که پردازش توالی مربوط به متن مورد نیاز است.

شبکه های عصبی مکرر ساده شده اند

معمولا انواع دیگر شبکههای عصبی مانند شبکههای متصل متراکم یا شبکههای کانولوشن حافظه ندارند و این بدان معنی است که هر ورودی به طور مستقل پردازش میشود و هیچ ارتباطی با دیگر ورودیها ندارد. این مخالف چیزی است که شما به طور معمول در هنگام خواندن یک پاراگراف انجام: هنگامی که شما در حال خواندن شما در حافظه نگه دارید چه شما در سطرهای قبلی خوانده ام , درست? شما کل معنا را دارید و این دقیقا همان اصلی است که رنس اتخاذ می کند. توالیها را با تکرار در امتداد عناصر توالی و حفظ اطلاعات نسبت به چیزی که تاکنون پردازش کردهاند پردازش میکنند. صادقانه بگویم ریاضی که زیر کاپوت ان ان است موضوعی است که باید خودتان پوشش دهید تا منطق ان را بفهمید. من پیشنهاد می کنم شما را به خواندن "یادگیری تنسورفلو" توسط تام هوپ (در اینجا موجود است) که تمام مراحل را به شیوه ای بسیار ساده توضیح می دهد.

در این مقاله سه نوع حافظه بلند مدت و یک مدل حافظه بلند مدت و یک مدل دو طرفه و یک مدل بسیار نادر استفاده شده از کانو1 دی را پیاده سازی می کنم. به عنوان یک جایزه, من نشان می دهم که چگونه یک مدل ساده را پیاده سازی کنم اما صادقانه بگویم, در تولید در هر جایی مستقر نشده است زیرا بسیار ساده است.

لایههای ال اس ام

بازگشت به مثال ما این است که چگونه کد در هنگام اجرای یک مدل لایه تک لایه با لایه جاسازی مربوطه به نظر می رسد:

چند چیز به برجسته در کد بالا وجود دارد: هنگامی که اجرای یک مدل متوالی کراس, این همه در مورد انباشته لایه. لایه ها (و همچنین تمام لایه های دیگر) می توانند چندین استدلال داشته باشند اما لایه هایی که من تعریف کردم 15 است که تعداد واحدهای پنهان درون لایه است (باید یک عدد صحیح مثبت باشد و ابعاد فضای خروجی را نشان دهد) و میزان ترک تحصیل لایه. ترک تحصیل یکی از موثرترین و متداول ترین تکنیک های منظم سازی برای شبکه عصبی است و شامل خاموش کردن تصادفی واحدهای مخفی در حین تمرین است, به این ترتیب شبکه 100% به تمام نورون های خود متکی نیست و در عوض, خود را مجبور می کند تا الگوهای معنی دار تری را در داده ها پیدا کند تا معیاری را که می خواهید بهینه کنید افزایش دهد. چندین استدلال دیگر به تصویب وجود دارد, شما می توانید مستندات کامل در اینجا پیدا کنید, اما برای این مثال خاص, این تنظیمات نتایج خوبی دست یابد.

گاهی اوقات مفید است که چندین لایه مکرر را یکی پس از دیگری روی هم قرار دهید تا قدرت بازنمایی یک شبکه افزایش یابد. اگر شما می خواهید به انجام این کار و سپس شما باید برای بازگشت توالی کامل از خروجی . این یک مثال است:

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

هنگام تدوین مدل, من با نرخ یادگیری پیش فرض از بهینه ساز استفاده می کنم اما در واقع این به هر توسعه دهنده بستگی دارد. بعضیها عاشق ادام و بعضیها ادلتا و غیره هستند. در اکثر موارد باید به اندازه کافی باشد. اگر نمی دانید بهینه ساز چیست, این فقط مکانیزمی است که به طور مداوم گرادیان ضرر را محاسبه می کند و نحوه حرکت در برابر تابع ضرر را برای یافتن حداقل های جهانی خود و در نتیجه یافتن بهترین پارامترهای شبکه (هسته مدل و وزن های بایاس) تعریف می کند. به عنوان تابع از دست دادن, من با استفاده از _ متقاطع طبقه بندی (بررسی جدول) است که به طور معمول استفاده می شود زمانی که شما در حال برخورد با وظایف طبقه بندی چند کلاس. از طرفی شما در صورت نیاز به طبقه بندی باینری از متقاطع باینری استفاده می کنید.

در نهایت از ایست های بازرسی استفاده می کنم تا بهترین مدل حاصل شده در روند تمرین را ذخیره کنم. این بسیار مفید است زمانی که شما نیاز به مدل که بهترین ارضا متریک شما در حال تلاش برای بهینه سازی. سپس مدل کلاسیک.گام بردارید و منتظر بمانید تا تکرارهای تمرینی کامل شود.

این نمره اعتبار سنجی است که توسط این معماری ان ان در دوره گذشته خود کسب شده است:

بیایید این را با یک شبکه پیچیده تر مقایسه کنیم.

لایه های دو طرفه

این است که چگونه اجرای بیدرن مثال ما به نظر می رسد:

بیایید نحوه عملکرد یک لایه دو طرفه را بهتر درک کنیم. حساسیت مرتبه را به حداکثر می رساند: اساسا از دو ران تشکیل شده است که توالی ورودی را در یک جهت متفاوت پردازش می کنند تا در نهایت بازنمایی ها ادغام شوند. با این کار قادر به گرفتن الگوهای پیچیدهتر از گرفتن یک لایه رادیویی هستند. به عبارت دیگر یکی از لایه ها توالی ها را به ترتیب زمانی تفسیر می کند و لایه دوم این کار را به ترتیب ضد زمانی انجام می دهد به همین دلیل است که از رنس های دو طرفه بسیار استفاده می شود زیرا عملکرد بیشتری نسبت به رنس های معمولی دارند.

نحوه پیاده سازی پیچیده نیست بلکه فقط یک لایه در داخل لایه دیگر است. اگر شما با دقت بخوانید, من با استفاده از پارامترهای تقریبا مشابه اما در مورد دست .3 درصد بیشتر از صحت اعتبار سنجی در کل تمرین خود:

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

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

حتی فراتر رفتن-شبکه های عصبی کانولوشن 1 بعدی

من امیدوارم که شما هنوز هم با من هستید, چرا که این یکی از سریع ترین مدل های خارج وجود دارد در هنگام صحبت کردن در مورد همگرایی است — این نیازمند هزینه محاسباتی ارزان تر. من با تجربه قبلی می دانم که تمایل دارد در مجموعه داده های کوچک بسیار سریع نصب شود. در این معنا فقط پیاده سازی به شما نشان دهد که چگونه به انجام این کار در مورد علاقه خود را و همچنین شما یک مرور کلی در مورد چگونه کار می کند.

از همان اصول استفاده می کند که کانوت های کلاسیک 2 بعدی برای طبقه بندی تصویر استفاده می شود. لایه های کانولوشن تکه هایی را از سنسورهای 1 بعدی/2 بعدی استخراج می کنند (بسته به نوع کار و لایه) و همان تحولات کانولوشن را برای هر یک اعمال می کنند (گرفتن چندین نتیجه خروجی). من نمی خواهد عمیق در چنین توضیحی چون که از محدوده این مقاله, اما اگر شما می خواهید به طور کامل درک چگونه این لایه کار من به شما پیشنهاد بررسی کتاب قبلا توصیه می شود. مهمترین واقعیت این لایه ها این است که می توانند الگوها را در یک دنباله تشخیص دهند — الگویی که در یک موقعیت خاص در یک جمله یاد گرفته می شود بعدا می تواند در موقعیت دیگری یا حتی در جمله دیگری شناسایی شود.

به این ترتیب کاننت های 1 بعدی اجرا می شوند:

جایی که لایه های کنو1د وظیفه محاسبه عملیات کانولوشن را بر عهده دارند در حالی که وظیفه اصلی لایه های حداکثر 1 بعدی کاهش ابعاد هر خروجی کانولوشن است. هنگامی که عملیات کانولوشن انجام می شود پنجره حداکثر بیشترین مقدار را در داخل خود استخراج می کند و تکه هایی از حداکثر مقادیر را خروجی می دهد. این مهم است که به برجسته کردن اهمیت تنظیم در این نوع از پیکربندی, در غیر این صورت شبکه خود را الگوهای بی معنی یاد بگیرند و بیش از حد مجهز بسیار سریع — فقط اطلاعات مالی.

در مقابل چگونه مدل قبلی انجام, این متریک دست در دوره گذشته است:

و بهترین صحت اعتبارسنجی در حدود 82 درصد بود. این لباس بسیار سریع حتی زمانی که من منظم بسیار شدید اجرا کرده ام.

اعتبار سنجی بهترین مدل ما

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

از تصویر بالا می توان نتیجه گرفت: 81 درصد از رتبه های مثبت به عنوان مثبت طبقه بندی شدند و 80 درصد از رتبه های منفی به عنوان منفی و 91 درصد از رتبه های خنثی به عنوان خنثی طبقه بندی شدند. این بهترین پیش بینی نیست, اما یک پایه خوب به کار بر روی مدل های حتی بهتر. در یک سناریوی تجاری باید در ساده ترین موارد نزدیک به 95 درصد باشید.

اگر شما می خواهید برای تست چگونه بر روی یک ورودی ساخته شده توسط خودتان کار می کند, فقط محاسبه خطوط بعدی:

و خروجی خواهد بود:

افکار نهایی

خوب, ما در پایان این پست رسیده ام. من شما را تشویق می کنم که همه مدل ها را خودتان پیاده سازی کنید و روی تنظیم هایپرپارامتر تمرکز کنید که یکی از کارهایی است که بیشتر طول می کشد. هنگامی که شما یک شماره خوب رسیده ام, من شما را در اینجا ببینید به شما از طریق استقرار این مدل را راهنمایی guide.

روش های مختلفی برای انجام چنین کاری وجود دارد. شما می توانید از پلتفرم ابری گوگل استفاده کنید, مسیر لاجوردی را طی کنید, حتی راه ارزان تر هروکو, اما بیایید صادق باشیم: بسیاری از بزرگترین شرکت ها در حال اتخاذ اویس به عنوان اصلی ترین سرویس دهنده ابر عمومی خود هستند و این افراد یک پلت فرم فوق العاده برای ساخت دارند, قطار و استقرار مدل های میلی لیتر: اویس سایگمیکر ; که دارای تن از اسناد و مدارک خارج وجود دارد. من یک مقاله گام به گام توضیح داده شده در مورد چگونگی استفاده از مدل ها به راحتی ارسال خواهم کرد. من امیدوارم که شما وجود دارد را ببینید!

ثبت دیدگاه

مجموع دیدگاهها : 0در انتظار بررسی : 0انتشار یافته : ۰
قوانین ارسال دیدگاه
  • دیدگاه های ارسال شده توسط شما، پس از تایید توسط تیم مدیریت در وب منتشر خواهد شد.
  • پیام هایی که حاوی تهمت یا افترا باشد منتشر نخواهد شد.
  • پیام هایی که به غیر از زبان فارسی یا غیر مرتبط باشد منتشر نخواهد شد.