چگونه قاعده زنجیرهای سیگنالهای خطا را برای بهروزرسانی وزنهای شبکه عصبی به عقب میراند
پسانتشار (Backpropagation) شبکههای عصبی را با اجرای معکوس قاعده زنجیرهای حساب دیفرانسیل و انتگرال قرن هفدهم آموزش میدهد و دقیقاً محاسبه میکند که هر وزن منفرد چه مقدار در خطای پیشبینی نقش داشته است.
به قلم آرش رضایی
این خبر را به اشتراک بگذارید
- متخصصان یادگیری عمیق
- پسانتشار را به عنوان موتور محرک و بسیار کارآمد هوش مصنوعی مدرن میبینند.
- محققان نورومورفیک
- از غیرمحتمل بودن الگوریتم از نظر بیولوژیکی انتقاد کرده و به دنبال جایگزینهای یادگیری پیشرو هستند.
- معماران سختافزار
- بر کاهش گلوگاههای عظیم حافظه تحمیلشده توسط مسیر پسرو تمرکز میکنند.
دیدگاههایی که این گزارش پوشش نداده
- متخصصان اخلاق هوش مصنوعی
- مدافعان حریم خصوصی دادهها
یک شبکه عصبی با انجام یک پیشبینی، اندازهگیری میزان اشتباه آن و ارسال آن خطا به سمت عقب از طریق لایههای خود برای تنظیم هر اتصال، یاد میگیرد. این کار از طریق پسانتشار (backpropagation) انجام میشود؛ الگوریتمی که اساساً همان قاعده زنجیرهای حساب دیفرانسیل و انتگرال قرن هفدهم است که به صورت معکوس اعمال میشود تا دقیقاً محاسبه کند هر وزن منفرد چقدر در اشتباه نهایی نقش داشته است. [1][4] هنگامی که یک مدل خروجی تولید میکند، در حال اجرای یک تابع ریاضی مرکب و عظیم است. برای اصلاح یک خطا، سیستم باید آن تابع را از هم باز کند تا تقصیر را به پارامترهای خاصی نسبت دهد. با محاسبه گرادیان تابع زیان (loss function) از خروجی به سمت ورودی، پسانتشار جهت و اندازه دقیق مورد نیاز برای بهروزرسانی هر وزن را فراهم میکند. [5][1][4][5]
برای درک اینکه چگونه خطا به سمت عقب حرکت میکند، لازم است نحوه حرکت دادهها به سمت جلو را ترسیم کنیم. یک شبکه عصبی به عنوان یک گراف محاسباتی ساختار یافته است - شبکهای از گرهها که در آن هر گره نشاندهنده یک عملیات ریاضی است. [2] در طول مسیر پیشرو (forward pass)، دادههای ورودی، مانند مقادیر عددی پیکسلهای یک تصویر، وارد اولین لایه از گرهها میشوند. هر اتصال بین گرهها دارای وزن خاصی است که در مقدار ورودی ضرب میشود. سپس گره این ورودیهای وزندار را جمع میکند، یک عبارت سوگیری (bias) به آن اضافه میکند و نتیجه را از یک تابع فعالسازی (activation function) عبور میدهد. [5][2][5]
این تابع فعالسازی، غیرخطی بودن را به سیستم معرفی میکند و به شبکه اجازه میدهد تا به جای کشیدن خطوط مستقیم، توزیعهای پیچیده دادههای دنیای واقعی را مدلسازی کند. [4] خروجی یک لایه به ورودی لایه بعدی تبدیل میشود و در گراف محاسباتی به صورت آبشاری پیش میرود تا زمانی که لایه نهایی یک پیشبینی تولید کند. در این مرحله، وزنهای شبکه کاملاً ثابت هستند. مسیر پیشرو صرفاً محاسبه وضعیت فعلی است؛ این مسیر نه ساختار داخلی شبکه را تغییر میدهد و نه دقت آن را بهبود میبخشد. [1][1][4]
پس از تولید پیشبینی، سیستم دقت آن را با استفاده از یک تابع زیان ارزیابی میکند. این فرمول ریاضی فاصله بین خروجی شبکه و پاسخ واقعی (ground-truth) ارائهشده در دادههای آموزشی را اندازهگیری میکند. [4] به عنوان مثال، یک تابع هزینه درجه دوم، مجذور تفاوت بین مقادیر پیشبینیشده و هدف را محاسبه میکند و کل عملکرد شبکه در آن ورودی خاص را در یک عدد اسکالر واحد خلاصه میکند. [5] این زیان اسکالر نشاندهنده کل خطا است. هدف از آموزش به حداقل رساندن این عدد است، اما انجام این کار مستلزم دانستن دقیق این موضوع است که کدام یک از میلیونها وزن شبکه مسئول این خطا هستند. [4][4][5]
اینجاست که قاعده زنجیرهای حساب دیفرانسیل و انتگرال به موتور محرک هوش مصنوعی تبدیل میشود. قاعده زنجیرهای که توسط گوتفرید ویلهلم لایبنیتس در سال ۱۶۷۶ فرمولبندی شد، فرمولی برای محاسبه مشتق توابع مرکب است - توابعی که در داخل توابع دیگر قرار گرفتهاند. [3] از آنجا که یک شبکه عصبی اساساً یک سری طولانی از معادلات تودرتو است، قاعده زنجیرهای به سیستم اجازه میدهد تا مشتق تابع زیان کلی را نسبت به هر وزن منفرد محاسبه کند. [4][3][4]
در یک سناریوی ساده و تکمتغیره، اگر یک تابع مرکب به صورت f(g(x)) تعریف شود، قاعده زنجیرهای بیان میکند که مشتق آن برابر است با مشتق تابع بیرونی ضرب در مشتق تابع درونی. [3] با این حال، شبکههای عصبی به قاعده زنجیرهای چندمتغیره نیاز دارند. یک وزن منفرد در یک لایه اولیه بر خروجی نورون خاص خود تأثیر میگذارد، که سپس به دهها یا صدها نورون در لایه بعدی وارد میشود و هر یک از آنها نیز به لایه بعدی متصل میشوند. [2] قاعده زنجیرهای چندمتغیره، گرادیانها را در تمام این مسیرهای واگرا جمع میکند تا تأثیر کل آن وزن منفرد بر زیان نهایی را محاسبه کند. [5][2][3][5]
پسانتشار این قاعده زنجیرهای چندمتغیره را در یک ترتیب خاص و بسیار اقتصادی به نام تمایز خودکار حالت معکوس (reverse-mode automatic differentiation) اجرا میکند. [1] به جای محاسبه اینکه چگونه تغییر در یک وزن به سمت جلو حرکت میکند تا بر خروجی تأثیر بگذارد - که برای هر پارامتر منفرد به یک مسیر محاسباتی جداگانه نیاز دارد - الگوریتم از همان زیان اسکالر واحد شروع کرده و به سمت عقب کار میکند. [5] ابتدا گرادیان زیان را نسبت به خروجیهای لایه نهایی محاسبه میکند. سپس، از آن مقادیر برای محاسبه گرادیانهای وزنهای آن لایه استفاده میکند و سیگنال خطا را به لایه پنهان قبلی برمیگرداند. [5][1][5]
پسانتشار این قاعده زنجیرهای چندمتغیره را در یک ترتیب خاص و بسیار اقتصادی به نام تمایز خودکار حالت معکوس (reverse-mode automatic differentiation) اجرا میکند.
این جریان رو به عقب سیگنالهای خطا، ویژگی بارز این الگوریتم است که در مقالهای در اکتبر ۱۹۸۶ توسط دیوید روملهارت، جفری هینتون و رونالد ویلیامز با عنوان «یادگیری بازنماییها از طریق پسانتشار خطاها» به شهرت رسید. [4] در حالی که حساب دیفرانسیل و انتگرال زیربنایی آن قرنها وجود داشت، مقاله آنها نشان داد که اعمال سیستماتیک آن در شبکههای چندلایه به لایههای پنهان اجازه میدهد تا بازنماییهای داخلی مفیدی از دادهها را بیاموزند. [5] با حرکت از راست به چپ در گراف محاسباتی شبکه، پسانتشار از مشتقات میانی مجدداً استفاده میکند و آموزش شبکههای عمیق را از نظر محاسباتی امکانپذیر میسازد. [1][1][4][5]
هنگام محاسبه گرادیان برای یک وزن در یک لایه اولیه، الگوریتم نیازی به محاسبه مجدد کل زنجیره مشتقات تا خروجی ندارد. این الگوریتم به سادگی مشتق محلی آن وزن خاص را در سیگنال خطایی که قبلاً محاسبه شده و از لایههای بلافاصله بالاتر به پایین منتقل شده است، ضرب میکند. [2] این ویژگی بازگشتی به این معنی است که سیگنال خطا به عنوان یک پیامرسان عمل میکند و اطلاعات انباشتهشده گرادیان را به سمت عقب از طریق اتصالات شبکه حمل میکند. [5][2][5]
یکی از اجزای حیاتی این محاسبه مشتق محلی، مشتق خود تابع فعالسازی است. در طول مسیر پسرو (backward pass)، سیگنال خطایی که به یک نورون جریان مییابد، در مشتق تابع فعالسازی آن که در مقدار دقیق محاسبهشده در طول مسیر پیشرو ارزیابی شده است، ضرب میشود. [2] برای فعالسازی واحد خطی یکسوشده (ReLU)، این مشتق بسیار ساده است: اگر ورودی پیشرو مثبت بود، مقدار آن ۱.۰ و اگر منفی بود، ۰.۰ است. [4] این مانند یک دروازه عمل میکند و به سیگنال خطا اجازه میدهد تا از نورونهای فعال عبور کند در حالی که آن را به طور کامل از نورونهای غیرفعال مسدود میکند. [1][1][2][4]
در چارچوبهای مدرن یادگیری عمیق، این محاسبات منفرد در سطح گره، برداری شده و به عنوان ضرب ماتریسهای عظیم اجرا میشوند. [1] سیگنالهای خطا برای یک لایه کامل به عنوان یک بردار، و وزنهای متصلکننده آن به لایه قبلی به عنوان یک ماتریس نشان داده میشوند. با ضرب ماتریس وزن در بردار خطا، سیستم خطای ورودی برای لایه قبلی را در یک عملیات واحد محاسبه میکند. [5] این فرآیند به شدت به ضرب هادامارد (Hadamard product)، یک ضرب عنصر به عنصر بردارها متکی است که سیگنالهای خطا را با نورونهای خاصی که آنها را تولید کردهاند، همتراز میکند. [5][1][5]
کارایی محاسباتی این رویکرد حالت معکوس، بستر ریاضی شکوفایی هوش مصنوعی مولد است. در یک مدل زبانی بزرگ مدرن با ۱۰۰ میلیارد پارامتر، تمایز حالت پیشرو به ۱۰۰ میلیارد مسیر پیشروی جداگانه برای محاسبه گرادیان کامل برای یک نمونه آموزشی واحد نیاز دارد. [1] پسانتشار، گرادیان را برای تمام ۱۰۰ میلیارد پارامتر به طور همزمان در یک حرکت رفت و برگشت به عقب محاسبه میکند. [5] هزینه محاسباتی این مسیر پسرو تقریباً دو برابر مسیر پیشرو است، به این معنی که سیستم میتواند خطا را ارزیابی کرده و بهروزرسانیهای لازم برای هر وزن را با سرعت قابلتوجهی محاسبه کند. [2][1][2][5]
هنگامی که مسیر پسرو گرادیان کامل را ارائه میدهد - یک تانسور عظیم حاوی مشتق جزئی برای هر وزن و سوگیری - یک الگوریتم بهینهسازی کنترل را در دست میگیرد. کاهش گرادیان (Gradient descent)، یا یک نوع پیشرفتهتر مانند Adam، از این مشتقات برای بهروزرسانی پارامترها استفاده میکند. [1] گرادیان به جهت تندترین افزایش خطا اشاره میکند، بنابراین بهینهساز وزنها را دقیقاً در جهت مخالف تنظیم میکند که توسط یک ابرپارامتر (hyperparameter) به نام نرخ یادگیری (learning rate) مقیاسبندی شده است. [4] این چرخه شامل مسیر پیشرو، محاسبه زیان، مسیر پسرو و بهروزرسانی وزن میلیونها بار در مجموعه دادههای وسیع تکرار میشود تا زمانی که شبکه همگرا شود. [5][1][4][5]
با وجود ظرافت ریاضی، پسانتشار آسیبپذیریهای ساختاری خاصی را به شبکههای عمیق وارد میکند. از آنجا که این الگوریتم بر ضرب مداوم مشتقات متکی است، شبکههایی که از توابع فعالسازی خاصی استفاده میکنند ممکن است از مشکل محو شدن گرادیان (vanishing gradient) رنج ببرند. [5] مشتق تابع فعالسازی کلاسیک سیگموئید دارای حداکثر مقدار ۰.۲۵ است. هنگامی که پسانتشار زنجیرهای از این مشتقات را در ده یا بیست لایه ضرب میکند، سیگنال خطا به طور تصاعدی کوچک میشود. تا زمانی که به لایههای اولیه برسد، گرادیان به صفر نزدیک میشود و عملاً روند یادگیری برای آن وزنها را متوقف میکند. [4][4][5]
علاوه بر این، الگوریتم بار حافظه عظیمی را بر سختافزار تحمیل میکند. برای محاسبه مشتقات محلی در طول مسیر پسرو، سیستم باید مقادیر فعالسازی میانی تولیدشده در طول مسیر پیشرو را ذخیره کند. [2] در یک مدل زبانی بزرگ که هزاران توکن را پردازش میکند، این حافظه فعالسازی میتواند به راحتی از ظرفیت یک پردازنده گرافیکی (GPU) واحد فراتر رود و برای جلوگیری از خطاهای کمبود حافظه، به راهحلهای مهندسی پیچیدهای مانند چکپوینت گرادیان (gradient checkpointing) - جایی که مقادیر میانی دور ریخته شده و در لحظه دوباره محاسبه میشوند - نیاز دارد. [1][1][2]
در حالی که محققان به کاوش در جایگزینهای قابلقبول بیولوژیکی و الگوریتمهای یادگیری پیشرو که نیازی به مسیر پسروی سراسری ندارند ادامه میدهند، پسانتشار همچنان پایه و اساس بلامنازع صنعت هوش مصنوعی است. [4] همانطور که مایکل نیلسن در متن بنیادین خود در این باره اشاره میکند، این الگوریتم کاری بیش از آموزش مدلها انجام میدهد؛ بلکه «بینشهای دقیقی در مورد اینکه چگونه تغییر وزنها و سوگیریها رفتار کلی شبکه را تغییر میدهد» ارائه میکند. [5] با اعمال سیستماتیک یک قاعده حساب دیفرانسیل و انتگرال ۳۰۰ ساله بر روی سیلیکونهای مدرن، پسانتشار هدف انتزاعی هوش مصنوعی را به یک مسئله بهینهسازی قابل حل تبدیل میکند. [1][5][1][4][5]
نکات کلیدی
- پسانتشار الگوریتمی است که به شبکههای عصبی اجازه میدهد با محاسبه میزان مشارکت هر وزن در یک خطا، یاد بگیرند.
- این الگوریتم کاربرد مستقیم قاعده زنجیرهای حساب دیفرانسیل و انتگرال قرن هفدهم است که به صورت معکوس از خروجی به ورودی اجرا میشود.
- با استفاده مجدد از مشتقات میانی، پسانتشار گرادیان را برای میلیاردها پارامتر به طور همزمان در یک حرکت رفت و برگشت به عقب محاسبه میکند.
- این فرآیند نیازمند ذخیره فعالسازیهای میانی در حافظه است که یک گلوگاه محاسباتی عظیم برای مدلهای زبانی بزرگ مدرن ایجاد میکند.
- با وجود غیرمحتمل بودن از نظر بیولوژیکی و سربار حافظه، پسانتشار همچنان پایه و اساس ریاضی بلامنازع شکوفایی هوش مصنوعی مولد است.
اصطلاحات کلیدی
- مسیر پیشرو
- مرحله اولیهای که در آن دادههای ورودی از طریق لایههای شبکه عصبی حرکت میکنند تا یک پیشبینی تولید کنند.
- تابع زیان
- یک فرمول ریاضی که تفاوت بین پیشبینی شبکه و پاسخ صحیح را محاسبه میکند.
- گرادیان
- برداری از مشتقات که جهت و اندازهای را نشان میدهد که هر وزن باید برای کاهش خطا تنظیم شود.
- تابع فعالسازی
- یک دروازه ریاضی در یک نورون مصنوعی که تعیین میکند آیا نورون باید سیگنال خود را به لایه بعدی منتقل کند و با چه قدرتی.
- تمایز حالت معکوس
- روشی برای محاسبه مشتقات با شروع از خروجی نهایی و کار به سمت عقب، که برای توابعی با ورودیهای زیاد و یک خروجی بسیار کارآمد است.
منابع
[1]Wikipediaمحققان نورومورفیکBackpropagation
مطالعه در Wikipedia →
[2]CS231nمعماران سختافزارSection 2 Backprop
مطالعه در CS231n →
[3]MachineLearningMastery.comمتخصصان یادگیری عمیقThe Chain Rule of Calculus for Univariate and Multivariate Functions
مطالعه در MachineLearningMastery.com →
[4]IBMمتخصصان یادگیری عمیقWhat is backpropagation?
مطالعه در IBM →
[5]Neural Networks and Deep Learningمتخصصان یادگیری عمیقHow the backpropagation algorithm works
مطالعه در Neural Networks and Deep Learning →
[6]تیم سردبیری کوهستانتحلیل تیم سردبیری کوهستان
مطالعه در تیم سردبیری کوهستان →
نظرات
بیشتر در هوش مصنوعی
مشاهده همه →یادگیریزدایی ماشینی
چگونه «یادگیریزدایی ماشینی» هوش مصنوعی را وادار به فراموشی میکند
5 منبع
محاسبات در حافظه
چگونه معماریهای «پردازش در حافظه» از تنگنای فون نویمان در شتابدهندههای هوش مصنوعی عبور میکنند
5 منبع
معماری دیفیوژن
چگونه معماری یو-نت (U-Net) نویز را در فرآیند دیفیوژن معکوس پیشبینی میکند
9 منبع
جدایی فناوری
چین به متا دستور داد تا خرید ۲ میلیارد دلاری استارتاپ هوش مصنوعی «مانوس» را به دلیل امنیت ملی لغو کند
5 منبع
هر زاویه. هر روز.
دریافت هوش مصنوعی اخبار همراه با پوشش کامل منابع و تحلیل دیدگاهها، مستقیم در صندوق ورودی شما.





