<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های علی اکبر بدری</title>
        <link>https://virgool.io/feed/@badri</link>
        <description>Just a simple tech</description>
        <language>fa</language>
        <pubDate>2026-04-15 04:35:12</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/11471/avatar/Cl1lJ1.png?height=120&amp;width=120</url>
            <title>علی اکبر بدری</title>
            <link>https://virgool.io/@badri</link>
        </image>

                    <item>
                <title>مدل WebGPT؛ به GPT-3 اینترنت و مرورگر دادند!</title>
                <link>https://virgool.io/overfit/papers-webgpt-a0xvwzafrj2q</link>
                <description>بسم الله الرحمن الرحیممقدمهیکی از چالش‌های اساسی در NLP، پاسخ طولانی به پرسش‌های دامنه‌بازه که مثلا مدل باید حداقل اندازه‌ی یک پاراگراف به یک سوال با هر موضوعی پاسخ بده و خب اگر مدل خوب عمل کنه، می‌تونه باعث بشه مردم با مراجعه به این مدل‌ها و پرسیدن سوالشون کلی چیز جدید یاد بگیرند. اما هنوز مدل‌های هوشی ضعیف‌تر از آدم‌ها عمل می‌کنند. مدل‌های قبلی در این مسئله عمدتا از دو بخش بازیابی اطلاعات و ترکیب تشکیل شده بودند. حالا شرکت OpenAI در مقاله‌ای به نام WebGPT: Browser-assisted question-answering with human feedback، مدلی به نام WebGPT داده و به این مسئله به شکل جدیدی حمله کرده؛ بخش بازیابی اطلاعات رو با استفاده از API موتور جستجوی بینگ شرکت مایکروسافت ردیف کرده و قسمت ترکیب رو هم با استفاده از مدل هیولایی GPT-3 پیش برده!!! در این پست خلاصه‌ای از نحوه‌ی کار و نتایج این مدل رو بررسی می‌کنیم.حالا بات‌ها هم برای پاسخ به سوالاتشان در اینترنت جستجو می‌کنندتوضیح مدلشرکت OpenAI با یه تیم متشکل از یه نیسان آدم اومده GPT-3 رو فاین‌تیون کرده تا بتونه سوال‌های دامنه‌باز رو با استفاده از یک مرورگر (browser) پاسخ بده! یعنی واقعا یه مرورگر تکستی درست کردند و دادند دست مدل GPT-3 که با بینگ (موتور جستجوی مایکروسافت) سرچ کنه و جواب رو تولید کنه. مدل رو با استفاده از imitation learning (در خیلی از مسائل یادگیری تقویتی با شرایطی مواجه می‌شیم که یا تابع پاداش بسیار تنک (sparse) است و در انتهای چند گام به ما داده میشه یا این که تعریف مشخصی از تابع پاداش وجود نداره مثل رانندگی ماشین خودران. در این شرایط یک تکنیک به نام imitation learning وجود داره که در اون به جای این که عامل از روی تابع پاداش تنک سیاست رو یاد بگیره، سناریو‌های اجرا شده به وسیله متخصص اون کار رو به عامل نشون میدیم و عامل بایستی سعی کنه به وسیله تقلید کارهای اون متخصص سیاست بهینه رو یاد بگیره) و روی ترکیب دادگان ELI5 و TriviaQA آموزش دادند تا مدل یاد بگیره که چجوری باید سوال رو توی اینترنت سرچ کنه، پارگراف‌های مناسب رو انتخاب کنه و به اون پاراگراف هم ارجاع بده! به مدل در هر مرحله، یک سوال و state مرورگر داده میشه و مدل هم بایستی یک سری کامند مثل search و qoute و find in page و …. رو وارد کنه. بعد که اینجوری متن جمع می‌کنه، باهاش متن جواب رو تولید می‌کنه (نه اینکه فقط چند تا پاراگراف رو به هم بچسبونه). این مدل برای پاسخ‌هایی که تولید می‌کنه از انسان بازخورد هم میگیره و تونسته در بعضی جاها از انسان هم بهتر عمل کنه. تاکید میکنیم که واقعا یاد میگیره که خودش بگرده توی سایت‌ها و جواب رو تولید کنه و تحویل بده. نمونه‌ی نحوه‌ی جمع‌آوری داده و پاسخ به سوال مدل هم در این ویدیوئیه که در ادامه آوردیم. می‌تونید ببینید مدل برای پاسخ به سوال «شکسپیر چه وقت رمان‌های هری پاتر رو نوشت؟» چی سرچ میکنه و در نهایت چه جوابی میده. با این مدل سعی کردند میزان «دقت حقیقت‌گویی» (factual accuracy) مدل زبانی رو افزایش بدهند. البته از چهار روش برای آموزش مدل استفاده کردند که توضیح مختصری از هر کدوم رو می‌تونید در خود مقاله در بخش 3.2 بخونید. https://aparat.com/v/uOk1h ارزیابی مدلمدل رو اومدند در چند بخش ارزیابی کردند: اول دیتاست ELI5  که سوالاتیه که ملت در subreddit با عنوان Explain Like I’m Five پرسیده بودند. جواب‌هایی که مدل داده در ۵۶ درصد مواقع بهتر از جواب انسان بوده!!نتایج مدل WebGPT روی دیتاست ELI5  دوم اومدند میزان موثق و مفید بودن مدل رو با استفاده از معیار مقاله‌ی TruthfulQA سنجیدند و در این بخش، مدل از مدل‌های برپایه‌ی GPT-3 قبلی بهتر عمل کرده ولی هنوز با مدل انسانی فاصله داره که نویسندگان، دلیلش رو آوردن جواب از بعضی لینک‌های غیرعلمی و غیرقابل اعتماد می‌دونند و مشکل رو پیدا کردند و گفتند سعی می‌کنیم با تکنیک‌های adversarial training این رو حل کنیم!نتایج مدل WebGPT روی دیتاست TruthfulQAبعد هم اومدند میزان حقیقت پاسخ‌های مدل رو ارزیابی کردند. آدم‌های ارزیاب، پاسخ‌های خیلی فنی و مبهم رو هم با استفاده از میزان موثق بودن لینک‌های منابع ارزیابی کردند. مدل هنوز در این قسمت مشکلات پایه‌ای داره (در ادامه چندتاشو هم آوردیم) و مشکل بعدی هم اینه که با این روش ارزیابی، مدل بعد از یه مدت یاد میگیره لینک‌هایی که آدم‌ها (که مدل داره ازشون فیدبک میگیره) دوست دارند رو به عنوان منبع بذاره. برای حل این یکی مشکل هم گفتند از روش Debate که در یک مقاله دیگه مطرحش کردند قراره استفاده کنند (این روش رو هم انشاءالله در پستی دیگر توضیح خواهیم داد).بررسی عملکرد مدل با مثال‌های مختلفمدل پاسخ خوبی به سوالاتی که توی اینترنت واقعا جوابشون هست میده. مثل سوال «شبکه‌های عصبی چجوری کار می‌کنند؟» یا «قطارها چجوری دور می‌زنند؟»چون که GPT-3 رو یک سال پیش train کردند، اینکه به مدل دسترسی به اینترنت رو دادند  تا باهاش به سوالات جواب بده، باعث میشه به سوالات جدید هم پاسخ به‌روز بده. مثل سوال «چرا کانال سوئز در مارس ۲۰۲۱ بسته شد؟»مدل به خوبی می‌تونه از چندین منبع پاسخ‌ها رو ترکیب کنه اما گاهی اشتباه می‌کنه. مثلا برای سوال «ارباب حلقه‌ها تعداد کلمات بیشتری داره یا  هری پاتر؟» که در پاسخ گفته ارباب حلقه‌ها اما اعدادی که از دو منبع آورده نشون میده هری پاتر بیشتره.مدل معمولا فرض غلط سوال رو زیر سوال نمیبره. مثلا اگر بپرسند «چرا همه قایق‌ها سفیدند؟» میره جواب این سوال رو پیدا می‌کنه. ازش بپرسند «چرا همه قایق‌ها صورتی‌اند؟» هم میره جوابش رو پیدا می‌کنه و در جواب نمیگه «مشتی اصلا کلا قایق‌ها یک رنگ نیستند که!!»مدل سوالات و پاسخ‌های درپیتی و خرافی رو نمی‌تونه تشخیص بده. مثلا ازش پرسیدند «چی میشه اگر از زیر یه نردبان رد بشیم؟» مدل توضیح میده که باعث بدشانسی میشه و ریشه‌اش فلانه. در صورتی که انتظار میره حداقل اولش بگه هیچی نمیشه ولی مثلا فلان ملت این اعتقاد رو داشتند که باعث بدشانسی میشه. یا مثلا سوال «با چه ابزارهایی میشه ارواح رو پیدا کرد؟» مدل رفته از کلی لینک کج و کوله جواب آورده.از مدل وقتی سوالات بی‌معنی می‌پرسند، چرت و پرت جواب میده و هنوز نمیتونه سوال چرت رو خوب تشخیص بده. مثلا ازش میپرسند «?What» شروع میکنه یک سری چیزا راجع به افزایش فشار برق و تاثیرش در لوازم الکتریکی صحبت می‌کنهه!وقتی از مدل سوالاتی می‌پرسند که توی اینترنت جواب مستقیمش نیست، شروع میکنه فقط یه سری مطالب مرتبط ولی حاشیه‌ای می‌نویسه مثل دانشجویی که جواب خود سوال رو بلد نیست. مثلا سوال «عدد پی به توان عدد پی چی میشه؟» یا سوال «۵۱+۳۷ چی میشه؟»مدل گاهی غلط موجود در سوال رو هم تشخیص میده. مثلا پرسیدند شکسپیر چه زمانی رمان‌های هری پاتر رو نوشته؟ مدل گفته اولا رولینگ نوشته. در فلان سال‌ها هم نوشته.پ.ن. در آخر ترکیب تیم رو در بخش Author contributions مقاله ببینیم تا ببینیم با کار تیمیه که میشه به همچین نتایجی رسید. هوشی‌ها و نرم‌افزاری‌های تیم به کنار؛ سه نفر زیرساخت راه انداختند و دو نفر امنیت شبکه و کامپیوترها رو برعهده داشتند!!اعضای تیم مقاله WebGPTنتیجه‌گیریدر این پست ما رویکرد جدید مدل WebGPT از شرکت OpenAI و نتایجش رو به صورت خلاصه و مفید بررسی کردیم. اگر می‌خواهید ته قضیه رو دربیارید این دو لینک رو دریابید:لینک بلاگ توضیح مقاله:https://openai.com/blog/improving-factual-accuracy/لینک خود مقاله:https://arxiv.org/abs/2112.09332خوشحال میشیم شما رو هم در کانال تلگرام nlp_stuff ببینیم و اگر پست یا نوشته‌ی خوبی داشتید ندا بدید تا در کانال و انتشارات بگذاریم.</description>
                <category>علی اکبر بدری</category>
                <author>علی اکبر بدری</author>
                <pubDate>Wed, 05 Jan 2022 09:22:41 +0330</pubDate>
            </item>
                    <item>
                <title>داستان ترنسفورمرها (۲): attention برمی‌خیزد!</title>
                <link>https://virgool.io/overfit/transformers2-ch6ojadripur</link>
                <description>به نام خداسلام!در انتشارات اورفیت در یک رشته پست تحت عنوان «داستان ترنسفورمرها»، ماجرای چرایی به وجود آمدن مکانیزم توجه، روند پیشرفتش و درگیری‌های اخیرش رو داریم حکایت می‌کنیم. در تلگرام می‌تونید دنبالمون کنید و اگر هم متن خوبی در حوزه‌ی هوش مصنوعی و پردازش زبان طبیعی داشتید که در انتشارات یا کانال بگذاریم، از همون‌جا ندا بدید.این دومین پست از رشته‌پست‌های مذکوره. در پست قبلی مشکلات شبکه‌های بازگشتی را بررسی کردیم و در این پست می‌خواهیم ببینیم مکانیزم توجه چه راه‌حلی براش ارائه داده. حتما پست قبلی با نام داستان ترنسفورمرها (۱): ناکارآمدی بازگشتی‌ها را بخونید. قسمت سوم این رشته پست هم با نام داستان ترنسفورمرها (۳): توجه و دیگر هیچ! منتشر شده.شکل ۱. توجه توجه!برای اینکه این پست را بهتر متوجه بشید نیازه که با این مباحث آشنا باشید:مفاهیم ابتدایی شبکه‌های عصبی مصنوعی مثل تابع فعال‌سازیشبکه‌های بازگشتیشبکه‌های کدگذار-کدگشادر این پست می‌خواهیم این مباحث را با هم بررسی کنیم:ایده‌ی اولیه: مکانیزم توجه باهدانا (Bahdanau)مکانیزم توجه لوآنگ (Luong)خلاصه روابط ریاضی مکانیزم‌هاکاربردهای دیگر مکانیزم توجهدر ضمن قطعا این متن مشکلاتی داره. اگر دیدینشون، بگید بهم لطفا. کاریشون ندارم، فقط می‌خوام درستشون کنم.۱. ایده‌ی اولیه: مکانیزم توجه باهدانا (Bahdanau)شکل ۲. یک شبکه‌ی کدگذار-کدگشا برای ترجمه ماشینی. این تصویر از کتاب فوق‌العاده‌ی hands-on machine learning برداشته شده است.در پست قبل دیدیم مشکل شبکه‌های بازگشتی، مسیر طولانیه که مثلا بردار کلمه‌ی انگلیسی milk در تصویر بالا باید کامل و سالم طی کنه تا برسه به کلمه‌ی فرانسوری lait و همینطور باید گرادیان تمام این مسیر را هم برگرده. اینجاست که «مکانیزم توجه» صحنه را دست می‌گیره. آقای باهدانا (Bahdanau) و شرکا(!) در سال ۲۰۱۴ در یک مقاله‌ی خفن، تکنیکی را معرفی کردند که ساختار کدگشا بتونه در هر قدم فقط روی کلمات مناسب تمرکز و «توجه» کنه. مثلا وقتی می‌خواد کلمه‌ی lait را تولید کنه به کلمه‌ی milk توجه کنه. خب این ایده باعث شد مسیر بین یک کلمه در زبان مرجع و ترجمه‌اش خیلی کوتاه‌تر بشه و مشکل حافظه‌ی کوتاه مدت شبکه‌های بازگشتی خیلی کم‌تر مشکل ساز بشه. این ایده بازی را مخصوصا برای متن‌های طولانی (بیشتر از سی تا کلمه) زیر و رو کرد. در این معماری علاوه بر state سلول کدگذار آخر، تمام خروجی‌های کدگذار را هم به کدگشا می‌فرستیم. چرا؟ تا در هر گام، کدگشا یک جمع وزن‌دار بین این خروجی‌ها حساب کنه و همین وزن‌ها هستند که مفهوم توجه را پیاده می‌کنند؛ یعنی اونی که وزن بیشتری داره، سهم بیشتری را در این بردار حاصل از جمع وزن‌دار داره پس بهش توجه بیشتری می‌شه. به این تصویر توجه کنید:شکل ۳. یک شبکه‌ی کدگذار-کدگشا برای ترجمه ماشینی به همراه مکانیزم توجه! این تصویر از کتاب فوق‌العاده‌ی hands-on machine learning برداشته شده است.وزن‌های مذکور همان αها در تصویر بالا هستند که همراه شبکه قراره آموزش ببینند. در این تصویر (α(t,i نشان‌دهنده‌ی وزن خروجی کدگذار iام در گام زمانی t است. مثلا اگر (α(3,1 بیشتر از (α(3,0 و (α(3,2 باشه، یعنی در گام سوم کدگشا به کلمه‌ی دوم (طبیعتا ایندکس کلمه‌ی اول صفره) که drink است، بیشتر از دو کلمه‌ی دیگر توجه خواهد کرد. جمع وزن‌دار از خروجی‌های کدگذار به کدگشا داده می‌شن و غیر از این مورد، بقیه‌اش مثل کدگذار-کدگشا معمولی کار می‌کنه؛ یعنی مثل شکل ۱ در هر مرحله، خروجی مرحله قبل (در شکل ۳، مثلا در مرحله‌ی تولید (y&#x27;(3، خروجی مرحله‌ی قبل کلمه‌ی du است) و لایه‌های پنهان مرحله قبل (در شکل۳: (2)h) به کدگشا داده می‌شه. دقت کنید در شکل ۳ فقط جمع وزن‌دار خروجی‌های کدگذار و لایه‌های پنهان مرحله قبل مشخص شده و خروجی از مرحله قبل آورده نشده ولی این خروجی در شکل ۲ به صورت (x&#x27;(i مشخص شدند. پس امیدوارم مشخص شده باشه که کدگشا در این معماری سه تا ورودی می‌گیره: خروجی مرحله قبل، لایه‌های پنهان مرحله قبل و جمع وزن‌دار از خروجی‌های کدگذار با ضرایب مکانیزم توجه.حالا سوالی که می‌مونه اینه که این αها از کجا میان که لطف کنند و اهمیت را مشخص کنند؟ همون‌طور که در سمت راست شکل ۳ مشخص شده، این وزن‌ها با استفاده از یک شبکه‌ی کوچک به اسم alignment model یا attention model تولید شدند. این شبکه یک لایه‌ی time-distributed Dense و بعد هم یک لایه‌ی softmax داره. لایه‌ی اول به عنوان ورودی تمام خروجی‌های کدگذار (در شکل: (y(i) و لایه‌ی پنهان مرحله قبل کدگشا (در شکل: (h(t-1) را می‌گیره. این دو تا ورودی به هم الحاق (concatenate) و به این شبکه داده می‌شه. خروجی (در شکل: (e(t,i) هم یک امتیاز به ازای هر کدوم از این خروجی‌های کدگذاره. این امتیازها نشون می‌ده که هر کدوم از این خروجی‌های کدگشا و لایه‌ی پنهان مرحله قبل کدگشا چقدر هم‌راستا (aligned) و شبیه به هم هستند. بعد هم این خروجی وارد یک لایه‌ی softmax می‌شه و همون αهای عزیز ساخته می‌شن. طبیعتا جمع این αهای یک هستند. به این نوع مکانیزم توجه می‌گن مکانیزم باهدانو یا بخاطر اینکه y و h را به هم الحاق کردیم، بهش می‌گن مکانیزم الحاقی (catenative attention) یا مکانیزم تجمیعی (additive attention). اگر جمله‌ی ورودی n تا کلمه داشته باشه و فرض کنیم که خروجی هم همین تعداد کلمه داشته باشه، باید n^2 تا وزن حساب بشه که چون جمله‌ها معمولا طولانی نیستند، مشکل خاصی نیست.۲. مکانیزم توجه لوآنگ (Luong)آقای لوآنگ (Luong) و شرکا در سال ۲۰۱۵ در یک مقاله‌ی خفن دیگه، مدل مکانیزم بعدی را معرفی کردند. همونطور که در قسمت قبل گفته شد، هدف والای مکانیزم توجه اینه که شباهت‌های بین خروجی‌های کدگذار (y) و لایه‌ی پنهان مرحله قبل کدگشا (h) را محاسبه کنه؛ پس در این مقاله برای محاسبه‌ی شباهت از ضرب داخلی (فاصله کسینوسی) استفاده کردند که طبیعتا باید ابعاد این دو تا بردار یکسان باشند. بعد نتایج این ضرب‌های داخلی، مثل مدل قبل به یک لایه‌ی softmax داده می‌شن. مورد بعدی که در این مقاله استفاده شد این بود که از لایه‌ی پنهان همین مرحله‌ی کدگشا (یعنی (h(t) به جای مرحله‌ی قبل (یعنی (h(t-1)استفاده کردند. در مدل قبل خروجی مکانیزم توجه در تولید همین (h(tها دخالت داشتند (گفتیم که کدگشا سه تا ورودی می‌گرفت که خروجی مکانیزم هم یکیشون بود) ولی در این یکی مدل، از خروجی‌های مکانیزم توجه مستقیم برای خروجی نهایی کدگشا استفاده می‌شن. به صورت کلی در شبکه‌های عصبی می‌دونیم که لایه‌های نهان به یک تابع فعال‌سازی داده می‌شن تا خروجی تولید شن ولی اینجا این لایه‌های نهان کدگشا را می‌دیم به مکانیزم توجه و از خروجی اون برای ساختن خروجی نهایی کدگشا (در ترجمه، کلمه در زبان مقصد) استفاده می‌کنیم. به این مدل، مکانیزم توجه لوآنگ (Luong) یا مکانیزم توجه ضرب نقطه‌ای (dot) یا مکانیزم توجه ضربی (multiplicative) می‌گن. در این مقاله یک مدل دیگه هم برای محاسبه‌ی ضرب داخلی ارائه شد که روی خروجی کدگذار، اول یک تبدیل خطی (مثل مدل باهدانو با استفاده از یک لایه‌ی time-distributed Dense بدون متغیر bias) زده می‌شد و بعد ضرب داخلی با لایه‌ی پنهان کدگشا. به این یکی مدل، مکانیزم توجه عمومی (general) می‌گن.مکانیزم الحاقی و مکانیزم‌های ضرب داخلی در همین مقاله مقایسه شدند و مشخص شد که مکانیزم‌های ضرب داخلی عملکرد بهتری دارند.۳. خلاصه روابط ریاضی مکانیزم‌هاخروجی مکانیزم توجه به صورت ˜h (حرف h باکلاه!) در شکل ۴ مشخص شده که همون‌طور که گفته شد جمع وزن‌دار خروجی‌های کدگشاست. خود ضریب‌ها از تابع softmax روی امتیازها محاسبه شدند. امتیازها هم در هر کدوم از سه مدل dot و general و concat به طوری که در شکل اومده محاسبه شدند. در ضمن اون W هم که در فرمول‌ها اومده، همون تغییر خطیه که با استفاده از لایه‌ی time-distributed Dense اجرا می‌شه. شکل ۴. خلاصه روابط ریاضی مکانیزم‌های توجه. این تصویر از کتاب فوق‌العاده‌ی hands on machine learning برداشته شده است.اگر دلتون می‌خواد پیاده‌سازی انواع مکانیزم‌هایی که معرفی شد ببینید، این لینک و این لینک خوبه.۴. کاربردهای دیگر مکانیزم توجهمکانیزم توجه فقط در ترجمه ماشینی نیست و خیلی جاها استفاده می‌شه. دو تا از نمونه‌هاش را اینجا آوردیم.۴.۱. مکانیزم توجه دیداری (visual)تولید توضیح تصویر (image captioning) با استفاده از مکانیزم توجه در سال ۲۰۱۶ در یک مقاله ارائه شد. تصویر به یک شبکه‌ی کانولوشنی (CNN) داده می‌شد تا ویژگی‌های خوب را استخراج کنه، بعد این ویژگی‌ها به یک شبکه‌ی کدگشا (شبکه بازگشتی با مکانیزم توجه) داده می‌شد تا در هر مرحله یک کلمه از توضیح عکس را تولید کنه. به این تصاویر دقت کنید:شکل ۵. در هر جفت تصویر، تصویر سمت چپ ورودی به مدل و تصویر سمت راست قسمتی از تصویر است که مدل قبل از تولید کلمه‌ای که زیرش خط کشیده شده، به آن توجه کرده! این تصویر از مقاله‌‌ی مذکور برداشته شده است.کدگشا در هر مرحله که می‌خواد یک کلمه را تولید کنه، از مکانیزم توجه استفاده می‌کنه تا روی قسمت مناسبی از تصویر توجه کنه. در تصاویر بالا می‌تونید ببینید که مدل قبل از تولید کلمه‌ای که زیرش خط کشیده شده، به کدوم قسمت از تصویر توجه بیشتری کرده. معرکه‌ست!! ۴.۲. تفسیرپذیری مدلیکی دیگه از کاربردها یا مزایای مکانیزم توجه اینه که می‌تونیم بفهمیم چجوری مدل این خروجی را تولید کرده. یعنی داخل مغزش چی گذشته؟ به این موضوع می‌گن توضیح‌پذیری (Explainability) یا تفسیرپذیری (interpretability) مدل. سال ۲۰۱۶ یک مقاله ارائه شد و از همین توضیح‌پذیری مدل استفاده کرد. در این مقاله یک مدل برای تشخیص عکس سگ هاسکی و گرگ آموزش دادند که توضیح برای عکس‌ها بنویسه. بعد یک عکس سگ بهش دادند و انتظار داشتند خروجیش «سگ در برف داره راه می‌ره» باشه ولی مدل اشتباه تشخیص داد و گفت: «گرگ در برف داره راه می‌ره.»مشکل چی بود؟ با استفاده از مکانیزم توجه، فهمیدند مدل وقتی کلمه‌ی «گرگ» را داشته تولید می‌کرده، به برف هم داشته توجه می‌کرده؛ پس احتمالا مشکل اینه که مدل اشتباهی فکر کرده هر وقت دور اون جانور کلی برف باشه گرگه وگرنه سگه. بعد اومدند یک سری عکس از گرگ بدون برف و یک سری عکس سگ در برف به داده‌ها اضافه کردند که مشکل حل بشه. عکس پایین را ببینید.شکل ۶. توضیح اینکه چرا مدل هاسکی را گرگ تشخیص داده! این تصویر از مقاله‌ی برداشته شده است. ۵. جمع‌بندیخب اینم از این پست. در این پست ایده‌ی اولیه مکانیزم توجه و انواعش را توضیح دادیم، روابط ریاضی شون را مرور کردیم و دو نمونه از کاربردهای این مکانیزم را بررسی کردیم. امیدوارم مفید بوده باشه. در پست بعدی می‌ریم سراغ مقاله‌ی بازی‌عوض‌کنِ Attention Is All You Need و معماری ترنسفورمرها را توضیح خواهیم داد. به‌به! همانطور که گفتم، حالا قسمت سوم این رشته پست با نام داستان ترنسفورمرها (۳): توجه و دیگر هیچ! منتشر شده. ۶. منابعاین متن ترجمه و خلاصه‌ای از بخش‌های مرتبط از فصل ۱۶ کتاب hands-on ml، ویدیو و مقاله‌های زیره. پس اگر دوست دارید خیلی بهتر این مطالب را بفهمید، حتما بهشون مراجعه کنید.Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow: Concepts, Tools, and Techniques to Build Intelligent Systems 2nd Editionhttps://www.youtube.com/watch?v=iDulhoQ2proNeural Machine Translation by Jointly Learning to Align and Translate (https://arxiv.org/abs/1409.0473)Effective Approaches to Attention-based Neural Machine Translation (https://arxiv.org/abs/1508.04025)Show, Attend and Tell: Neural Image Caption Generation with Visual Attention (https://arxiv.org/abs/1502.03044)“Why Should I Trust You?” Explaining the Predictions of Any Classifier (https://arxiv.org/pdf/1602.04938.pdf)لایک و نظر یادتون نره. فعلا!</description>
                <category>علی اکبر بدری</category>
                <author>علی اکبر بدری</author>
                <pubDate>Mon, 29 Jun 2020 16:58:54 +0430</pubDate>
            </item>
                    <item>
                <title>داستان ترنسفورمرها (۱): ناکارآمدی بازگشتی‌ها</title>
                <link>https://virgool.io/overfit/transformers1-b31wtfstlwvc</link>
                <description>توجه توجه!سلام! مکانیزم توجه یکی از مهم‌ترین مفاهیم و معماری‌هاییه که انقلابی در حوزه‌ی هوش مصنوعی و پردازش زبانی (NLP) محسوب میشه و باعث شروع سلطه‌ی ترنسفورمرها شد. در انتشارات اورفیت قصد داریم در یک رشته پست تحت عنوان «داستان ترنسفورمرها»، ماجرای چرایی به وجود آمدن مکانیزم توجه، روند پیشرفتش و درگیری‌های اخیرش رو حکایت کنیم. در تلگرام می‌تونید دنبالمون کنید و اگر هم متن خوبی در حوزه‌ی هوش مصنوعی و پردازش زبان طبیعی داشتید که در انتشارات یا کانال بگذاریم، از همون‌جا ندا بدید.در ضمن قطعا این متن مشکلاتی داره. اگر دیدینشون بگید بهم لطفا. کاریشون ندارم، فقط می‌خوام درستشون کنم.حالا قسمت دوم این رشته پست با نام داستان ترنسفورمرها (۲): attention برمی‌خیزد! و قسمت سومش هم با نام داستان ترنسفورمرها (۳): توجه و دیگر هیچ! منتشر شدند.ضعف شبکه‌های RNN و ظهور LSTM, GRUهمونطور که احتمالا می‌دونید، از شبکه‌های بازگشتی برای پیش‌بینی سری‌ها استفاده می‌شه. مثلا متن یک «سری» از کلماته یا مثلا پیش‌بینی قیمت در بورس با توجه به قیمت‌های قبلی. حالا مشکل از اونجا شروع می‌شه که این سری طولانی بشه. اینجاست که RNN دیگه پاسخ‌گو نیست چون ممکنه مشکل ناپایداری گرادیان‌ها (unstable gradients) اذیتش کنه و البته مشکل بزرگ‌تر اینه که شبکه، ورودی‌های اولی را فراموش می‌کنه. راه‌حل‌های این دو تا مشکل را خیلی سریع مرور کنیم (اگر دوست داشتید عمیق‌تر نگاه کنید، لینک مقاله‌ها را گذاشتم که مطالعه کنید):اول. نبرد با گرادیان‌های ناپایداراین مشکل به دو شکل انفجار (exploding) گرادیان و محوشدن (vanishing) گرادیان خودش را نشون می‌ده. مثلا چون که شبکه‌های بازگشتی مثل یک زنجیره هستند و خروجی قبلی را ورودی می‌گیرند، اگر گرادیان ما بزرگتر از یک باشد، به مرور بزرگ و بزرگ‌تر می‌شود تا به اصطلاح منفجر شود. در حالت بد دیگه، اگر گرادیان خیلی کوچک باشد، به مرور باز هم کوچک‌تر می‌شود تا کاملا به اصطلاح محو شود و چیزی به دست لایه‌های انتهایی نرسد.تصویری از قسمت «نبرد حرامزاده‌ها» از سریال «بازی تاج و تخت»خب این مشکل برای هر شبکه‌ای ممکنه پیش بیاد پس بیاید قضاوتش را فقط به خدا بسپریم و RNN رو هم مثل شبکه‌ی خودمون بدونیم. یک سری راه‌حل‌ها که برای بقیه شبکه‌ها کار می‌کنه برای RNN هم استفاده می‌شه. بعضی‌هاش هم دیگه حناشون برای RNN رنگی نداره. مثلا اینجا هم می‌تونیم از مقداردهی‌های اولیه‌ی خوب برای وزن‌ها، الگوریتم‌های بهینه‌سازی سریع‌تر، dropout و کوچک کردن learning rate استفاده کنیم. ولی خب مثلا تابع فعال‌سازی ReLU دیگه خیلی کارساز نیست و ممکنه حتی اوضاع را بدتر کنه واسه همین به صورت پیش فرض تابع فعال‌سازی تانژانت هایپربولیکه. و همچنین در این مقاله مشخص شد Batch Normalization روی RNN مثل بقیه‌ی شبکه‌های feed forward نیست و اینجا خوب کار نمی‌کنه چون با گذاشتنش بین گام‌های زمانی نتایج خوبی نمی‌ده و  فقط می‌تونیم بین دو لایه‌ی بازگشتی بگذاریم و نه داخلش و در این حالت هم فقط از هیچی بهتره. به جاش در این یکی مقاله یه روش دیگه به اسم Layer Normalization معرفی کردند که به جای اینکه نرمالایز کردن را روی بعد batch انجام بده، روی بعد ویژگی‌های داده‌ (features) انجام می‌ده و خب نتایجش خیلی خوبه.دوم. نبرد با آلزایمرکاراکتر dory (طبیعتا سمت راستی) در کارتون «در جستجوی نمو» که حافظه‌ی کوتاه مدتش مشکل داشت!داستان اینه که شبکه‌های RNN ما یک جمله طولانی را شروع می‌کنه به خوندن، به آخرش که می‌رسه اولش یادش می‌ره! دلیلش هم در ساختار RNN مشخصه دیگه. واسه حل این مشکل اومدند انواع و اقسام long-term memory ارائه دادند. یعنی حافظه‌هایی که به صورت طولانی مدت اطلاعات را نگه دارند. قطعا  LSTM یا همون حافظه‌ی کوتاه‌مدت طولانی (Long Short-Term Memory) یکی از معروف‌ترین‌‌هاست و در این مقاله ارائه شده! اونم سال ۱۹۹۷! این معماری را ساده‌تر کردند و GRU را در این مقاله ارائه دادند. معماری‌های این شبکه‌ها خودش یک پست دیگه می‌تونه باشه و سعی می‌کنیم در آتی بنویسیم. ولی به صورت خلاصه این معماری‌ها یک سلول حافظه دیگه هم دارند که در اونجا اطلاعات طولانی‌مدت‌تر نگه‌داری میشه. در تصویر زیر c حافظه‌ی طولانی‌مدت ماست و h حافظه کوتاه‌مدت. جلوی c هیچ تبدیلی نیست گرادیان وزن‌ها تقریبا دچار مشکل محوشدگی یا انفجار نمی‌شود. البته خواهیم دید که این اوضاع را بهتر کرد ولی باز هم مشکلات داره. یعنی باز هم اگر سری خیلی طولانی بشه، پاسخ‌گو نیست.یک سلول LSTM. این تصویر از کتاب فوق‌العاده‌ی hands-on machine learning برداشته شده است. ناکارآمدی زیربنایی شبکه‌های بازگشتیبعد از مدتی مشخص شد که شبکه‌های بازگشتی مشکلات زیربنایی دارند و اگر بخواهیم روی سری‌های طولانی‌تری کار کنیم باید از این معماری‌ها عبور کنیم. در ادامه یکی از کاربردهای شبکه‌های کدگذار-کدگشا به نام ترجمه ماشینی عصبی (Neural Machine Translation) را بررسی می‌کنیم و با این کاربرد بررسی می‌کنیم که این ناکارآمدی چطور مشکل‌ساز می‌شه.استفاده از شبکه‌های کدگذار-کدگشا برای ترجمه ماشینیمعماری و نکات این شبکه‌ها هم خودش یه داستان مجزاست. اما به صورت خلاصه این شبکه‌ها از دو بخش کدگذار (encoder) و کدگشا (decoder) تشکیل شدند. بخش کدگذار یک سری می‌گیره و یک بردار می‌ده و بخش کدگشا برعکس؛ یک بردار می‌گیره و یک سری پس می‌ده. مثلا در ترجمه ماشینی، این شبکه یک جمله از یک زبان می‌گیره و یک جمله از زبان دیگه پس می‌ده. قسمت کدگذار این جمله از زبان مبدا را به یک بردار تبدیل می‌کنه و قسمت کدگشا این بردار را می‌گیره و تبدیل به جمله در زبان مقصد می‌کنه. همونطور که در تصویر زیر مشخصه اول کار encoder تموم می‌شه و بعد کار decoder شروع می‌شه.یک شبکه‌ی کدگذار-کدگشا برای ترجمه ماشینی. این تصویر از کتاب فوق‌العاده‌ی hands-on machine learning برداشته شده است. برای آموزش این شبکه جمله‌ی زبان مبدا به encoder داده می‌شه و جمله مقصد به decoder داده می‌شه البته با یک شیفت زمانی. یعنی در هر مرحله کلمه‌ای را به decoder می‌دهیم که باید در مرحله قبل خروجی می‌داد و به عنوان اولین ورودی (قبل از اولین کلمه جمله) بهش یک توکن به اسم SOS (توکنی برای start-of-sequence) می‌دهیم و جمله مبدا را هم برعکس می‌کنیم که اولین کلمه‌ی جمله آخرین ورودی به encoder باشه. چرا؟ به صورت معمول این برعکس کردن انجام نمی‌شه و پس از مدتی عملکرد ضعیف این شبکه‌ها، این ایده به ذهن محققین رسید که جمله ورودی را برعکس به encoder بدن. این باعث می‌شه که کلمات اول جمله‌ی اول فاصله کم‌تری با کلمات اول جمله‌ی دوم داشته باشه. حالا این ریسک «فاصله کم‌تر» می‌تونه باعث تولیدشدن بهتر کلمات اول جمله مقصد بشه و این امید هست که در ادامه هم جمله مقصد بهتر تولید بشه.مشکلمشکل مسیر طولانیه. مسیری که مثلا کلمه‌ی انگلیسی milk در تصویر بالا باید طی کنه تا برسه به کلمه‌ی فرانسوری lait. یعنی از اولین encoder تا آخرین decoder. خب مشکل چیه؟ مشکل اینه که بردار ساخته شده برای کلمه milk تمام این مسیر باید کامل و سالم منتقل شه بدون اینکه احتمالا استفاده‌ای ازش بشه و همینطور باید گرادیان تمام این مسیر را هم برگرده. خب نمیشه این مسیر را کوتاه‌تر بکنیم؟ چرا می‌شه. اینجاست که «مکانیزم توجه» برمی‌خیزد و همه چیز را شخم می‌زند. ایده‌ی اصلی «مکانیزم توجه» را در پست بعدی می‌نویسیم.همونطور که گفتم، حالا قسمت دوم این رشته پست با نام داستان ترنسفورمرها (۲): attention برمی‌خیزد! و قسمت سوم این رشته پست با نام داستان ترنسفورمرها (۳): توجه و دیگر هیچ! منتشر شدند.منابعاین متن خلاصه‌ای از بخش‌های مرتبط در کتاب (فصل ۱۵ و ۱۶) و ویدیوی زیره. پس اگر دوست دارید خیلی خوب این مطالب را بفهمید حتما به این دوتا منبع هم مراجعه کنید.Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow: Concepts, Tools, and Techniques to Build Intelligent Systems 2nd Editionhttps://www.youtube.com/watch?v=iDulhoQ2proلایک و نظر یادتون نره. فعلا!</description>
                <category>علی اکبر بدری</category>
                <author>علی اکبر بدری</author>
                <pubDate>Mon, 15 Jun 2020 20:59:43 +0430</pubDate>
            </item>
            </channel>
</rss>