پس انتشار پس‌رو: مدل‌های بهبود یافته با کمترین کدنویسی

از مدل‌های زبان بزرگ (LLM) گرفته تا رباتیک و هوش مصنوعی پزشکی، یادگیری عمیق مدرن در طیف گسترده‌ای از کاربردها در تقریباً تمام صنایع بسیار مؤثر بوده است. با صرف زمان و بودجه بیشتر در تحقیقات، این روند با معماری‌های بهتر، مجموعه‌های داده بزرگتر و سخت‌افزار جدید قدرتمند ادامه خواهد داشت. با این حال، بلوک ساختمانی اساسی، نورون مصنوعی، از زمان ایجاد نمونه ریاضی اولیه خود در سال 1943 یکسان باقی مانده است. علاوه بر این، الگوریتم اساسی، پس انتشار با گرادیان کاهشی، تنها به‌روزرسانی‌هایی در تکنیک بهینه‌سازی خود از زمان اولین استفاده از آن در شبکه‌های عصبی در دهه 1980 داشته است. زمان آن فرا رسیده است که یک به‌روزرسانی دیرهنگام در اجزایی که با آن‌ها می‌سازیم و نحوه آموزش آن‌ها انجام دهیم.

در حالی که کارهایی که می‌توان با شبکه‌های عصبی انجام داد پیچیده است، نورون مصنوعی ساده است. نورون‌ها در یک شبکه، طبقه‌بندی‌کننده‌های خطی هستند. آن‌ها مجموع وزن‌دار ورودی خود را محاسبه می‌کنند و آن مقدار را از طریق یک تابع غیرخطی برای خروجی خود عبور می‌دهند. با پس انتشار، آن‌ها قادر به یادگیری برای تشخیص ویژگی‌ها هستند و تشخیص می‌دهند که یک الگوی ورودی چه زمانی ویژگی‌ای را که برای کد کردن آن یاد گرفته‌اند، نشان می‌دهد. اما به عنوان طبقه‌بندی‌کننده‌های خطی، اجتناب‌ناپذیر است که مثبت کاذب و منفی کاذب در تصمیماتی که یاد می‌گیرند، وجود داشته باشد. آیا می‌توانید هوش بیشتری را که یک شبکه عصبی می‌تواند داشته باشد تصور کنید، اگر هر نورون منفرد بتواند بداند که یک الگو چه زمانی به اشتباه طبقه‌بندی می‌شود؟ اگر یک وزن یادگیری اضافی از یک گره پیشگو در خارج از شبکه داشته باشد، که مشخص کند چه زمانی اشتباه می‌کند؟

آیا می‌توان به یک نورون در مورد الگوهایی که در آن‌ها شکست می‌خورد اطلاع داد؟
آیا می‌توان به یک نورون در مورد الگوهایی که در آن‌ها شکست می‌خورد اطلاع داد؟

این دقیقاً همان چیزی است که با پس انتشار پس‌رو اتفاق می‌افتد، اما این یک پیشگو نیست. این فرآیند در واقع بسیار ساده برای درک است و جالب‌ترین بخش این است که از علوم اعصاب واقعی الهام گرفته شده است که ما در هشت دهه پس از ایجاد اولین نورون‌های مصنوعی کشف کرده‌ایم.

یادگیری دندریت

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

یادگیری دندریت در پس انتشار پس‌رو
یادگیری دندریت در پس انتشار پس‌رو.

دو تفاوت عمده وجود دارد که دندریت‌ها را از نورون‌ها متمایز می‌کند. اولی هنگام آموزش وزن‌های ورودی آن‌ها وارد عمل می‌شود. هنگامی که دندریت‌ها ایجاد می‌شوند، هیچ اتصال خروجی ندارند، اما اتصالات ورودی وزن‌دار به همان ورودی‌های نورون مرتبط خود ایجاد می‌کنند. با این حال، به جای استفاده از گرادیان کاهشی استاندارد برای محاسبه عبارت خطای خود، از یک تابع ضرر مبتنی بر کوواریانس استفاده می‌کنند. هدف این تابع به حداکثر رساندن مقدار کوواریانس بین خروجی دندریت و خطای محاسبه شده نورون است. به عبارت دیگر، دندریت‌ها وزن‌های خود را طوری تنظیم می‌کنند که خروجی آن‌ها برای الگوهای ورودی که خطای نورون در آن‌ها زیاد است، زیاد باشد. این همان چیزی است که به آن‌ها اجازه می‌دهد تا یاد بگیرند که چگونه الگوهایی را که نقاط پرت برای تصمیم طبقه‌بندی نورون هستند، شناسایی کنند. از نظر تئوری شبیه به یادگیری خطای باقیمانده در یک ResNet است، اما برای هر نورون منفرد اعمال می‌شود.

