من علی شاکر هستم؛ روزنامهنگار و پژوهشگر هوش مصنوعی که میخواهم در این سلسله یادداشتها در درجۀ نخست دربارۀ اصول کاربرد هوش مصنوعی در رسانه بیشتر بدانم و بخوانم و بعد آن را در اختیار شما بگذارم.
در یادداشت شمارۀ ۶ از «قلم تا الگوریتم» به این پرداختیم که رویکرد ارتباطگرا چیست و چرا عامل تمامی تحولاتی است که اکنون در عرصۀ هوشمندسازی ماشینها میبینیم.
در ادامۀ سلسلۀ یادداشتهای آموزشی «از قلم تا الگوریتم» در بخش هفتم سعی میکنیم که منطق ریاضی و فیزیک پشت رویکرد یادگیری عمیق را با مثالی از دنیای روزنامهنگاری فهم کنیم.
هشدار: بدون خواندن بخشهای پیشین، خواندن این بخش فقط وقت تلف کردن است.
همانطور که میدانید ماشینهای هوشمند احساس ندارند، پس چهطور میتوانند به احساسهای ما واکنشهایی نشان دهند که انگار آن را درک میکنند؟ چهطور میتوانند تشخیص دهند خبری مثبت است یا منفی؟ این کار به یک ساختار فیزیکی و همچنین منطق ریاضی نیاز دارد که در این یادداشت سعی میکنم با کمک تجربۀ شغلی خویش آن را به سادهترین شکل ممکن منطق ریاضی توضیح دهم.
فرض کنید میخواهیم سیستمی طراحی کنیم که بتواند احساسات بیان شده در اخبار را تحلیل کند. بهعنوانمثال، آیا یک خبر خاص مثبت، منفی یا خنثی است؟
همانطور که پیشتر نیز توضیح دادیم، در رویکرد قدیمی، میتوانستیم فهرستی از کلمات مثبت و منفی تهیه کنیم و با جستوجوی این کلمات در متن خبر، احساس کلی آن را تخمین بزنیم. این رویکرد شفاف است، اما محدودیتهای زیادی دارد، زیرا احساس پدیدهای پیچیده است و با استفاده از کنایه یا زبان محاورهای بیان میشود. سختی و پیچیدگی این کار مجبورمان میکند رویکرد نوینی پیش بگیریم که استفاده از شبکههای عصبی عمیق است.
حالا فرض کنید مطلبی را یک روزنامهنگار کارکشته با ۳۰ سال سابقه بدهیم و بخواهیم گرایش آن را مشخص کند. این روزنامهنگار، تاکنون هزاران مطلب روزنامهنگارانه خوانده، پس بهراحتی الگوها و نشانههای خاصی را که در آن هست، میشناسد. او با تجربۀ فردی خود میتواند از انتخاب کلمات، ساختار جملهها، حتی طنز یا کنایههایی که در متن استفاده شده است، برای تشخیص احساسات استفاده کند. شبکۀ عصبی عمیق در این مثال، شبیه به همین روزنامهنگار باتجربه است. ما به این شبکه، حجم عظیمی از اخبار با برچسب احساسات میدهیم تا مطالعه کند. این شبکه، مانند روزنامهنگار با تجربه، به مرور زمان الگوهای پیچیده و ظریفی را در متن شناسایی میکند و به زبان سادهتر بگویم پس از دریافت دادههای ورودی، از آن تجربه کسب میکند. مثلاً یاد میگیرد که کلماتی خاص، بیشتر با احساسات مثبت همراه هستند، یا ساختار خاصی از جملهها معمولاً بیانگر احساس منفیاند.
البته یادمان باشد که این تشبیه را برای برای نزدیک شدن ذهن این مفاهیم استفاده میکنم وگرنه میدانیم که روزنامهنگار بر اساس دانش و تجربۀ شخصی خود داوری میکند و شبکۀ عصبی بر اساس دادههای آماری و الگوهای آماری یاد میگیرد. به عبارت دیگر، شبکۀ عصبی یک ماشین یادگیری است که با دیدن مثالهای زیاد، توانایی یادگیری و تشخیص الگوهای پیچیده را پیدا میکند.
با استفاده از شبکههای عصبی عمیق، میتوانیم رویکرد بسیار تازه و پیچیدهتری پیش بگیریم. ابتدا، کلاندادهای از اخبار با برچسب احساسات (مثبت، منفی، خنثی) جمع میکنیم. سپس، نمونهای را آموزش میدهیم. شبکۀ عصبی با یادگیری از این نمونه و سپس دادههای ارائهشده، الگوهای پیچیدهای را برای تشخیص احساسات در متن میشناسد.
به دلیل ظرفیت محدود مغز نمیتوانیم تمام آنچه را که میخوانیم در حافظۀ بلندمدت خود نگه داریم برای همین میبایست از حافظۀ کوتاهمدت خود کمک بگیریم تا هم معنی کلمات را دریابیم و هم ارتباط بین آنها را؛ یعنی ما با در نظر گرفتن کلمات پیشین، میتوانیم معنای کلی جمله و پاراگراف را درک کنیم.
شبکههای عصبی بازگشتی نیز به همین شکل عمل میکنند. سازوکاری داخلی تعبیه کردهاند که با آن میتوانند اطلاعات را از زمانهای پیشین به یاد بیاورند. این مکانیزم، که بهعنوان «حالت پنهان[۱]» شناخته میشود، به شبکه کمک میکند تا ارتباط بین کلمات را درک کند و معنای کلی متن را استخراج کند.
برای این کار از یک شبکۀ عصبی بازگشتی[۲] استفاده میکنیم. چرا؟ چون شبکههای عصبی بازگشتی برای پردازش دادههای متنی که ترتیب کلمات در آنها اهمیت دارد، بسیار مناسباند. به عبارت سادهتر، شبکۀ عصبی بازگشتی میتواند به یاد بیاورد که کلمات پیشین یک جمله چه بودند تا به این ترتیب معنای کلی جمله را بهتر درک کند.
حالا فرض کنید شبکۀ عصبی بازگشتی مانند یک انسان است در حال خواندن یک مطلب. این ماشین هم کلمات را میبیند و هم ترتیب و ارتباطشان با هم را در مییابد و حتی لحن نویسنده را هم تشخیص میدهد. اما این تشخیص به تنهایی کافی نیست. حالا باید بتوانیم ببینیم کلمات داخل متن چه پیامی را منتقل میکنند.
توابع فعالسازی: قلب تپندۀ نورونها
روزنامهنگار ما در این مثال، کلماتی مثل «شادی»، «امید»، «روشن»، «پیروزی» و… را در متن میبیند و در مییابد که این متن رویکردی مثبت دارد. از کجا به این نتیجه میرسد؟ در این حالت، تابع فعالسازی در شبکۀ عصبی، احتمالاً تصمیم میگیرد که این خبر مثبت است. این تصمیمگیری بر اساس وزنهایی است که به کلمات مختلف داده شده است.
به طور خلاصه، هر جزء از شبکۀ عصبی، نقش خاصی در تحلیل اطلاعات ایفا میکند. این اجزا، مانند ابزارهای مختلفی هستند که روزنامهنگار برای تحلیل اخبار از آن استفاده میکند. ما تصمیم میگیریم دادهها را چگونه به اطلاعات تبدیل کنیم و به آن سر و شکل دهیم. اینجاست که بحث تابع مطرح میشود. تابعها ابزاری قدرتمند هستند که میتوانند پدیدههای مختلف را مدلسازی، پیشبینی و در مرحلۀ بعدی سیستمها را کنترل کنند. توابع در ریاضیات، علوم رایانه، فیزیک، اقتصاد و بسیاری از زمینههای دیگر کاربرد دارند. در شبکههای عصبی، توابع بهعنوان بلوکهای سازنده استفاده میشوند تا مدلهای پیچیده و قدرتمندی برای حل مسائل مختلف ایجاد شود.
تابعها در زندگی روزمره
فرض کنید یک ماشین لباسشویی داریم که برای شستن لباسها استفاده میشود. این ماشین لباسشویی میتواند ورودیهای مختلفی مانند نوع لباس، میزان کثیفی لباسها، مقدار پودر لباسشویی و… را دریافت کند. خروجی این ماشین هم لباسهای شُسته شده است. رابطۀ بین ورودیها (یعنی نوع لباس، میزان کثیفی و…) و خروجی (یعنی لباسهای شسته شده) را میتوان بهعنوان یک تابع در نظر گرفت. دامنۀ این تابع مجموعۀ تمام ورودیهای مجاز است. برای مثال، نمیتوانیم به این ماشین لباسشویی خانگی فرش ۱۲ متری بدهیم؛ چون این ماشین برای شستن لباس طراحی شده نه شستن فرش ۱۲ متری. همچنین، نمیتوانیم مقدار نامحدودی پودر لباسشویی به آن اضافه کنیم، چون ممکن است به ماشین آسیب برساند.
ما روزنامهنگارها هم در کار روزمره، عملکردِ مشابهی داریم. وقتی میخواهیم دربارۀ یک رویداد خبری بنویسیم، احتمالا ورودیهای ما آمیزهای از ارزشها و عناصر خبری را شامل میشود.
- رویداد: «چه» اتفاقی افتاده است؟
- زمان و مکان: رویداد «کِی» و «کجا» رخ داده است؟
- افراد درگیر: «چه کسی» یا «چه کسانی» در این رویداد نقش داشتهاند؟
- شواهد: چه شواهدی برای اثبات «چرایی» و «چگونه» رخ دادن این رویداد وجود دارد؟
خروجی این فرایند یک خبر است. تابع ما در اینجا رابطۀ بین ورودیها (اطلاعات جمعآوری شده) و خروجی (خبر نهایی) است. همانطور که در لباسشویی نمیتوانیم فرش ۱۲ متری بیندازیم، در کار خبرنگاری هم نمیتوانیم اطلاعات جعلی، خیالی و برهمزنندۀ حریم خصوصی وارد متن خبر کنیم.
چرا در شبکههای عصبی از تابع استفاده میکنیم؟
در شبکههای عصبی هم ما ورودیهایی داریم (مثلاً پیکسلهای یک تصویر) و خروجیهایی (مثلاً تشخیص اینکه تصویر یک گربه است یا سگ). بینِ ورودیها و خروجیهای سیستم، لایههای مختلفی از نورونها وجود دارد. هر نورون، محاسبهای ساده انجام میدهد و سپس تصمیم میگیرد که آیا باید فعال شود یا نه. این تصمیمگیری بر اساس یک تابع فعالساز انجام میشود.
برای اینکه تابع فعالساز «تصمیم»گیری برای فعال شدن یا نشدن یک نورون را روی بستر سیلیکون انجام میدهد تا «مسائل پیچیده و غیرخطی» را در بستر شبکۀ عصبی حل و «ویژگیهای مهم دادهها» را بشناسد.
پس هر جملۀ همین یادداشتی که دارید میخوانید یک ورودی برای یک نورون در شبکۀ عصبی ذهن شماست. هر نورون در شبکۀ عصبی مانند یک سلول مغزی عمل میکند و تصمیم میگیرد که آیا اطلاعاتی را به نورونهای بعدی منتقل کند یا نه.
موقع شنیدن «بفرما»، «بنشین» و «بِتَمَرگ» احساسها روی طیف مثبت به منفی قرار میگیرند. پس ما میدانیم که روی هر کلمه (نورون) چه میزان تأکیدی وجود دارد. پس باید به ورودی هر نورون، مقدار عددی اضافه کنیم که نشان دهد چهقدر آن نورون باید فعال شود.
تابع فعالساز در این مثال، مانند یک فیلتر ذهنی تعیین و مشخص میکند روزنامهنگار تا چه اندازه به یک خبر خاص توجه کند و چه احساسی از آن بگیرد. به طور معمول در شبکههای عصبی عمیق از دو نوع تابع بیشتر استفاده میکنیم:
- ReLU: این تابع سادهترین و پرکاربردترین تابع فعالسازی است. در مثال روزنامهنگار، ReLU مانند یک آستانه است. اگر احساسی که شنیدن یک خبر ایجاد میکند از حد مشخصی بیشتر باشد، روزنامهنگار به آن حتماَ توجه میکند. وقتی روزنامهنگار جملهای مانند «این فاجعهای بود!» را میخواند، این جمله مانند یک سیگنال بسیار قوی به مغز او ارسال میشود. تابع ReLU در این مثال، این سیگنال قوی را بدون تغییر به بخشهای بعدی مغز منتقل میکند. این یعنی روزنامهنگار به شدت متوجه احساس منفی این جمله میشود و آن را بهعنوان یک رویداد مهم ثبت میکند.
- tanh: این تابع کمی پیچیدهتر است و خروجیهای متنوعتری تولید میکند. در مثال روزنامهنگار، tanh مانند یک مقیاس است که شدت احساسات مختلف را اندازه میگیرد. اگر روزنامهنگار جملهای مثل «این خبر چندان خوشایند نبود» را بخواند، احساس منفی کمتری نسبت به جملۀ پیشین خواهد داشت. در این حالت، تابع tanh، شدت این احساس را کمی کاهش میدهد. پس روزنامهنگار فرضی به این جمله نیز توجه میکند، اما نه به اندازهای که به جملۀ قبلی توجه کرده بود.
هر نورون (یا بهتر بگوییم هر بخش از مغز روزنامهنگار) مانند یک تابع فعالساز عمل میکند. این بخشها، سیگنالهای ورودی را دریافت میکنند و بر اساس آن تصمیم میگیرند که چه واکنشی نشان دهند. این تصمیمگیری بر اساس تجربیات، دانش و احساسات پیشین روزنامهنگار انجام میشود. انتخاب تابع فعالسازی مناسب، تأثیر زیادی بر عملکرد شبکۀ عصبی دارد.
وزن چه چیزی را در تابع تغییر میدهد؟
وزنهای اولیه؛ کلید یادگیری
ممکن است برای روزنامهنگاری که در یک رسانۀ محافظهکار مشغول است کلمات و عباراتی مثل «ثبات» اهمیت بیشتری داشته باشد و «تغییر» اهمیت کمتر.
پس همانطور که میدانیم سیاستها و جهتگیریهای رسانهای را میتوانیم بهعنوان وزنهای پیشفرض در شبکۀ عصبی یک روزنامهنگار در نظر بگیریم. این وزنهای پیشفرض، نوعی سوگیری اولیه را به شبکۀ عصبی وارد میکنند.
روزنامهنگار مشغول در یک رسانۀ محافظهکار کلمه «ثبات» را در یک خبر میبیند و آن را وارد فیلتر ذِهنش میکند. گفتیم که تابع فعالسازی شبیه یک فیلتر عمل میکند و این کلمه را بهعنوان یک سیگنال مثبت میشناسد. اما این رضایت از ثبات چهقدر است؟
در شبکۀ عصبی عمیق، شدت این سیگنال مثبت به «وزن[۳]» مرتبط با کلمه «ثبات» بستگی دارد. وزنها تعیین میکنند که هر نورون چهقدر به نورونهای دیگر متصل است و چهقدر روی خروجی تأثیر میگذارد. اگر وزن کلمه یا عبارتی زیاد باشد، این سیگنال تأثیر بیشتری بر احساس کلی خبر دارد. وزنها پارامترهایی هستند که قدرت ارتباط بین نورونها را تعیین میکنند. در ابتدای آموزش ماشین، وزنها بهصورت تصادفی مقداردهی میشوند. در طول آموزش، این وزنها به تدریج تنظیم میشوند تا شبکه بتواند به بهترین شکل ممکن دادههای آموزشی را مدل کند.
پس تا اینجا به کمک یک مثال فرضی گفتیم که برای آموزش شبکۀ عصبی به یک مجموعۀ بزرگ از داده نیاز داریم که همان اخبار است. سپس هر خبر با برچسب احساسات (مثبت، منفی یا خنثی) نشانهگذاری میشود و آن زمان است که شروع میکنیم به آموزش شبکۀ عصبی.
حالا ببینیم همین روند روی یک ماشین بر مبنای سیلیکون چگونه آموزش میبیند و یاد میگیرد.
- آموزش شبکه: در طول آموزش شبکه، وزنها به تدریج تنظیم میشوند تا شبکه بتواند الگوهای پیچیدهای را در دادهها شناسایی کند و احساسات را با دقت بالایی تشخیص دهد. میخواهیم از ماشین یک خبرنگار کارکشته بسازیم. بنابراین ابتدا او را باید با اخبار مختلف و رویکردهای آن آشنا کنیم. مراحل کار به این شکل است:
- ورودی: هر جمله از خبر بهعنوان یک ورودی به شبکه داده میشود.
- پردازش: شبکه، کلمات را بهصورت توکِن (واحدهای کوچکتر از کلمه) تقسیم و هر توکن را به یک بُردار عددی تبدیل میکند. سپس، این بردارها را بهصورت متوالی به شبکه میدهیم.
- خروجی: شبکه یک احتمال برای هر یک از مراتب احساسات (مثبت، منفی، خنثی) تولید میکند.
- درک خطا: در شبکههای عصبی، مفهوم خطا که بهعنوان تفاوت بین نتایج واقعی و پیشبینیها تعریف میشود، برای بهبود دقت مدل بسیار مهم است. بهعنوانمثال، فرض کنید یک روزنامهنگار موقع آموزش ماشین، خبری را «مثبت» برچسبگذاری میکند. اگر یک شبکۀ عصبی همان خبر را تحلیل کند به آن برچسب «خنثی» میدهد. تفاوت بین برچسب واقعی روزنامهنگار و برچسبی که شبکه پیشبینی کرده (یعنی خروجی شبکه)، بهعنوان خطا شناخته میشود. درک این خطا بسیار مهم است؛ چون نشان میدهد که شبکه چهقدر در پیشبینی احساسات دقیق عمل میکند. ما میخواهیم با آموزش شبکه خطاها را کم کنیم تا دقت مدل در تشخیص احساسات بیشتر شود.
- بهروزرسانی وزنها: وزنها در شبکههای عصبی مانند پیچ و مهرههای یک ماشین عمل میکنند و با تنظیم این وزنها، میتوانیم عملکرد شبکه را بهبود و دقت آن را افزایش دهیم. یکی از ابزارهای کلیدی در این فرایند، مفهوم «گرادیان» است.
فرض کنید در حال کوهنوردی هستید و میخواهید به پایینترین نقطۀ یک دره برسید. اما مه غلیظی اطراف شما را فراگرفته است و شما نمیتوانید تمام مسیر را ببینید. در هر لحظه، فقط میتوانید تشخیص دهید که در کدام جهت، شیب زمین بیشتر یا کمتر است. بنابراین، برای پیدا کردن مسیر به سمت پایینترین نقطه، باید همیشه در جهتی حرکت کنید که شیب زمین رو به پایین است. این جهت، همان چیزی است که مفهوم گرادیان یا «شیب» در ریاضی میگوید.
در شبکههای عصبی، گرادیان به همین شکل در محیطی مجازی عمل میکند.
فرض کنید شبکۀ عصبی شما در حال تحلیل احساسات یک متن است و میخواهد پیشبینی کند که یک خبر مثبت است یا منفی. در فرایند آموزش، شبکه به طور پیوسته وزنهای مختلفی را تنظیم میکند (که میتوان آنها را مانند تنظیمات مختلف روی پیچ و مهرهها تصور کرد) تا بهترین پیشبینی ممکن را انجام دهد. حالا فرض کنید شبکۀ عصبی شما برای یک خبر خاص برچسب «خنثی» را پیشبینی کرده است، درحالیکه واقعیت «مثبت» بوده است. در این حالت، خطایی وجود دارد. گرادیان به شبکه نشان میدهد که اگر وزنهای مربوط به کلمات مثبت را افزایش دهد، خطا کاهش مییابد و پیشبینی درستتر خواهد بود.
گرادیان از طریق فرمول مشتق محاسبه میشود. مشتقِ یک تابع در یک نقطۀ مشخص به ما نشان میدهد که تابع در آن نقطه با چه سرعتی در حال تغییر است. یعنی مشتق، شیب خط مماس بر نمودار یک تابع در یک نقطۀ مشخص است. در شبکههای عصبی، مشتق به ما کمک میکند تا بفهمیم اگر وزنها را کمی تغییر دهیم، خطا چه تغییری میکند.
این اطلاعات به ما امکان میدهد تا وزنها را بهگونهای تنظیم کنیم که خطا کم شود. بهعنوانمثال، فرض کنید شبکۀ ما دو وزن دارد: وزن مربوط به کلمات مثبت و وزن مربوط به کلمات منفی. اگر شبکه بهاشتباه یک خبر منفی را مثبت برچسبگذاری کند، گرادیان به ما نشان میدهد که باید وزن مرتبط با کلمات منفی را کاهش دهیم و وزن مرتبط با کلمات مثبت را افزایش دهیم. این فرایند باعث میشود که در مواجهه با یک خبر منفی دیگر، احتمال اینکه شبکه آن را بهعنوان مثبت تشخیص دهد، کمتر شود. این فرایند معمولاً با استفاده از الگوریتمهایی مانند پسانتشار خطا[۴] انجام میشود که مشتقهای تابع را به طور خودکار محاسبه و وزنها را بهروزرسانی میکند. گرادیان مانند یک قطبنماست که به شبکآ عصبی نشان میدهد چگونه باید وزنهای خود را تنظیم کند تا بهترین پیشبینیها را انجام دهد و خطا به حداقل برسد.
پس از آموزش شبکه، ما میتوانیم اخبار جدید را به آن بدهیم و احساسات آن را پیشبینی کنیم.
در دنیای امروز، تنها بسنده کردن به تکنیکهای قدیمی، چون فهرست کردن کلمات مثبت و منفی، دیگر برای هوشمند شدن ماشینها کافی نیست.
به رویکردهای پیچیدهتر و دقیقتری نیاز داریم که از شبکههای عصبی عمیق بهره میبرند، مانند تجربۀ یک روزنامهنگار که از شناخت عمیق و جزئیات بهره میگیرد. این شبکهها با پردازش مداومِ دادهها و تنظیم پیوسته وزنها، توانایی بالاتری در تشخیص احساسات و درک مفاهیم پیچیده از خود نشان میدهند. آیندۀ تحلیل احساسات در رسانهها، در گرو ترکیب دانش انسانی با الگوریتمهای یادگیری عمیق است، جایی که هوش مصنوعی تبدیل به ابزاری میشود که به ما در فهم دنیای پیچیده احساسات کمک میکند.
[۱] hidden state
[۲] RNN
[۳] Weight
[۴] Back-propagation
منبع خبر:
مصور
/
تمامی حقوق گردآوری و تالیف خبر متعلق به ناشر اصلی آن که در لینک فوق به آن اشاره شده است می باشد. در صورت نیاز به ارسال جوابیه یا توضیح تکمیلی برای مطلب منتشر شده صرفا از طریق مرجع اصلی خبر اقدام نمایید.