و در بخشهایی، این راهنما برای هر کسی که به یادگیری ماشین علاقه دارد اما نمیداند از کجا شروع کند در نظر گرفته شده است. محتوای مقالات برای مخاطبان گسترده در نظر گرفته شده است و نسبتاً سطحی خواهد بود. اما آیا کسی اهمیت می دهد؟ هرچه افراد بیشتری به یادگیری ماشین علاقه مند شوند، بهتر است.
تشخیص اشیا با استفاده از یادگیری عمیق
شاید قبلاً این کمیک معروف xkcd را دیده باشید. شوخی این است که هر کودک 3 ساله ای می تواند یک عکس از یک پرنده را تشخیص دهد، اما به دست آوردن رایانه برای انجام این کار بیش از 50 سال طول کشیده است که بهترین دانشمندان کامپیوتری در چند سال گذشته بالاخره یک عکس خوب پیدا کرده ایم. رویکرد به شناسایی شی با استفاده از شبکه های عصبی کانولوشنال عمیق... این به نظر می رسد یک دسته از کلمات ساخته شده از یک رمان فانتزی از ویلیام گیبسون، اما زمانی که ما آنها را یکی یکی تجزیه و تحلیل روشن خواهد شد.
بیایید ساده شروع کنیم
قبل از اینکه یاد بگیریم چگونه تصاویر پرندگان را تشخیص دهیم، بیایید یاد بگیریم که چگونه چیز بسیار ساده تر را تشخیص دهیم - عدد دست نویس "8".
یادگیری عمیق چیست؟ 3 مارس 2016
اکنون آنها در مورد فن آوری های مد روز یادگیری عمیق صحبت می کنند، گویی این مانا از بهشت است. اما آیا سخنرانان درک می کنند که واقعا چیست؟ اما این مفهوم هیچ تعریف رسمی ندارد و مجموعه ای از فناوری ها را متحد می کند. در این پست می خواهم تا حد امکان محبوب باشم و در واقع توضیح دهم که پشت این اصطلاح چیست، چرا اینقدر محبوب است و این فناوری ها چه چیزی به ما می دهند.
به طور خلاصه، این اصطلاح جدید (یادگیری عمیق) در مورد چگونگی جمع آوری یک انتزاع (بازنمایی) پیچیده تر و عمیق تر از یک انتزاع ساده است. علاوه بر این، حتی سادهترین انتزاعها باید توسط خود رایانه جمعآوری شوند، نه توسط یک شخص... آن ها دیگر فقط در مورد یادگیری نیست، بلکه در مورد فرا یادگیری است. به بیان تصویری، کامپیوتر باید به طور مستقل یاد بگیرد که چگونه آن را به بهترین شکل یاد بگیرد. و در واقع، اصطلاح «عمیق» دقیقاً بر همین دلالت دارد. تقریباً همیشه، این اصطلاح برای شبکه های عصبی مصنوعی به کار می رود، جایی که بیش از یک لایه پنهان استفاده می شود، بنابراین، به طور رسمی "عمیق" همچنین به معنای معماری عمیق تر شبکه عصبی است.
در اسلاید توسعه، می توانید به وضوح ببینید که یادگیری عمیق چقدر با یادگیری معمولی متفاوت است. تکرار می کنم، منحصر به فرد یادگیری عمیق این است که خود ماشین ویژگی هایی را پیدا می کند(ویژگی های کلیدی چیزی که تفکیک یک کلاس از اشیاء را آسان تر می کند) و این ویژگی ها به صورت سلسله مراتبی ساختار یافته اند: موارد پیچیده تر از موارد ساده تر تشکیل می شوند... در زیر با یک مثال به تحلیل این موضوع می پردازیم.
بیایید به مثالی از یک مشکل تشخیص تصویر نگاه کنیم: قبل از آن، آنها یک تصویر بزرگ (1024 × 768 - حدود 800000 مقادیر عددی) را در یک شبکه عصبی معمولی با یک لایه قرار دادند و کامپیوتر را تماشا کردند که به آرامی میمیرد، خفه میشد از کمبود حافظه و ناتوانی. برای درک اینکه کدام پیکسل برای تشخیص مهم است و کدام نیست. ناگفته نماند اثربخشی این روش. در اینجا معماری چنین شبکه عصبی مشترک (کم عمق) وجود دارد.
سپس، با این وجود، آنها به نحوه تشخیص علائم توسط مغز گوش دادند، و این کار را کاملاً به صورت سلسله مراتبی انجام می دهد، و ما همچنین تصمیم گرفتیم یک ساختار سلسله مراتبی را از تصاویر استخراج کنیم. برای انجام این کار، لازم بود لایههای پنهان بیشتری (لایههایی که بین ورودی و خروجی قرار دارند، به طور کلی، مراحل تبدیل اطلاعات) به شبکه عصبی اضافه شوند. اگرچه آنها تصمیم گرفتند تقریباً به محض اختراع نورون ها این کار را انجام دهند، سپس شبکه هایی با تنها یک لایه پنهان با موفقیت آموزش داده شدند. آن ها در اصل، شبکه های عمیق تقریباً به اندازه شبکه های معمولی وجود داشته اند، ما فقط نمی توانیم آنها را آموزش دهیم. چه چیزی تغییر کرده است؟
در سال 2006، چندین محقق مستقل به طور همزمان این مشکل را حل کردند (علاوه بر این، ظرفیت های سخت افزاری قبلاً به اندازه کافی توسعه یافته بودند، کارت های ویدئویی کاملاً قدرتمند ظاهر شدند). این محققین: جفری هینتون (و همکارش روسلان سالاخوتیدینوف) با تکنیک آموزش مقدماتی هر لایه از شبکه عصبی با ماشین محدود بولتزمن (این عبارات را ببخشید ...)، ایان لکون با شبکه های عصبی کانولوشن و یوشوایا. بنجیو با رمزگذارهای خودکار آبشاری. دو نفر اول بلافاصله به ترتیب توسط گوگل و فیس بوک جذب شدند. در اینجا دو سخنرانی وجود دارد: یک - هینتون، دیگری است لیاکونا، که در آن توضیح می دهند که یادگیری عمیق چیست. بهتر از آنها، کسی در مورد آن چیزی نخواهد گفت. باحاله دیگه سخنرانیاشمیدوبر در مورد توسعه یادگیری عمیق، همچنین یکی از ارکان این علم است. و هینتون همچنین یک دوره عالی در مکان نماهای نورون دارد.
شبکه های عصبی عمیق در حال حاضر چه توانایی هایی دارند؟ آنها قادر به تشخیص و توصیف اشیاء هستند، می توان گفت "درک" چیست. این در مورد تشخیص معنی است.
فقط این ویدیو را تماشا کنید که در زمان واقعی آن چیزی که دوربین می بیند را تشخیص می دهد.
همانطور که گفتم، فناوری های یادگیری عمیق مجموعه ای کامل از فناوری ها و راه حل ها هستند. من قبلاً چندین مورد از آنها را در پاراگراف بالا لیست کرده ام، مثال دیگر شبکه های تکراری است که فقط در ویدیوی بالا برای توصیف آنچه شبکه می بیند استفاده می شود. اما محبوب ترین نماینده این دسته از فناوری ها هنوز هم شبکه های عصبی کانولوشنال LaCun هستند. آنها بر اساس قیاس با اصول قشر بینایی مغز گربه ساخته شده اند، که در آن سلول های به اصطلاح ساده کشف شدند که به خطوط مستقیم در زوایای مختلف پاسخ می دهند و پیچیده هستند - واکنش آنها با فعال شدن یک گربه همراه است. مجموعه خاصی از سلول های ساده اگر چه، صادقانه بگویم، لاکان خود به سمت زیست شناسی گرایش نداشت، اما او مشکل خاصی را حل می کرد (سخنرانی های او را ببینید)، و سپس مصادف شد.
بهطور ساده، شبکههای کانولوشن شبکههایی هستند که عنصر ساختاری اصلی یادگیری، گروهی (ترکیبی) از نورونها (معمولاً یک مربع 3 × 3.10 × 10 و غیره) است و نه یک. و در هر سطح از شبکه ده ها گروه از این قبیل آموزش می بینند. شبکه ترکیبی از نورون ها را پیدا می کند که اطلاعات مربوط به تصویر را به حداکثر می رساند. در سطح اول، شبکه ابتداییترین و از نظر ساختاری سادهترین عناصر تصویر را استخراج میکند - شاید بتوان گفت، واحدهای ساختمانی: مرزها، ضربهها، بخشها، تضادها. در بالا، در حال حاضر ترکیبات پایداری از عناصر سطح اول و غیره در زنجیره وجود دارد. من می خواهم یک بار دیگر ویژگی اصلی یادگیری عمیق را برجسته کنم: شبکه ها خود این عناصر را تشکیل می دهند و تصمیم می گیرند که کدام یک از آنها مهم تر است و کدامیک نه. این مهم است، زیرا در زمینه یادگیری ماشین، ایجاد ویژگی ها کلیدی است و اکنون به مرحله ای می رویم که کامپیوتر خود یاد می گیرد که ویژگی ها را ایجاد و انتخاب کند. خود ماشین سلسله مراتب ویژگی های اطلاعاتی را مشخص می کند.
بنابراین، در فرآیند آموزش (مشاهده صدها تصویر)، شبکه کانولوشن سلسله مراتبی از ویژگی های سطوح مختلف عمق را تشکیل می دهد. در اینجا در سطح اول، آنها می توانند، به عنوان مثال، چنین عناصری (بازتاب کنتراست، زاویه، حاشیه و غیره) را برجسته کنند.
در سطح دوم، این قبلاً عنصری از عناصر سطح اول خواهد بود. در سوم - از دوم. باید درک کنید که این عکس فقط یک نمایش است. در حال حاضر در مصارف صنعتی، چنین شبکه هایی از 10 تا 30 لایه (سطح) دارند.
پس از اینکه چنین شبکه ای آموزش داده شد، می توانیم از آن برای طبقه بندی استفاده کنیم. پس از ارسال تصویر به ورودی، گروههایی از نورونهای لایه اول روی تصویر میچرخند و در مکانهایی فعال میشوند که عنصر تصویر مربوط به یک عنصر خاص وجود دارد. آن ها این شبکه تصویر را به قسمتهایی تجزیه میکند - ابتدا به خط تیره، ضربهها، زوایای شیب، سپس قسمتهای پیچیدهتر، و در پایان به این نتیجه میرسد که تصویری از این نوع ترکیب عناصر اساسی، یک چهره است.
اطلاعات بیشتر در مورد شبکه های کانولوشن -
من در مورد روندهای تجاری در یک کنفرانس بزرگ در کیف یاد گرفتم. کل فرآیند پر از بینش های شنبه است، زیرا آنها دانش و دانش جدید را از بین بردند که نتیجه آن صرف ساعت شد. 4 جریان از ایده های اضافی برای صاحبان مشاغل، مدیران برتر، بازاریابان، فروش، کارمندان و افراد ویژه در confi-boule 4 وجود دارد. یکی از سخنگویان وزارت زیرساخت، ولدیمیر اوملیان، که در مورد توسعه گالوس ها، جاده ها و فرودگاه های نوسازی شده صحبت کرد.
روز بخیر برای همه، همکاران عزیز iOS-names، مطمئناً هر یک از شما با شبکه کار می کردید و درگیر تجزیه داده ها از JSON بودید. برای این فرآیند، مجموعه ای از کتابخانه ها، انواع ابزارهایی وجود دارد که می توانید از آنها استفاده کنید. برخی پیچیده و برخی ساده هستند. برای مدت طولانی، من صادقانه JSON را با دست تجزیه میکردم و به برخی از کتابخانههای شخص ثالث اعتماد نمیکردم، و این مزایای خود را داشت.
در 9 سپتامبر 2014، طی یک ارائه معمولی، اپل سیستم پرداخت تلفن همراه خود را معرفی کرد - Apple Pay.
با Apple Pay، کاربران iPhone 6 و iPhone 6+ و جدیدترین Apple Watch میتوانند به صورت آنلاین خرید کنند، از مزایای افزوده apple pay برای برنامههای تلفن همراه استفاده کنند و با استفاده از فناوری Near Field Communication (NFC) پرداختها را انجام دهند. برای مجوز پرداخت ها، از فناوری های Touch ID یا Face ID استفاده می شود.
فناوریها ثابت نمیمانند و فرآیندهای توسعه با آنها پیش میرود. اگر شرکتهای قبلی بر اساس مدل «آبشار» کار میکردند، اکنون، برای مثال، همه در تلاش هستند تا «اسکرام» را پیادهسازی کنند. تکامل در ارائه خدمات توسعه نرم افزار نیز در حال وقوع است. در حالی که شرکتها قبلاً توسعه کیفی را با بودجه به مشتریان ارائه میکردند، اما اکنون در تلاش هستند تا با ارائه تخصص خود، حداکثر ارزش را برای مشتری و تجارت او فراهم کنند.
در چند سال گذشته، فونتهای خوب زیادی از جمله فونتهای رایگان ظاهر شدهاند که تصمیم گرفتیم دنبالهای برای خودمان برای طراحان بنویسیم.
هر طراح مجموعهای از فونتهای مورد علاقه برای کار با آنها را دارد که عادت به کار با آنها دارد و سبک گرافیکی او را نشان میدهد. طراحان می گویند "هرگز فونت های خوب زیادی وجود ندارد"، اما اکنون می توانیم با خیال راحت شرایطی را تصور کنیم که این مجموعه فقط از فونت های رایگان تشکیل شده باشد.
هر چند وقت یکبار مدیران پروژه زمانی که سعی میکنند تعادلی بین تمام الزامات و مهلتهای مشتری و سلامت روان کل تیم پیدا کنند، خود را بین سنگ و مکان سخت میبینند؟ چند نکته را باید در نظر گرفت تا آرامش و نظم در دو طرف مسئولیت برقرار باشد؟ چگونه میدانید که مدیر خوبی هستید یا باید فوراً در همه زمینهها پیش بروید؟ چگونه می توان تشخیص داد که شما به عنوان یک PM از چه جنبه هایی عقب مانده اید و کجا یک همکار خوب و یک دختر باهوش هستید؟ این همان چیزی است که کنفرانس بعدی Code'n'Coffee درباره آن بود.
فناوری تشخیص الگو به طور فزاینده ای در زندگی روزمره ما گنجانده شده است. شرکت ها و موسسات از آن برای همه چیز از امنیت گرفته تا تحقیقات رضایت مشتری استفاده می کنند. انتظار می رود سرمایه گذاری در محصولات مبتنی بر این ویژگی تا سال 2021 به 39 میلیارد دلار افزایش یابد. در اینجا فقط چند نمونه از نحوه استفاده از تشخیص الگو در زمینه های مختلف آورده شده است.
(انتشارات منینگ).
این مقاله برای افرادی در نظر گرفته شده است که قبلاً تجربه قابل توجهی در زمینه یادگیری عمیق دارند (به عنوان مثال، کسانی که قبلاً فصل های 1-8 این کتاب را خوانده اند). دانش زیادی فرض می شود.
یادگیری عمیق: نمای هندسی
شگفت انگیزترین چیز در مورد یادگیری عمیق این است که چقدر ساده است. ده سال پیش، هیچ کس نمی توانست تصور کند که ما در مسائل ادراک ماشین با استفاده از مدل های پارامتری ساده آموزش دیده با نزول گرادیان به چه نتایج شگفت انگیزی دست خواهیم یافت. حالا معلوم می شود که ما فقط نیاز داریم به اندازه کافی بزرگمدل های پارامتریک آموزش دیده بر روی به اندازه کافی بزرگتعداد نمونه ها همانطور که فاینمن زمانی در مورد جهان گفت: سخت نیست، فقط مقدار زیادی از آن وجود دارد».در یادگیری عمیق، همه چیز یک بردار است، یعنی. نقطه v فضای هندسی... داده های ورودی مدل (می تواند متن، تصویر و غیره باشد) و اهداف آن ابتدا "بردار" می شوند، یعنی به فضای برداری اولیه در ورودی و فضای برداری هدف در خروجی ترجمه می شوند. هر لایه در یک مدل یادگیری عمیق، یک تبدیل هندسی ساده را روی دادههایی که در آن جریان دارد، انجام میدهد. با هم، زنجیره لایه مدل یک تبدیل هندسی بسیار پیچیده را ایجاد می کند که به یک سری از تغییرات ساده تقسیم می شود. این تبدیل پیچیده تلاش می کند تا فضای داده ورودی را برای هر نقطه به فضای هدف تبدیل کند. پارامترهای تبدیل توسط وزن لایهها تعیین میشوند که به طور مداوم بر اساس عملکرد مدل در حال حاضر به روز میشوند. ویژگی کلیدی تبدیل هندسی این است که باید باشد قابل تمایزیعنی باید بتوانیم از طریق گرادیان نزول به پارامترهای آن پی ببریم. به طور شهودی، این بدان معنی است که شکلگیری هندسی باید سیال و پیوسته باشد - یک محدودیت مهم.
کل فرآیند اعمال این تبدیل هندسی پیچیده بر روی دادههای ورودی را میتوان با به تصویر کشیدن شخصی که تلاش میکند یک توپ کاغذی را باز کند، به صورت سه بعدی تجسم کرد: یک توپ کاغذی مچاله شده، انواع دادههای ورودی است که مدل با آن شروع به کار میکند. هر حرکت یک فرد با یک توپ کاغذی مانند یک تبدیل هندسی ساده است که توسط یک لایه انجام می شود. یک توالی کامل از ژست های آشکار شده، دگرگونی پیچیده ای از کل مدل است. مدل های یادگیری عمیق ماشین های ریاضی برای باز کردن منیفولد درهم از داده های چند بعدی هستند.
این جادوی یادگیری عمیق است: یک مقدار را به بردارها، به فضاهای هندسی تبدیل کنید، و سپس به تدریج تحولات هندسی پیچیده ای را یاد بگیرید که یک فضا را به فضای دیگر تبدیل می کند. تنها چیزی که مورد نیاز است فضاهایی با ابعاد به اندازه کافی بزرگ برای انتقال کل محدوده روابط موجود در داده های اصلی است.
محدودیت های یادگیری عمیق
مجموعه کارهایی که می توان با این استراتژی ساده حل کرد تقریباً بی پایان است. و با این حال، بسیاری از آنها هنوز فراتر از دسترس تکنیک های یادگیری عمیق فعلی هستند - حتی با وجود حجم وسیعی از داده های حاشیه نویسی دستی موجود. برای مثال، فرض کنید که میتوانید مجموعه دادهای از صدها هزار - حتی میلیونها - توصیف انگلیسی از ویژگیهای نرمافزار نوشته شده توسط مدیران محصول را به همراه یک سال مرجع مربوطه که توسط تیمهای مهندسی برای برآورده کردن این الزامات ایجاد شده است، جمعآوری کنید. حتی با این داده ها، نمی توانید یک مدل یادگیری عمیق را با خواندن توضیحات محصول و ایجاد پایگاه کد مناسب آموزش دهید. این فقط یک نمونه در میان بسیاری است. به طور کلی، هر چیزی که نیاز به استدلال، استدلال داشته باشد - مانند برنامه نویسی یا استفاده از روش علمی، برنامه ریزی بلندمدت، دستکاری داده ها به سبک الگوریتمی - فراتر از توانایی های مدل های یادگیری عمیق است، صرف نظر از اینکه چقدر داده به آنها می دهید. حتی آموزش یک شبکه عصبی برای مرتب سازی الگوریتم فوق العاده دشوار است.دلیل آن این است که مدل یادگیری عمیق "فقط" است زنجیره ای از تبدیل های هندسی ساده و پیوستهکه یک فضای برداری را به فضای دیگر تبدیل می کند. تنها کاری که می تواند انجام دهد این است که یک مجموعه داده X را به مجموعه داده دیگری Y تبدیل کند، مشروط بر اینکه یک تبدیل مداوم احتمالی از X به Y وجود داشته باشد که قابل یادگیری باشد، و در دسترس بودن مجموعه نمونه متراکمتبدیل X: Y به عنوان داده آموزشی. بنابراین در حالی که می توان مدل یادگیری عمیق را نوعی برنامه در نظر گرفت، اما اکثر برنامه ها را نمی توان به عنوان مدل های یادگیری عمیق بیان کرد- برای اکثر مشکلات، یا شبکه عصبی عمیق با اندازه عملا مناسب وجود ندارد که مشکل را حل کند، یا اگر وجود داشته باشد، می تواند غیر قابل آموزش، یعنی تبدیل هندسی مربوطه ممکن است خیلی پیچیده باشد یا داده های مناسبی برای آموزش آن وجود نداشته باشد.
گسترش تکنیک های یادگیری عمیق موجود - افزودن لایه های بیشتر و استفاده از داده های آموزشی بیشتر - فقط می تواند به طور سطحی برخی از این مشکلات را کاهش دهد. این مشکل اساسیتر را حل نمیکند که مدلهای یادگیری عمیق در آنچه میتوانند نمایش دهند بسیار محدود هستند، و اینکه اکثر برنامهها را نمیتوان به صورت شکلگیری هندسی پیوسته چندگانه داده بیان کرد.
خطر انسانسازی مدلهای یادگیری ماشین
یکی از خطرات واقعی هوش مصنوعی مدرن، تفسیر نادرست نحوه عملکرد مدلهای یادگیری عمیق و اغراق در قابلیتهای آنهاست. یکی از ویژگیهای اساسی ذهن انسان، «الگوی روان انسان» است، یعنی تمایل ما به فرافکنی اهداف، باورها و دانش بر روی چیزهای اطرافمان. کشیدن چهره ای خندان روی سنگ به طور ناگهانی ما را "خوشحال" می کند - از نظر ذهنی. برای یادگیری عمیق، این بدان معناست که، برای مثال، اگر بتوانیم مدلی را کم و بیش با موفقیت آموزش دهیم تا توضیحات متنی از تصاویر را تولید کند، آنگاه ما تمایل داریم فکر کنیم که مدل، محتوای تصاویر و همچنین محتوای تولید شده را "درک" می کند. توضیحات سپس زمانی که به دلیل انحراف کوچک از مجموعه تصاویر ارائه شده در داده های آموزشی، مدل شروع به تولید توصیفات کاملاً پوچ می کند، بسیار شگفت زده می شویم.به ویژه، این بیشتر در "مثال های متخاصم"، یعنی نمونه هایی از داده های ورودی شبکه یادگیری عمیق، که مخصوصاً برای طبقه بندی اشتباه انتخاب شده اند، برجسته تر است. قبلاً میدانید که میتوانید در فضای ورودی برای ایجاد الگوهایی که فعالسازی را به حداکثر میرسانند، انجام دهید، به عنوان مثال، یک فیلتر شبکه عصبی کانولوشنال خاص - این هسته تکنیک رندر است که در فصل 5 به آن پرداختیم (توجه: یادگیری عمیق با پایتون کتابها)، درست مانند الگوریتم Deep Dream از فصل 8. به روشی مشابه، از طریق شیب صعود، میتوانید اندازه تصویر را کمی تغییر دهید تا پیشبینی کلاس را برای یک کلاس مشخص به حداکثر برسانید. اگر از یک پاندا عکس بگیریم و یک گرادیان گیبون اضافه کنیم، میتوانیم شبکه عصبی را مجبور کنیم که آن پاندا را به عنوان گیبون طبقهبندی کند. این هم شکنندگی این مدلها را نشان میدهد و هم تفاوت عمیق بین دگرگونی ورود به خروج که آن را هدایت میکند و ادراک انسانی ما.
به طور کلی، مدل های یادگیری عمیق فاقد درک ورودی ها هستند، حداقل نه به معنای انسانی. درک خود ما از تصاویر، صداها، زبان مبتنی بر تجربه حسی حرکتی ما به عنوان انسان - به عنوان موجودات زمینی مادی است. مدلهای یادگیری ماشینی به این تجربه دسترسی ندارند و بنابراین نمیتوانند ورودیهای ما را به روشی مشابه انسان «درک» کنند. با حاشیهنویسی تعداد زیادی مثال آموزشی برای مدلهای خود، آنها را مجبور میکنیم تا یک تبدیل هندسی را بیاموزند که دادهها را به مفاهیم انسانی برای آن مجموعه خاص از نمونهها میآورد، اما این تبدیل فقط یک طرح سادهشده از مدل اصلی ذهن ما است. بر اساس تجربه ما به عنوان عوامل بدن مانند یک انعکاس ضعیف در آینه هستند.
به عنوان یک متخصص در یادگیری ماشین، همیشه این را در ذهن داشته باشید، و هرگز در دام این باور نیفتید که شبکههای عصبی وظیفهای را که انجام میدهند درک میکنند - آنها این کار را نمیکنند، حداقل نه به روشی که برای ما منطقی است. آنها در یک کار متفاوت و بسیار محدودتر از کاری که ما میخواهیم به آنها آموزش دهیم آموزش دیدند: تبدیل نمونههای آموزشی ورودی به نمونههای آموزشی هدف، نقطه به نقطه. هر چیزی را به آنها نشان دهید که با داده های آموزشی متفاوت است و آنها به پوچ ترین روش می شکنند.
تعمیم محلی در مقابل تعمیم حدی
به نظر می رسد تفاوت اساسی بین شکل گیری مستقیم هندسی ورود به خروج که مدل های یادگیری عمیق انجام می دهند و نحوه تفکر و یادگیری افراد وجود دارد. این فقط این نیست که افراد از تجربیات بدنی خود یاد می گیرند و نه از طریق پردازش مجموعه ای از الگوهای آموزشی. علاوه بر تفاوت در فرآیندهای یادگیری، تفاوت های اساسی در ماهیت باورهای اساسی وجود دارد.انسان ها قادرند خیلی بیشتر از تبدیل یک محرک فوری به یک پاسخ فوری، مانند یک شبکه عصبی یا شاید یک حشره. افراد در آگاهی خود مدلهای پیچیده و انتزاعی از وضعیت فعلی، خود، سایر افراد را حفظ میکنند و میتوانند از این مدلها برای پیشبینی گزینههای احتمالی مختلف برای آینده و انجام برنامهریزی بلندمدت استفاده کنند. آنها می توانند مفاهیم شناخته شده را با هم ترکیب کنند تا چیزهایی را ارائه دهند که قبلاً نمی دانستند - مثلاً کشیدن یک اسب با شلوار جین، یا به تصویر کشیدن کارهایی که در صورت برنده شدن در لاتاری انجام می دادند. توانایی تفکر فرضی، گسترش مدل فضای ذهنی خود بسیار فراتر از آنچه که مستقیماً تجربه کرده ایم، یعنی توانایی انجام انتزاعاتو استدلالشاید ویژگی تعیین کننده شناخت انسان باشد. من این را "تعمیم نهایی" می نامم: توانایی انطباق با موقعیت های جدید و تجربه نشده با استفاده از داده های بسیار کم یا اصلاً بدون داده.
این در تضاد کامل با کاری است که شبکههای یادگیری عمیق انجام میدهند، که من آن را «تعمیم محلی» مینامم: تبدیل ورودیها به خروجیها به سرعت بیمعنی میشود، اگر ورودیهای جدید حتی اندکی با آنچه که در طول آموزش با آن مواجه میشوند متفاوت باشند. به عنوان مثال، مشکل یادگیری پارامترهای پرتاب مناسب برای فرود موشک روی ماه را در نظر بگیرید. اگر از یک شبکه عصبی برای این کار استفاده کرده اید، آن را با معلم یا با تقویت کننده آموزش می دهید، باید هزاران یا میلیون ها مسیر پرواز به آن بدهید، یعنی باید صادر کنید. مجموعه ای متراکم از نمونه هادر فضای ارزش های ورودی به منظور یادگیری یک تبدیل قابل اعتماد از فضای ارزش های ورودی به فضای ارزش های خروجی. در مقابل، انسانها میتوانند از قدرت انتزاع برای ایجاد مدلهای فیزیکی - علم موشک - استفاده کنند و به راهحل دقیقی دست پیدا کنند که فقط در چند تلاش موشک را به ماه برساند. به همین ترتیب، اگر یک شبکه عصبی برای کنترل بدن انسان ایجاد کرده باشید و بخواهید یاد بگیرد که چگونه با خیال راحت در شهر راه برود بدون اینکه با ماشین برخورد کنید، شبکه باید هزاران بار در موقعیت های مختلف بمیرد تا به این نتیجه برسد که ماشین ها خطرناک هستند. رفتار مناسب برای اجتناب از آنها. اگر او را به شهر جدیدی منتقل کنید، شبکه باید بیشتر چیزهایی را که میدانست دوباره بیاموزد. از سوی دیگر، انسانها میتوانند رفتارهای ایمن را بدون مرگ بیاموزند - باز هم به لطف قدرت مدلسازی انتزاعی موقعیتهای فرضی.
بنابراین، با وجود پیشرفت ما در درک ماشین، ما هنوز با هوش مصنوعی سطح انسانی بسیار فاصله داریم: مدل های ما فقط می توانند اجرا شوند. تعمیم محلیانطباق با موقعیت های جدید، که باید بسیار نزدیک به داده های گذشته باشد، در حالی که ذهن انسان قادر به انجام آن است تعمیم نهاییبا تطبیق سریع با موقعیت های کاملا جدید یا برنامه ریزی برای آینده.
نتیجه گیری
این چیزی است که باید به خاطر بسپارید: تنها موفقیت واقعی یادگیری عمیق تا به امروز، توانایی ترجمه فضای X به فضای Y با استفاده از دگرگونی های هندسی پیوسته در زمانی که داده های مشروح انسانی زیادی وجود دارد، است. انجام این وظیفه به خوبی نشان دهنده یک دستاورد انقلابی برای کل صنعت است، اما هوش مصنوعی انسان هنوز راه درازی دارد.برای حذف برخی از این محدودیتها و رقابت با مغز انسان، باید از تحول مستقیم ورود به خروج فاصله بگیریم و به استدلالو انتزاعات... شاید بتوان مبنای مناسبی برای مدل سازی انتزاعی موقعیت ها و مفاهیم مختلف، برنامه های کامپیوتری باشد. قبلاً گفته بودیم (توجه داشته باشید: در کتاب یادگیری عمیق با پایتون) که مدل های یادگیری ماشین را می توان به عنوان "برنامه های یادگیری" تعریف کرد. در حال حاضر ما فقط می توانیم یک زیرمجموعه محدود و خاص از همه برنامه های ممکن را آموزش دهیم. اما اگر بتوانیم هر برنامه را به صورت مدولار و مکرر آموزش دهیم چه؟ بیایید ببینیم چگونه می توانیم به این موضوع برسیم.
آینده یادگیری عمیق
با توجه به اطلاعاتی که در مورد شبکه های یادگیری عمیق، محدودیت های آنها و وضعیت فعلی تحقیقات علمی داریم، آیا می توانیم پیش بینی کنیم که در میان مدت چه اتفاقی خواهد افتاد؟ در اینجا برخی از نظرات شخصی من در این مورد است. به خاطر داشته باشید که من یک توپ کریستالی برای پیشگویی ندارم، بنابراین بسیاری از آنچه که انتظار دارم ممکن است محقق نشود. این حدس و گمان مطلق است. من این پیشبینیها را به اشتراک میگذارم نه به این دلیل که انتظار دارم در آینده کاملاً محقق شوند، بلکه به این دلیل که در زمان حال جالب و قابل اجرا هستند.در سطح بالا، در اینجا زمینه های اصلی که من امیدوار کننده می دانم وجود دارد:
- مدلها به برنامههای رایانهای با هدف عمومی که بر روی لایههای اولیه بسیار غنیتر از لایههای قابل تمایز فعلی ما ساخته شدهاند، نزدیک میشوند - بنابراین ما دریافت میکنیم استدلالو انتزاعاتکه نبود آن ضعف اساسی مدل های فعلی است.
- اشکال جدیدی از یادگیری پدیدار خواهد شد که این امر را ممکن میسازد - و به مدلها اجازه میدهد از تبدیلهای ساده قابل تمایز دور شوند.
- مدلها به مشارکت کمتر توسعهدهنده نیاز دارند - این وظیفه شما نیست که دائماً دکمهها را تغییر دهید.
- استفاده مجدد سیستماتیک بیشتر از ویژگی ها و معماری های آموخته شده ظاهر خواهد شد. سیستم های فرا یادگیری مبتنی بر روال های قابل استفاده مجدد و مدولار.
پس بزن بریم.
مدل ها به عنوان برنامه
همانطور که قبلاً اشاره کردیم، توسعه تحول آفرین ضروری که می توان در یادگیری ماشین انتظار داشت، در حال دور شدن از مدل هایی است که صرفاً کار می کنند. الگو شناسیو فقط قادر به تعمیم محلی، به مدل های قادر به انتزاعاتو استدلالکه می تواند به دست آورد تعمیم نهایی... همه برنامههای مبتنی بر استدلال پایه فعلی هوش مصنوعی توسط برنامهنویسان انسانی کدگذاری میشوند: برای مثال، برنامههایی که بر الگوریتمهای جستجو، دستکاری نمودار، منطق رسمی تکیه دارند. به عنوان مثال، در DeepMind AlphaGo، بیشتر "هوش" روی صفحه توسط برنامه نویسان متخصص طراحی و کدگذاری می شود (مثلاً جستجوهای درخت مونت کارلو). یادگیری از داده های جدید فقط در زیر ماژول های تخصصی - شبکه های ارزش و شبکه های سیاست رخ می دهد. اما در آینده، چنین سیستم های هوش مصنوعی را می توان بدون دخالت انسان به طور کامل آموزش داد.چگونه می توان به این امر دست یافت؟ بیایید یک نوع شبکه شناخته شده را در نظر بگیریم: RNN. نکته مهم این است که RNN ها نسبت به شبکه های عصبی پیشخور کمی محدودیت های کمتری دارند. این به این دلیل است که RNN ها کمی بیشتر از تبدیل های هندسی ساده هستند: آنها تبدیل های هندسی هستند که به طور مداوم در حلقه for انجام می شوند... حلقه زمان بندی شده توسط توسعه دهنده تعریف شده است: این یک فرض شبکه داخلی است. به طور طبیعی، RNN ها هنوز در آنچه می توانند نشان دهند محدود هستند، عمدتاً به این دلیل که هر مرحله هنوز یک تبدیل هندسی قابل تمایز است و به دلیل نحوه انتقال اطلاعات گام به گام از طریق نقاط در یک فضای هندسی پیوسته (بردارهای حالت). اکنون شبکههای عصبی را تصور کنید که با برنامهنویسی اولیهها به همان روشی که برای حلقهها انجام میشود، «افزایش» میشوند - اما نه فقط یک حلقه for با کد سخت با حافظه هندسی کدگذاری شده، بلکه مجموعه بزرگی از برنامهنویسیهای اولیه که مدل میتواند آزادانه باشد. دسترسی به گسترش قابلیتهای پردازشی آن مانند if branch، عبارات، ایجاد متغیر، ذخیرهسازی دیسک برای حافظه بلندمدت، مرتبسازی عبارات، ساختارهای داده پیشرفته مانند لیستها، نمودارها، جداول هش و غیره. قلمرو برنامه هایی که چنین شبکه ای می تواند نشان دهد بسیار گسترده تر از آن چیزی است که شبکه های یادگیری عمیق موجود می توانند بیان کنند و برخی از این برنامه ها می توانند به قدرت تعمیم برتر دست یابند.
به طور خلاصه از این واقعیت دور خواهیم شد که از یک سو دارای «هوش الگوریتمی سخت کد شده» (نرم افزارهای دست نویس) و از سوی دیگر «هوش هندسی آموزش دیده» (یادگیری عمیق) هستیم. . در عوض، ما با مخلوطی از ماژولهای الگوریتمی رسمی مواجه میشویم که قابلیتها را فراهم میکنند استدلالو انتزاعاتو ماژول های هندسی که قابلیت ها را ارائه می دهند شهود غیررسمی و تشخیص الگو... کل سیستم با مشارکت کم یا بدون نیروی انسانی آموزش داده خواهد شد.
حوزه مرتبط با هوش مصنوعی که فکر می کنم به زودی ممکن است تفاوت بزرگی ایجاد کند سنتز نرم افزاربه ویژه سنتز برنامه ریزی شده عصبی. سنتز نرمافزار شامل تولید خودکار برنامههای ساده با استفاده از الگوریتم جستجو (احتمالاً جستجوی ژنتیکی، مانند برنامهنویسی ژنتیکی) برای کشف فضای بزرگی از برنامههای ممکن است. جستجو زمانی متوقف می شود که برنامه ای پیدا شود که مشخصات مورد نیاز را که اغلب به صورت مجموعه ای از جفت های ورودی/خروجی ارائه می شود، برآورده می کند. همانطور که می بینید، این بسیار یادآور یادگیری ماشین است: "داده های آموزشی" به صورت جفت ورودی-خروجی ارائه می شود، ما "برنامه ای" را پیدا می کنیم که با تبدیل ورودی ها به خروجی ها مطابقت دارد و قابلیت تعمیم به ورودی های جدید را دارد. تفاوت این است که به جای مقادیر پارامترهای آموزشی در یک برنامه کدگذاری سخت (شبکه عصبی)، ما تولید می کنیم. منبعتوسط یک فرآیند جستجوی گسسته
من قطعاً انتظار دارم در چند سال آینده دوباره علاقه زیادی به این حوزه وجود داشته باشد. به طور خاص، من انتظار نفوذ متقابل حوزه های مرتبط یادگیری عمیق و ترکیب برنامه را دارم، جایی که ما نه تنها برنامه هایی را در زبان های همه منظوره تولید خواهیم کرد، بلکه در آن شبکه های عصبی (جریان های پردازش داده های هندسی) تولید خواهیم کرد. تکمیل شده استمجموعه ای غنی از الگوریتم های اولیه مانند حلقه های for - و بسیاری دیگر. این باید بسیار راحتتر و مفیدتر از تولید مستقیم کد منبع باشد و به طور قابل توجهی مرزهای آن دسته از مشکلاتی را که میتوان با استفاده از یادگیری ماشین حل کرد - فضای برنامههایی که میتوانیم به طور خودکار تولید کنیم و دادههای مناسب را برای آموزش دریافت کنیم، گسترش میدهد. ترکیبی از هوش مصنوعی نمادین و هوش مصنوعی هندسی. RNN های مدرن را می توان به عنوان جد تاریخی چنین مدل های الگوریتم-هندسی ترکیبی دید.
نقاشی: برنامه آموزش داده شده به طور همزمان بر اصول اولیه هندسی (تشخیص الگو، شهود) و اولیه الگوریتمی (استدلال، جستجو، حافظه) تکیه دارد.
فراتر از پس انتشار و لایه های متمایز
اگر مدلهای یادگیری ماشین بیشتر شبیه به برنامهها شوند، دیگر به سختی قابل تمایز خواهند بود - مطمئناً، این برنامهها همچنان از لایههای هندسی پیوسته به عنوان برنامههای فرعی استفاده میکنند که قابل تمایز باقی میمانند، اما کل مدل اینطور نخواهد بود. در نتیجه، استفاده از پس انتشار برای تنظیم وزن ها در یک شبکه ثابت و با کد سخت ممکن است روش ترجیحی برای مدل های آموزشی در آینده باقی نمانند - حداقل نباید تنها به این روش محدود شود. ما باید چگونگی آموزش مؤثرترین سیستمهای غیر قابل تمایز را بیابیم. رویکردهای فعلی شامل الگوریتمهای ژنتیک، «استراتژیهای تکاملی»، روشهای یادگیری تقویتی خاص، ADMM (روش ضربکننده لاگرانژ جهت متناوب) است. به طور طبیعی، نزول گرادیان به جای دیگری نمی رود - اطلاعات گرادیان همیشه برای بهینه سازی توابع پارامتری قابل تمایز مفید خواهد بود. اما مدلهای ما قطعاً جاهطلبانهتر از توابع پارامتری قابل تمایز خواهند بود، و بنابراین توسعه خودکار آنها ("یادگیری" در "یادگیری ماشین") به چیزی بیش از انتشار پسانداز نیاز دارد.علاوه بر این، پس انتشار یک چارچوب سرتاسری دارد که برای یادگیری تبدیلهای به هم پیوسته خوب مناسب است، اما از نظر محاسباتی ناکارآمد است زیرا به طور کامل از مدولار بودن شبکههای عمیق بهرهبرداری نمیکند. برای بهبود کارایی هر چیزی، یک دستور العمل جهانی وجود دارد: ماژولار بودن و سلسله مراتب را معرفی کنید. بنابراین ما میتوانیم با معرفی ماژولهای یادگیری جداشده با نوعی مکانیسم هماهنگسازی بین آنها، که به ترتیب سلسله مراتبی سازماندهی شدهاند، خود انتشار پسانداز را کارآمدتر کنیم. این استراتژی تا حدی در کار اخیر DeepMind در مورد "شیب های مصنوعی" منعکس شده است. من انتظار دارم در آینده نزدیک کار بسیار بسیار بیشتری در این راستا انجام شود.
میتوان آیندهای را تصور کرد که در آن مدلهای غیرمتمایز جهانی (اما با قطعات قابل تمایز) با استفاده از یک فرآیند جستجوی کارآمد که شیبها را اعمال نمیکند، یاد میگیرند - رشد میکنند، در حالی که قطعات متمایز با استفاده از گرادیانها با استفاده از نسخههای پسانتشار کارآمدتر حتی سریعتر یاد میگیرند.
یادگیری ماشین خودکار
در آینده، معماریهای مدل با آموزش ایجاد میشوند نه اینکه بهصورت دستی توسط مهندسان نوشته شوند. مدلهای آموزشدیده بهطور خودکار با مجموعهای غنیتر از مدلهای یادگیری ماشین اولیه و برنامهمانند کار میکنند.امروزه، بیشتر اوقات، یک توسعهدهنده یادگیری عمیق بیپایان دادهها را با اسکریپتهای پایتون تغییر میدهد، سپس زمان زیادی طول میکشد تا معماری و فراپارامترهای شبکه یادگیری عمیق را تنظیم کند تا یک مدل کار کند - یا حتی برای بدست آوردن یک مدل برجسته، اگر توسعه دهنده بسیار جاه طلب است. نیازی به گفتن نیست که این بهترین وضعیت نیست. اما هوش مصنوعی در اینجا نیز می تواند کمک کند. متأسفانه، خودکارسازی بخش پردازش و آماده سازی داده ها دشوار است، زیرا اغلب به دانش این زمینه و همچنین درک واضح در سطح بالایی از آنچه توسعه دهنده می خواهد دست یابد، نیاز دارد. با این حال، تنظیم هایپرپارامترها یک روش جستجوی ساده است، و در این مورد، ما از قبل میدانیم که توسعهدهنده میخواهد به چه چیزی برسد: این توسط تابع از دست دادن شبکه عصبی تعیین میشود که باید تنظیم شود. در حال حاضر، راهاندازی سیستمهای اولیه AutoML که اکثر تغییرات تنظیمات مدل را انجام میدهند، تبدیل به یک روش معمول شده است. من خودم یکی را برای برنده شدن در رقابت Kaggle نصب کردم.
در ابتدایی ترین سطح خود، چنین سیستمی به سادگی تعداد لایه های پشته، ترتیب آنها و تعداد آیتم ها یا فیلترها را در هر لایه تغییر می دهد. این معمولاً با استفاده از کتابخانههایی مانند Hyperopt انجام میشود که در فصل 7 در مورد آن صحبت کردیم (توجه داشته باشید: یادگیری عمیق با کتابهای پایتون). اما شما می توانید خیلی فراتر بروید و سعی کنید با آموزش از ابتدا و با حداقل مجموعه ای از محدودیت ها، معماری مناسبی به دست آورید. این امر از طریق یادگیری تقویتی، به عنوان مثال، یا از طریق الگوریتم های ژنتیک امکان پذیر است.
جهت مهم دیگر در توسعه AutoML آموزش معماری مدل همزمان با وزن مدل است. وقتی هر بار که مدل را از ابتدا آموزش میدهیم، معماریهای کمی متفاوت را امتحان میکنیم، که بسیار ناکارآمد است، بنابراین یک سیستم AutoML واقعاً قدرتمند، توسعه معماری را هدایت میکند در حالی که ویژگیهای مدل از طریق انتشار مجدد بر روی دادههای آموزشی تنظیم میشوند، در نتیجه همه موارد را حذف میکند. -محاسبه همانطور که من این خطوط را می نویسم، رویکردهای مشابه قبلاً شروع به اعمال کرده اند.
وقتی همه اینها شروع به اتفاق افتادن کند، توسعه دهندگان یادگیری ماشینی بیکار نخواهند بود - آنها به سطح بالاتری در زنجیره ارزش خواهند رفت. آنها تلاش بسیار بیشتری را برای ایجاد توابع از دست دادن پیچیده که واقعاً اهداف تجاری را منعکس می کند، انجام می دهند و درک عمیقی از نحوه تأثیر مدل هایشان بر اکوسیستم دیجیتالی که در آن کار می کنند خواهند داشت (به عنوان مثال، مشتریانی که از پیش بینی های مدل استفاده می کنند و داده تولید می کنند. برای آموزش آن) - مشکلاتی که اکنون فقط بزرگترین شرکت ها می توانند در نظر بگیرند.
یادگیری مادام العمر و استفاده مجدد از روال های مدولار
اگر مدلها پیچیدهتر شوند و بر اساس الگوریتمهای اولیه غنیتر ساخته شوند، این پیچیدگی افزایش یافته به استفاده مجدد فشردهتر بین وظایف نیاز دارد، نه اینکه هر بار که یک کار جدید یا مجموعه داده جدید داریم، مدل را از ابتدا آموزش دهیم. از این گذشته، بسیاری از مجموعه داده ها حاوی اطلاعات کافی برای توسعه یک مدل پیچیده جدید از ابتدا نیستند و استفاده از اطلاعات مجموعه داده های قبلی به سادگی ضروری خواهد بود. هر بار که یک کتاب جدید باز می کنید، انگلیسی را دوباره یاد نمی گیرید - این غیر ممکن است. علاوه بر این، مدلهای آموزش از ابتدا در هر کار جدید به دلیل همپوشانی قابل توجه بین وظایف فعلی و مواردی که قبلاً با آن مواجه شدهاند، بسیار بیاثر است.علاوه بر این، در سالهای اخیر، مشاهدات قابلتوجهی مکرراً انجام شده است که آموزش یک مدل برای انجام چندین کار با جفت آزاد نتایج آن را بهبود میبخشد. در هر یک از این وظایف... به عنوان مثال، آموزش همان شبکه عصبی برای ترجمه از انگلیسی به آلمانی و از فرانسوی به ایتالیایی، منجر به مدلی می شود که در هر یک از این جفت زبان ها بهتر است. آموزش مدل طبقهبندی تصویر همزمان با مدل تقسیمبندی تصویر، با یک پایه کانولوشنی، به مدلی منجر میشود که در هر دو مسئله بهتر است. و غیره. این کاملاً شهودی است: همیشه وجود دارد مقداریاطلاعاتی که بین این دو وظیفه به ظاهر متفاوت همپوشانی دارند و بنابراین مدل عمومی به اطلاعات بیشتری در مورد هر کار فردی نسبت به مدلی که فقط برای آن کار خاص آموزش داده شده است دسترسی دارد.
زمانی که مدل را برای کارهای مختلف دوباره به کار می بریم، در واقع کاری که انجام می دهیم این است که از وزنه های از پیش آموزش دیده برای مدل هایی استفاده می کنیم که عملکردهای مشترکی را انجام می دهند، مانند استخراج نشانه های بصری. شما این را در عمل در فصل 5 مشاهده کردید. من انتظار دارم که نسخه کلی تری از این تکنیک در آینده به طور گسترده مورد استفاده قرار گیرد: ما نه تنها ویژگی های آموخته شده قبلی (وزن مدل های فرعی)، بلکه معماری های مدل و روش های یادگیری را نیز اعمال خواهیم کرد. همانطور که مدل ها بیشتر شبیه برنامه می شوند، ما شروع به استفاده مجدد خواهیم کرد زیر برنامه هامانند توابع و کلاس ها در زبان های برنامه نویسی معمولی.
به این فکر کنید که فرآیند توسعه نرمافزار امروزی چگونه به نظر میرسد: هنگامی که یک مهندس مشکل خاصی را حل میکند (برای مثال درخواستهای HTTP در پایتون)، آن را به عنوان یک کتابخانه انتزاعی برای استفاده مجدد بستهبندی میکند. مهندسانی که در آینده با مشکل مشابهی روبرو می شوند، به سادگی کتابخانه های موجود را جستجو کرده، دانلود کرده و در پروژه های خود استفاده می کنند. به همین ترتیب، در آینده، سیستمهای فرا یادگیری قادر خواهند بود برنامههای جدیدی را با غربال کردن کتابخانه جهانی بلوکهای قابل استفاده مجدد سطح بالا جمعآوری کنند. اگر سیستم شروع به توسعه روال های مشابه برای چندین کار مختلف کند، یک نسخه "انتزاعی" قابل استفاده مجدد از روال را منتشر می کند و آن را در کتابخانه جهانی ذخیره می کند. چنین فرآیندی فرصت را برای شما باز خواهد کرد انتزاعاتمولفه ای ضروری برای دستیابی به «تعمیم نهایی»: برنامه ای فرعی که برای بسیاری از وظایف و زمینه ها مفید خواهد بود، شاید بتوان گفت برخی از جنبه های تصمیم گیری را «انتزاعی» می کند. این تعریف از "انتزاع" مشابه مفهوم انتزاع در توسعه نرم افزار نیست. این روال ها می توانند هندسی (ماژول های یادگیری عمیق با نمایش های از پیش آموزش دیده) یا الگوریتمی (نزدیک به کتابخانه هایی که برنامه نویسان مدرن با آنها کار می کنند) باشند.
نقاشی: یک سیستم فراآموزشی که قادر به توسعه سریع مدلهای ویژه کار با استفاده از الگوریتمهای قابل استفاده مجدد (الگوریتمی و هندسی) است و در نتیجه به «تعمیم نهایی» دست مییابد.
به طور خلاصه: چشم انداز بلند مدت
به طور خلاصه، در اینجا چشم انداز بلند مدت من برای یادگیری ماشین است:- مدلها بیشتر شبیه نرمافزار خواهند شد و قابلیتهایی خواهند داشت که بسیار فراتر از تحولات هندسی پیوسته دادههای زیربنایی است که ما در حال حاضر با آنها کار میکنیم. شاید این برنامهها به مدلهای ذهنی انتزاعیای که افراد در مورد محیط و خودشان دارند بسیار نزدیکتر باشند و به دلیل ماهیت الگوریتمیشان قابلیت تعمیم قویتری داشته باشند.
- به طور خاص، مدل ها مخلوط خواهند شد ماژول های الگوریتمیبا استدلال رسمی، جستجو، توانایی انتزاع - و ماژول های هندسیبا شهود غیررسمی و تشخیص الگو. AlphaGo (سیستمی که به برنامهنویسی و معماری دستی فشرده نیاز داشت) نمونهای اولیه از ادغام هوش مصنوعی نمادین و هندسی است.
- آن ها خواهند بزرگ شدنبه طور خودکار (به جای اینکه توسط برنامه نویسان انسانی توسط دست نوشته شود)، با استفاده از قطعات مدولار از یک کتابخانه جهانی از روتین های قابل استفاده مجدد - کتابخانه ای که با اتخاذ مدل های با کارایی بالا از هزاران وظیفه و مجموعه داده های قبلی تکامل یافته است. هنگامی که سیستم فرا یادگیری الگوهای رایج حل مسئله را شناسایی کرد، آنها به روالهای قابل استفاده مجدد ترجمه میشوند - بسیار شبیه توابع و کلاسها در برنامهنویسی مدرن - و به کتابخانه جهانی اضافه میشوند. این است که چگونه توانایی انتزاعات.
- کتابخانه جهانی و سیستم در حال رشد مدل مربوطه می توانند به نوعی از "تعمیم نهایی" شبیه انسان دست یابند: در مواجهه با یک کار جدید، یک موقعیت جدید، سیستم قادر خواهد بود یک مدل کاری جدید برای این کار با استفاده از آن جمع آوری کند. مقدار بسیار کمی از داده ها، به لطف: 1) برنامه های اولیه غنی مانند برنامه، که در تعمیم ها خوب هستند و 2) تجربه گسترده در حل مسائل مشابه. به همان ترتیبی که افراد می توانند به سرعت یک بازی ویدیویی پیچیده جدید را یاد بگیرند، زیرا آنها تجربه قبلی با بسیاری از بازی های دیگر دارند و به این دلیل که مدل های تجربه قبلی انتزاعی و برنامه ای هستند تا اینکه محرک را صرفاً به عمل تبدیل کنند.
- اساساً، این سیستم در حال رشد مدل یادگیری مداوم را می توان به عنوان هوش مصنوعی قوی تعبیر کرد. اما انتظار شروع یک آخرالزمان روبوی منحصر به فرد را نداشته باشید: این فانتزی ناب است که از فهرست طولانی سوء تفاهم های عمیق در درک هوش و فناوری زاده شده است. با این حال، این انتقاد در اینجا جایی ندارد.
هوش مصنوعی، شبکه های عصبی، یادگیری ماشین - همه این مفاهیم محبوب واقعاً به چه معنا هستند؟ برای اکثر افراد ناآشنا، که من خودم هستم، همیشه چیزی خارق العاده به نظر می رسیدند، اما در واقع جوهر آنها در ظاهر نهفته است. مدت ها بود که ایده داشتم در مورد شبکه های عصبی مصنوعی به زبان ساده بنویسم. خودتان یاد بگیرید و به دیگران بگویید این فناوری چیست، چگونه کار می کند، تاریخچه و چشم انداز آن را در نظر بگیرید. در این مقاله سعی کردم وارد جنگل نشوم، بلکه به سادگی و به طور عمومی در مورد این جهت امیدوارکننده در دنیای فناوری های پیشرفته بگویم.
هوش مصنوعی، شبکه های عصبی، یادگیری ماشین - همه این مفاهیم محبوب واقعاً به چه معنا هستند؟ برای اکثر افراد ناآگاه، که من خودم هستم، همیشه چیزی خارق العاده به نظر می رسیدند، اما در واقع، جوهر آنها در سطح نهفته است. مدت ها بود که ایده داشتم در مورد شبکه های عصبی مصنوعی به زبان ساده بنویسم. خودتان یاد بگیرید و به دیگران بگویید این فناوری چیست، چگونه کار می کند، تاریخچه و چشم انداز آن را در نظر بگیرید. در این مقاله سعی کردم وارد جنگل نشوم، بلکه به سادگی و به طور عمومی در مورد این جهت امیدوارکننده در دنیای فناوری های پیشرفته بگویم.
کمی تاریخ
برای اولین بار، مفهوم شبکه های عصبی مصنوعی (ANN) هنگام تلاش برای شبیه سازی فرآیندهای مغز مطرح شد. اولین پیشرفت بزرگ در این زمینه را می توان ایجاد مدل شبکه عصبی مک کالوچ- پیتس در سال 1943 دانست. دانشمندان ابتدا مدلی از یک نورون مصنوعی را توسعه دادند. آنها همچنین پیشنهاد ساخت شبکه ای از این عناصر را برای انجام عملیات منطقی دادند. اما مهمتر از همه، دانشمندان ثابت کرده اند که چنین شبکه ای قادر به یادگیری است.
گام مهم بعدی، توسعه اولین الگوریتم برای محاسبه ANN توسط دونالد هب در سال 1949 بود که برای چندین دهه آینده اساسی شد. در سال 1958، فرانک روزنبلات پارسپترون را توسعه داد، سیستمی که فرآیندهای مغز را تقلید می کند. زمانی این فناوری مشابه نداشت و هنوز در شبکه های عصبی اساسی است. در سال 1986، دانشمندان آمریکایی و شوروی عملاً به طور همزمان، مستقل از یکدیگر، روش اساسی آموزش پرسپترون چند لایه را به طور قابل توجهی بهبود بخشیدند. در سال 2007، شبکه های عصبی دستخوش تولدی دوباره شدند. جفری هینتون، دانشمند کامپیوتر بریتانیایی، الگوریتم یادگیری عمیق را برای شبکههای عصبی چندلایه راهاندازی کرد، که برای مثال اکنون برای کار با ماشینهای خودران استفاده میشود.
به طور خلاصه در مورد اصل مطلب
در معنای عام کلمه، شبکههای عصبی مدلهای ریاضی هستند که بر اساس اصل شبکههای سلولهای عصبی در موجودات جانوری کار میکنند. ANN ها را می توان در راه حل های قابل برنامه ریزی و سخت افزاری پیاده سازی کرد. برای سهولت درک، یک نورون را می توان به عنوان یک سلول خاص تصور کرد که دارای تعداد زیادی سوراخ ورودی و یک سوراخ خروجی است. اینکه چگونه سیگنال های ورودی متعدد به سیگنال های خروجی تبدیل می شوند، الگوریتم محاسبه را تعیین می کند. مقادیر مؤثر به هر ورودی یک نورون ارائه می شود، که سپس در طول اتصالات بین عصبی منتشر می شود (خلاصه). سیناپس ها دارای یک پارامتر هستند - وزن، به همین دلیل اطلاعات ورودی هنگام حرکت از یک نورون به نورون دیگر تغییر می کند. ساده ترین راه برای تصور نحوه عملکرد شبکه های عصبی را می توان با مثال ترکیب رنگ نشان داد. نورون های آبی، سبز و قرمز وزن های متفاوتی دارند. اطلاعات آن نورون که وزن آن در نورون بعدی غالب تر خواهد بود.
شبکه عصبی خود سیستمی از بسیاری از نورون ها (پردازنده ها) است. به طور جداگانه، این پردازنده ها بسیار ساده هستند (بسیار ساده تر از یک پردازنده کامپیوتر شخصی)، اما زمانی که به یک سیستم بزرگ متصل می شوند، نورون ها قادر به انجام وظایف بسیار پیچیده هستند.
بسته به حوزه کاربرد، یک شبکه عصبی را می توان به روش های مختلفی تفسیر کرد. برای مثال، از نقطه نظر یادگیری ماشین، ANN یک روش تشخیص الگو است. از نقطه نظر ریاضی، این یک مسئله چند پارامتری است. از دیدگاه سایبرنتیک، مدلی از کنترل تطبیقی رباتیک است. برای هوش مصنوعی، ANN یک جزء اساسی برای مدلسازی هوش طبیعی با استفاده از الگوریتمهای محاسباتی است.
مزیت اصلی شبکه های عصبی نسبت به الگوریتم های محاسباتی معمولی توانایی آنها در یادگیری است. در معنای کلی کلمه، یادگیری عبارت است از یافتن ضرایب جفت صحیح بین نورون ها و همچنین در تعمیم داده ها و شناسایی وابستگی های پیچیده بین سیگنال های ورودی و خروجی. در واقع، آموزش موفقیت آمیز یک شبکه عصبی به این معنی است که سیستم قادر خواهد بود بر اساس داده هایی که در مجموعه آموزشی وجود ندارد، نتیجه صحیح را شناسایی کند.
وضعیت امروز
و مهم نیست که چقدر این فناوری امیدوارکننده خواهد بود، تا کنون شبکه های عصبی مصنوعی هنوز با توانایی های مغز و تفکر انسان بسیار فاصله دارند. با این وجود، شبکه های عصبی در حال حاضر در بسیاری از زمینه های فعالیت انسانی مورد استفاده قرار می گیرند. آنها تاکنون قادر به تصمیم گیری بسیار عقلانی نیستند، اما می توانند فردی را در جایی که قبلاً مورد نیاز بوده است، جایگزین کنند. در میان زمینه های متعدد کاربرد شبکه های عصبی مصنوعی، می توان به ایجاد سیستم های خودآموز فرآیندهای تولید، وسایل نقلیه بدون سرنشین، سیستم های تشخیص تصویر، سیستم های امنیتی هوشمند، روباتیک، سیستم های نظارت بر کیفیت، رابط های تعامل صوتی، سیستم های تجزیه و تحلیل و موارد دیگر اشاره کرد. . چنین استفاده گسترده ای از شبکه های عصبی، از جمله، به دلیل ظهور راه های مختلف برای تسریع در یادگیری ANN است.
امروزه بازار شبکه های عصبی بسیار بزرگ است - میلیاردها و میلیاردها دلار. همانطور که تمرین نشان می دهد، بیشتر فناوری های شبکه های عصبی در سراسر جهان تفاوت کمی با یکدیگر دارند. با این حال، استفاده از شبکههای عصبی یک تمرین بسیار پرهزینه است که در بیشتر موارد فقط توسط شرکتهای بزرگ قابل پرداخت است. برای توسعه، آموزش و آزمایش شبکه های عصبی، قدرت محاسباتی زیادی مورد نیاز است، بدیهی است که بازیگران بزرگ در بازار فناوری اطلاعات به اندازه کافی از این قدرت برخوردار هستند. از جمله شرکت های اصلی توسعه دهنده در این زمینه می توان به Google DeepMind، Microsoft Research، IBM، Facebook و Baidu اشاره کرد.
البته، همه اینها خوب است: شبکه های عصبی در حال توسعه هستند، بازار در حال رشد است، اما تا کنون وظیفه اصلی حل نشده است. بشریت نتوانسته است فناوری ای بسازد که حتی از نظر توانایی ها به مغز انسان نزدیک باشد. بیایید نگاهی به تفاوت های اصلی بین مغز انسان و شبکه های عصبی مصنوعی بیندازیم.
چرا شبکه های عصبی هنوز از مغز انسان دور هستند؟
مهم ترین تفاوتی که اساساً اصل و کارایی سیستم را تغییر می دهد، انتقال سیگنال متفاوت در شبکه های عصبی مصنوعی و در شبکه بیولوژیکی نورون ها است. واقعیت این است که در ANN، نورون ها مقادیری را منتقل می کنند که مقادیر واقعی هستند، یعنی اعداد. در مغز انسان تکانه هایی با دامنه ثابت منتقل می شود و این تکانه ها تقریباً آنی هستند. از این رو، تعدادی از مزایای شبکه های عصبی انسان وجود دارد.
اول اینکه خطوط ارتباطی در مغز بسیار کارآمدتر و مقرون به صرفه تر از شبکه های عصبی مصنوعی هستند. ثانیاً، مدار ضربه ای سادگی اجرای فناوری را تضمین می کند: کافی است از مدارهای آنالوگ به جای مکانیسم های محاسباتی پیچیده استفاده کنید. در نهایت، شبکه های ضربه ای از تداخل صوتی محافظت می شوند. اعداد معتبر مستعد نویز هستند که احتمال خطا را افزایش می دهد.
نتیجه
البته در دهه اخیر رونق واقعی در توسعه شبکه های عصبی وجود داشته است. این در درجه اول به دلیل این واقعیت است که فرآیند یادگیری ANN بسیار سریعتر و آسان تر شده است. همچنین، شبکه های عصبی به اصطلاح "از پیش آموزش داده شده" شروع به توسعه فعال کردند که می تواند به طور قابل توجهی روند اجرای فناوری را سرعت بخشد. و اگر هنوز خیلی زود است که بگوییم آیا روزی شبکههای عصبی قادر خواهند بود تواناییهای مغز انسان را به طور کامل بازتولید کنند، این احتمال وجود دارد که در دهه آینده شبکههای عصبی مصنوعی بتوانند جایگزین انسان در یک چهارم مشاغل موجود شوند. درست است، واقعی.
برای کسانی که می خواهند بیشتر بدانند
- جنگ عصبی بزرگ: گوگل واقعاً چه کاری انجام می دهد
- چگونه کامپیوترهای شناختی می توانند آینده ما را تغییر دهند