چگونه قاعده زنجیرهای سیگنالهای خطا را برای بهروزرسانی وزنهای شبکه عصبی به عقب میراند
پسانتشار (Backpropagation) شبکههای عصبی را با اجرای معکوس قاعده زنجیرهای حساب دیفرانسیل و انتگرال قرن هفدهم آموزش میدهد و دقیقاً محاسبه میکند که هر وزن منفرد چه مقدار در خطای پیشبینی نقش داشته است.
به قلم آرش رضایی
این خبر را به اشتراک بگذارید
بهطور خلاصه
- پسانتشار الگوریتمی است که به شبکههای عصبی اجازه میدهد با محاسبه میزان مشارکت هر وزن در یک خطا، یاد بگیرند.
- این الگوریتم کاربرد مستقیم قاعده زنجیرهای حساب دیفرانسیل و انتگرال قرن هفدهم است که به صورت معکوس از خروجی به ورودی اجرا میشود.
- با استفاده مجدد از مشتقات میانی، پسانتشار گرادیان را برای میلیاردها پارامتر به طور همزمان در یک حرکت رفت و برگشت به عقب محاسبه میکند.
یک شبکه عصبی با انجام یک پیشبینی، اندازهگیری میزان اشتباه آن و ارسال آن خطا به سمت عقب از طریق لایههای خود برای تنظیم هر اتصال، یاد میگیرد. این کار از طریق پسانتشار (backpropagation) انجام میشود؛ الگوریتمی که اساساً همان قاعده زنجیرهای حساب دیفرانسیل و انتگرال قرن هفدهم است که به صورت معکوس اعمال میشود تا دقیقاً محاسبه کند هر وزن منفرد چقدر در اشتباه نهایی نقش داشته است.
هنگامی که یک مدل خروجی تولید میکند، در حال اجرای یک تابع ریاضی مرکب و عظیم است. برای اصلاح یک خطا، سیستم باید آن تابع را از هم باز کند تا تقصیر را به پارامترهای خاصی نسبت دهد. با محاسبه گرادیان تابع زیان (loss function) از خروجی به سمت ورودی، پسانتشار جهت و اندازه دقیق مورد نیاز برای بهروزرسانی هر وزن را فراهم میکند.[1][4][5]
برای درک اینکه چگونه خطا به سمت عقب حرکت میکند، لازم است نحوه حرکت دادهها به سمت جلو را ترسیم کنیم. یک شبکه عصبی به عنوان یک گراف محاسباتی ساختار یافته است - شبکهای از گرهها که در آن هر گره نشاندهنده یک عملیات ریاضی است.
در طول مسیر پیشرو (forward pass)، دادههای ورودی، مانند مقادیر عددی پیکسلهای یک تصویر، وارد اولین لایه از گرهها میشوند. هر اتصال بین گرهها دارای وزن خاصی است که در مقدار ورودی ضرب میشود. سپس گره این ورودیهای وزندار را جمع میکند، یک عبارت سوگیری (bias) به آن اضافه میکند و نتیجه را از یک تابع فعالسازی (activation function) عبور میدهد.[2][5]
این تابع فعالسازی، غیرخطی بودن را به سیستم معرفی میکند و به شبکه اجازه میدهد تا به جای کشیدن خطوط مستقیم، توزیعهای پیچیده دادههای دنیای واقعی را مدلسازی کند. خروجی یک لایه به ورودی لایه بعدی تبدیل میشود و در گراف محاسباتی به صورت آبشاری پیش میرود تا زمانی که لایه نهایی یک پیشبینی تولید کند. در این مرحله، وزنهای شبکه کاملاً ثابت هستند. مسیر پیشرو صرفاً محاسبه وضعیت فعلی است؛ این مسیر نه ساختار داخلی شبکه را تغییر میدهد و نه دقت آن را بهبود میبخشد.[1][4]
پس از تولید پیشبینی، سیستم دقت آن را با استفاده از یک تابع زیان ارزیابی میکند. این فرمول ریاضی فاصله بین خروجی شبکه و پاسخ واقعی (ground-truth) ارائهشده در دادههای آموزشی را اندازهگیری میکند. به عنوان مثال، یک تابع هزینه درجه دوم، مجذور تفاوت بین مقادیر پیشبینیشده و هدف را محاسبه میکند و کل عملکرد شبکه در آن ورودی خاص را در یک عدد اسکالر واحد خلاصه میکند.
این زیان اسکالر نشاندهنده کل خطا است. هدف از آموزش به حداقل رساندن این عدد است، اما انجام این کار مستلزم دانستن دقیق این موضوع است که کدام یک از میلیونها وزن شبکه مسئول این خطا هستند.[4][5]
اینجاست که قاعده زنجیرهای حساب دیفرانسیل و انتگرال به موتور محرک هوش مصنوعی تبدیل میشود. قاعده زنجیرهای که توسط گوتفرید ویلهلم لایبنیتس در سال ۱۶۷۶ فرمولبندی شد، فرمولی برای محاسبه مشتق توابع مرکب است - توابعی که در داخل توابع دیگر قرار گرفتهاند. از آنجا که یک شبکه عصبی اساساً یک سری طولانی از معادلات تودرتو است، قاعده زنجیرهای به سیستم اجازه میدهد تا مشتق تابع زیان کلی را نسبت به هر وزن منفرد محاسبه کند.[3][4]
در یک سناریوی ساده و تکمتغیره، اگر یک تابع مرکب به صورت f(g(x)) تعریف شود، قاعده زنجیرهای بیان میکند که مشتق آن برابر است با مشتق تابع بیرونی ضرب در مشتق تابع درونی. با این حال، شبکههای عصبی به قاعده زنجیرهای چندمتغیره نیاز دارند.
یک وزن منفرد در یک لایه اولیه بر خروجی نورون خاص خود تأثیر میگذارد، که سپس به دهها یا صدها نورون در لایه بعدی وارد میشود و هر یک از آنها نیز به لایه بعدی متصل میشوند. قاعده زنجیرهای چندمتغیره، گرادیانها را در تمام این مسیرهای واگرا جمع میکند تا تأثیر کل آن وزن منفرد بر زیان نهایی را محاسبه کند.[2][3][5]
پسانتشار این قاعده زنجیرهای چندمتغیره را در یک ترتیب خاص و بسیار اقتصادی به نام تمایز خودکار حالت معکوس (reverse-mode automatic differentiation) اجرا میکند. به جای محاسبه اینکه چگونه تغییر در یک وزن به سمت جلو حرکت میکند تا بر خروجی تأثیر بگذارد - که برای هر پارامتر منفرد به یک مسیر محاسباتی جداگانه نیاز دارد - الگوریتم از همان زیان اسکالر واحد شروع کرده و به سمت عقب کار میکند.
ابتدا گرادیان زیان را نسبت به خروجیهای لایه نهایی محاسبه میکند. سپس، از آن مقادیر برای محاسبه گرادیانهای وزنهای آن لایه استفاده میکند و سیگنال خطا را به لایه پنهان قبلی برمیگرداند.[1][5]
این جریان رو به عقب سیگنالهای خطا، ویژگی بارز این الگوریتم است که در مقالهای در اکتبر ۱۹۸۶ توسط دیوید روملهارت، جفری هینتون و رونالد ویلیامز با عنوان «یادگیری بازنماییها از طریق پسانتشار خطاها» به شهرت رسید.
در حالی که حساب دیفرانسیل و انتگرال زیربنایی آن قرنها وجود داشت، مقاله آنها نشان داد که اعمال سیستماتیک آن در شبکههای چندلایه به لایههای پنهان اجازه میدهد تا بازنماییهای داخلی مفیدی از دادهها را بیاموزند. با حرکت از راست به چپ در گراف محاسباتی شبکه، پسانتشار از مشتقات میانی مجدداً استفاده میکند و آموزش شبکههای عمیق را از نظر محاسباتی امکانپذیر میسازد.[1][4][5]
هنگام محاسبه گرادیان برای یک وزن در یک لایه اولیه، الگوریتم نیازی به محاسبه مجدد کل زنجیره مشتقات تا خروجی ندارد. این الگوریتم به سادگی مشتق محلی آن وزن خاص را در سیگنال خطایی که قبلاً محاسبه شده و از لایههای بلافاصله بالاتر به پایین منتقل شده است، ضرب میکند. این ویژگی بازگشتی به این معنی است که سیگنال خطا به عنوان یک پیامرسان عمل میکند و اطلاعات انباشتهشده گرادیان را به سمت عقب از طریق اتصالات شبکه حمل میکند.[2][5]
یکی از اجزای حیاتی این محاسبه مشتق محلی، مشتق خود تابع فعالسازی است. در طول مسیر پسرو (backward pass)، سیگنال خطایی که به یک نورون جریان مییابد، در مشتق تابع فعالسازی آن که در مقدار دقیق محاسبهشده در طول مسیر پیشرو ارزیابی شده است، ضرب میشود.
برای فعالسازی واحد خطی یکسوشده (ReLU)، این مشتق بسیار ساده است: اگر ورودی پیشرو مثبت بود، مقدار آن ۱.۰ و اگر منفی بود، ۰.۰ است. این مانند یک دروازه عمل میکند و به سیگنال خطا اجازه میدهد تا از نورونهای فعال عبور کند در حالی که آن را به طور کامل از نورونهای غیرفعال مسدود میکند.[1][2][4]
در چارچوبهای مدرن یادگیری عمیق، این محاسبات منفرد در سطح گره، برداری شده و به عنوان ضرب ماتریسهای عظیم اجرا میشوند. سیگنالهای خطا برای یک لایه کامل به عنوان یک بردار، و وزنهای متصلکننده آن به لایه قبلی به عنوان یک ماتریس نشان داده میشوند.
با ضرب ماتریس وزن در بردار خطا، سیستم خطای ورودی برای لایه قبلی را در یک عملیات واحد محاسبه میکند. این فرآیند به شدت به ضرب هادامارد (Hadamard product)، یک ضرب عنصر به عنصر بردارها متکی است که سیگنالهای خطا را با نورونهای خاصی که آنها را تولید کردهاند، همتراز میکند.[1][5]
با ضرب ماتریس وزن در بردار خطا، سیستم خطای ورودی برای لایه قبلی را در یک عملیات واحد محاسبه میکند.
کارایی محاسباتی این رویکرد حالت معکوس، بستر ریاضی شکوفایی هوش مصنوعی مولد است. در یک مدل زبانی بزرگ مدرن با ۱۰۰ میلیارد پارامتر، تمایز حالت پیشرو به ۱۰۰ میلیارد مسیر پیشروی جداگانه برای محاسبه گرادیان کامل برای یک نمونه آموزشی واحد نیاز دارد.
پسانتشار، گرادیان را برای تمام ۱۰۰ میلیارد پارامتر به طور همزمان در یک حرکت رفت و برگشت به عقب محاسبه میکند. هزینه محاسباتی این مسیر پسرو تقریباً دو برابر مسیر پیشرو است، به این معنی که سیستم میتواند خطا را ارزیابی کرده و بهروزرسانیهای لازم برای هر وزن را با سرعت قابلتوجهی محاسبه کند.[1][2][5]
هنگامی که مسیر پسرو گرادیان کامل را ارائه میدهد - یک تانسور عظیم حاوی مشتق جزئی برای هر وزن و سوگیری - یک الگوریتم بهینهسازی کنترل را در دست میگیرد. کاهش گرادیان (Gradient descent)، یا یک نوع پیشرفتهتر مانند Adam، از این مشتقات برای بهروزرسانی پارامترها استفاده میکند.
گرادیان به جهت تندترین افزایش خطا اشاره میکند، بنابراین بهینهساز وزنها را دقیقاً در جهت مخالف تنظیم میکند که توسط یک ابرپارامتر (hyperparameter) به نام نرخ یادگیری (learning rate) مقیاسبندی شده است. این چرخه شامل مسیر پیشرو، محاسبه زیان، مسیر پسرو و بهروزرسانی وزن میلیونها بار در مجموعه دادههای وسیع تکرار میشود تا زمانی که شبکه همگرا شود.[1][4][5]
با وجود ظرافت ریاضی، پسانتشار آسیبپذیریهای ساختاری خاصی را به شبکههای عمیق وارد میکند. از آنجا که این الگوریتم بر ضرب مداوم مشتقات متکی است، شبکههایی که از توابع فعالسازی خاصی استفاده میکنند ممکن است از مشکل محو شدن گرادیان (vanishing gradient) رنج ببرند.
مشتق تابع فعالسازی کلاسیک سیگموئید دارای حداکثر مقدار ۰.۲۵ است. هنگامی که پسانتشار زنجیرهای از این مشتقات را در ده یا بیست لایه ضرب میکند، سیگنال خطا به طور تصاعدی کوچک میشود. تا زمانی که به لایههای اولیه برسد، گرادیان به صفر نزدیک میشود و عملاً روند یادگیری برای آن وزنها را متوقف میکند.[4][5]
علاوه بر این، الگوریتم بار حافظه عظیمی را بر سختافزار تحمیل میکند. برای محاسبه مشتقات محلی در طول مسیر پسرو، سیستم باید مقادیر فعالسازی میانی تولیدشده در طول مسیر پیشرو را ذخیره کند.
در یک مدل زبانی بزرگ که هزاران توکن را پردازش میکند، این حافظه فعالسازی میتواند به راحتی از ظرفیت یک پردازنده گرافیکی (GPU) واحد فراتر رود و برای جلوگیری از خطاهای کمبود حافظه، به راهحلهای مهندسی پیچیدهای مانند چکپوینت گرادیان (gradient checkpointing) - جایی که مقادیر میانی دور ریخته شده و در لحظه دوباره محاسبه میشوند - نیاز دارد.[1][2]
در حالی که محققان به کاوش در جایگزینهای قابلقبول بیولوژیکی و الگوریتمهای یادگیری پیشرو که نیازی به مسیر پسروی سراسری ندارند ادامه میدهند، پسانتشار همچنان پایه و اساس بلامنازع صنعت هوش مصنوعی است.
همانطور که مایکل نیلسن در متن بنیادین خود در این باره اشاره میکند، این الگوریتم کاری بیش از آموزش مدلها انجام میدهد؛ بلکه «بینشهای دقیقی در مورد اینکه چگونه تغییر وزنها و سوگیریها رفتار کلی شبکه را تغییر میدهد» ارائه میکند. با اعمال سیستماتیک یک قاعده حساب دیفرانسیل و انتگرال ۳۰۰ ساله بر روی سیلیکونهای مدرن، پسانتشار هدف انتزاعی هوش مصنوعی را به یک مسئله بهینهسازی قابل حل تبدیل میکند.[1][4][5]
اصطلاحات کلیدی
- مسیر پیشرو
- مرحله اولیهای که در آن دادههای ورودی از طریق لایههای شبکه عصبی حرکت میکنند تا یک پیشبینی تولید کنند.
- تابع زیان
- یک فرمول ریاضی که تفاوت بین پیشبینی شبکه و پاسخ صحیح را محاسبه میکند.
- گرادیان
- برداری از مشتقات که جهت و اندازهای را نشان میدهد که هر وزن باید برای کاهش خطا تنظیم شود.
- تابع فعالسازی
- یک دروازه ریاضی در یک نورون مصنوعی که تعیین میکند آیا نورون باید سیگنال خود را به لایه بعدی منتقل کند و با چه قدرتی.
- تمایز حالت معکوس
- روشی برای محاسبه مشتقات با شروع از خروجی نهایی و کار به سمت عقب، که برای توابعی با ورودیهای زیاد و یک خروجی بسیار کارآمد است.
پرسشهای متداول
پسانتشار به زبان ساده چیست؟
این الگوریتمی است که یک شبکه عصبی برای یادگیری از اشتباهات خود استفاده میکند. این الگوریتم خطای یک پیشبینی را اندازهگیری میکند و در شبکه به سمت عقب کار میکند تا دقیقاً محاسبه کند که هر اتصال داخلی چقدر باید تغییر کند تا پیشبینی بعدی بهبود یابد.
آیا پسانتشار همان کاهش گرادیان است؟
خیر. پسانتشار روشی است که برای محاسبه گرادیانها (جهت و اندازه تغییرات مورد نیاز) استفاده میشود. کاهش گرادیان الگوریتم بهینهسازی است که در واقع از آن گرادیانها برای بهروزرسانی وزنهای شبکه استفاده میکند.
چرا قاعده زنجیرهای در شبکههای عصبی مهم است؟
یک شبکه عصبی اساساً یک تابع ریاضی عظیم و تودرتو است. قاعده زنجیرهای حساب دیفرانسیل و انتگرال به سیستم اجازه میدهد تا این تابع را از هم باز کند و محاسبه کند که چگونه تغییر در یک وزن منفرد در اعماق شبکه بر خطای خروجی نهایی تأثیر میگذارد.
مشکل محو شدن گرادیان چیست؟
در شبکههای بسیار عمیق، ضرب مکرر مشتقات کوچک در طول مسیر پسرو میتواند باعث شود سیگنال خطا به طور تصاعدی کوچک شود. تا زمانی که سیگنال به لایههای اولیه میرسد، آنقدر کوچک است که نمیتواند وزنها را به طور موثر بهروزرسانی کند.
بررسی عمیق دیدگاهها
متخصصان یادگیری عمیق
پسانتشار را به عنوان موتور محرک و ضروری هوش مصنوعی مدرن میبینند.
برای متخصصانی که مدلهای زبانی بزرگ و سیستمهای بینایی ماشین میسازند، پسانتشار تنها روش اثباتشدهای است که قادر به مقیاسپذیری تا میلیاردها پارامتر است. آنها کارایی محاسباتی این الگوریتم - به ویژه توانایی آن در محاسبه گرادیان برای هر وزن در یک حرکت رفت و برگشت به عقب - را به عنوان بستر ریاضی شکوفایی هوش مصنوعی مولد میبینند. در حالی که این گروه به سربار حافظه آن اذعان دارند، به جای تلاش برای جایگزینی کامل الگوریتم، به راهحلهای مهندسی مانند چکپوینت گرادیان متکی هستند.
محققان نورومورفیک
از غیرمحتمل بودن الگوریتم از نظر بیولوژیکی انتقاد کرده و به دنبال جایگزین هستند.
محققانی که بر روی محاسبات الهامگرفته از مغز تمرکز دارند، اشاره میکنند که مغز انسان برای یادگیری یک مسیر پسروی سراسری انجام نمیدهد. آنها استدلال میکنند که نیاز پسانتشار به ثابت نگهداشتن وضعیت پیشرو و انتظار برای یک سیگنال خطای همگامسازیشده، از نظر بیولوژیکی غیرمحتمل و از نظر انرژی بسیار ناکارآمد است. این گروه به طور فعال در حال توسعه الگوریتمهای یادگیری پیشرو و مدلهای کدگذاری پیشبینیکننده هستند که وزنهای سیناپسی را به صورت محلی و پیوسته بهروزرسانی میکنند، به این امید که به کارایی یادگیری انسانگونه دست یابند.
معماران سختافزار
بر کاهش گلوگاههای عظیم حافظه تحمیلشده توسط مسیر پسرو تمرکز میکنند.
طراحان سیلیکون، پسانتشار را در درجه اول به عنوان یک مشکل عظیم مدیریت حافظه میبینند. از آنجا که این الگوریتم نیازمند ذخیره فعالسازیهای میانی مسیر پیشرو برای محاسبه مشتقات محلی در مراحل بعدی است، فشار عظیمی بر پهنای باند حافظه پردازنده گرافیکی وارد میکند. این گروه بر طراحی هستههای تانسور تخصصی، معماریهای حافظه با پهنای باند بالا (HBM) و آرایههای سیستولیک تمرکز دارند که به طور خاص برای مدیریت ضرب ماتریسهای عظیم و کش کردن حافظه مورد نیاز برای تمایز حالت معکوس بهینهسازی شدهاند.
- متخصصان یادگیری عمیق
- پسانتشار را به عنوان موتور محرک و بسیار کارآمد هوش مصنوعی مدرن میبینند.
- محققان نورومورفیک
- از غیرمحتمل بودن الگوریتم از نظر بیولوژیکی انتقاد کرده و به دنبال جایگزینهای یادگیری پیشرو هستند.
- معماران سختافزار
- بر کاهش گلوگاههای عظیم حافظه تحمیلشده توسط مسیر پسرو تمرکز میکنند.
دیدگاههایی که این گزارش پوشش نداده
- متخصصان اخلاق هوش مصنوعی
- مدافعان حریم خصوصی دادهها
منابع
[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]تیم سردبیری کوهستانتحلیل تیم سردبیری کوهستان
مطالعه در تیم سردبیری کوهستان →
بیشتر در هوش مصنوعی
مشاهده همه →شبکههای متخاصم مولد
چگونه یک مولد و یک متمایزگر برای خلق خروجیهای واقعگرایانه هوش مصنوعی رقابت میکنند
8 منبع
یادگیری تقویتی
چگونه معادله بلمن تابع ارزش بهینه را در یادگیری تقویتی تعریف میکند
6 منبع
پروتکل MCP در هوش مصنوعی چیست و ابزارهای توسعه چگونه به دادهها متصل میشوند؟
4 منبع
ابزارهای هوش مصنوعی چگونه کدنویسی را تغییر دادهاند و بهترین گزینهها کدامند؟
5 منبع
نظرات
هر زاویه. هر روز.
اخبار هوش مصنوعی با پوشش کامل منابع و تحلیل دیدگاهها، هر روز و رایگان.