نورون با یادگیری دندریت

یادگیری نورون در پس انتشار پس‌رو
یادگیری نورون در پس انتشار پس‌رو.

هنگامی که این وزن‌ها آموخته شدند، دندریت با افزودن یک وزن خروجی واحد از دندریت به نورون مرتبط خود به شبکه متصل می‌شود. سپس این وزن بر اساس خطای نورون به همان روشی که بقیه وزن‌های آن تنظیم می‌شوند، تنظیم می‌شود. با این حال، تفاوت دوم بین نورون‌ها و دندریت‌ها این است که پس انتشار خطا از طریق این اتصال ادامه نمی‌یابد. این بدان معناست که نورون‌ها فقط خطای نورون‌های دیگر را در تغییرات وزن خود در نظر می‌گیرند. با قرار دادن دندریت‌ها "خارج" از شبکه، هر نورون به کد کردن برای همان ویژگی‌ای که در ابتدا بود ادامه می‌دهد، در حالی که این امکان را نیز دارد که تصمیمات بهتری در مورد آن ویژگی بگیرد. نتیجه این می‌شود که توانمندسازی هر نورون، شبکه را نیز به طور کلی توانمند می‌کند.

مثال مورد استفاده

ما اخیراً یک هکاتون برگزار کردیم تا کاربران بیشتری را برای امتحان این سیستم ترغیب کنیم. برنده CTO یک شرکت مشاوره هوش مصنوعی بود که در ارائه راهکارهای هوش مصنوعی سفارشی تخصص دارد که بسیاری از آن‌ها از مدل‌های مختلف BERT برای پردازش زبان طبیعی (NLP) استفاده می‌کنند. اولین نمودار در این مقاله نتایج را نشان داد، زیرا برنده ما به طور مداوم نتایج دقت را در تمام معماری‌های مدل آزمایش شده بهبود بخشید، که از 17٪ تا 3٪ امتیاز بهبود یافته متغیر بود. علاوه بر این، معرفی دندریت‌ها به نورون‌ها امکان می‌دهد تا آنقدر هوشمندتر شوند که از ماژول‌های جدید حتی می‌توان برای ایجاد معماری‌های فشرده بدون از دست دادن دقت استفاده کرد. این کار با شروع با مدل‌های کاهش یافته انجام می‌شود که حتی با پارامترهای اضافی ناشی از افزودن دندریت‌ها، کوچکتر باقی می‌مانند. نمودار زیر نشان می‌دهد که مدل‌های مبتنی بر Deep-Summing-Network به مدل BERT-tiny می‌رسند و حتی آن را شکست می‌دهند، در حالی که تنها 11٪ پارامترهای آن را دارند.

فشرده‌سازی مدل با BERT که در هکاتون اخیر ما به دست آمده است.
فشرده‌سازی مدل با BERT که در هکاتون اخیر ما به دست آمده است. هر نقطه نشان‌دهنده افزودن یک مجموعه جدید از دندریت‌ها به نورون‌های شبکه‌ها است.

بعدش چی

پس انتشار پس‌رو با یک نصب ساده pip به عنوان یک افزودنی به PyTorch پیاده‌سازی می‌شود. می‌توان آن را در هر سیستم مبتنی بر PyTorch برای آزمایش ادغام کرد و در حال حاضر در طول آزمایش بتا رایگان است. از پس انتشار پس‌رو می‌توان برای افزایش دقت (پیش‌بینی سهام، PEFT با LoRA، بینایی کامپیوتر) و فشرده‌سازی مدل‌ها (NLP، طبقه‌بندی بیوتکنولوژی، پیش‌بینی سری‌های زمانی) استفاده کرد. برای مقالات بیشتر در مورد پیشینه، موارد استفاده و نمونه‌های کدنویسی این تکنیک جدید پیشگامانه با ما همراه باشید. در این میان، مقاله یا وب‌سایت ما را بررسی کنید. اگر می‌خواهید با تنها چند دقیقه کدنویسی به افزایش دقت تا 40٪ یا فشرده‌سازی مدل تا 90٪ دست یابید، از اینجا با API ما شروع کنید.