آموزش یادگیری ماشین با مثالهای کاربردی ــ بخش دوم
در قسمت اول از مجموعه مطالب «یادگیری ماشین با مثالهای کاربردی»، مفاهیم مقدماتی و نمونههایی از «یادگیری ماشین» (Machine Learning) مورد بررسی قرار گرفت. بر اساس تعریف ارائه شده در آن مطلب، «یادگیری ماشین استفاده از الگوریتمهای عمومی است که اطلاعات جالب درباره دادههای موجود را بدون نیاز به نوشتن قطعه کدهای مازاد برای مسائل مجزا، فراهم میکند».
در این مطلب، هدف ساخت مراحل یک بازی کامپیوتری با بهرهگیری از الگوریتمهای عمومی یادگیری ماشین به شیوهای است که به نظر بیاید توسط انسان ساخته شده. الگوریتم مورد استفاده برای انجام این کار شبکه عصبی است که مراحل بازی «سوپر ماریو» (Super Mario) به عنوان داده ورودی به آن ارائه میشود تا یک مرحله جدید از بازی (خروجی) توسط الگوریتم ساخته شود.
یکی از مراحل بازی که توسط الگوریتم تولید شده است.
درست مانند قسمت اول، این قسمت نیز مناسب کلیه افرادی است که به مبحث یادگیری ماشین علاقمندند و کنجکاو هستند که بیشتر درباره آن بیاموزند، اما هیچ ایدهای ندارند که فراگیری این علم را چگونه آغاز کنند. هدف از این مجموعه مطلب آموزشی، قابل فهم بودن برای همگان است، لذا مطالب به صورت کلیتر نوشته و از آوردن جزئیات در آنها چشمپوشی شده است. اگر شخصی پس از مطالعه این مطلب به یادگیری ماشین بیشتر علاقمند شود میتواند با استفاده از آموزشهای ویدئویی علمی-کاربردی یادگیری ماشین موجود به جزئیات پرداخته و دانش خود را افزایش دهد؛ شایان ذکر است که آموزشهای بیان شده به زبان فارسی و حاوی مثالهای کاربردی هستند.
ساخت حدسهای هوشمندانهتر
در قسمت اول، الگوریتم سادهای ساخته شد که میتوانست قیمت یک خانه را بر مبنای ویژگیهای آن (متراژ، محله، تعداد اتاق خواب و دیگر موارد) پیشبینی کند.
نمونه خانهای که نیاز است قیمت آن پیشبینی شود در زیر نشان داده شده.
کد تابع تخمینی که برای انجام این کار به زبان برنامهنویسی پایتون نوشته شده در ادامه آمده است.
به عبارت دیگر، برای تخمین قیمت یک خانه ابتدا ویژگیهای موجود برای خانهها در مجموعه داده با استفاده از «وزن» چند برابر میشوند. سپس، برای محاسبه قیمت خانه، مجموع مقادیر حاصل شده، به دست میآید. به جای استفاده از کد، این تابع را میتوان به صورت یک نمودار ساده که در ادامه آمده نمایش داد.
این الگوریتم تنها برای مسائل کوچکی کارآمد است که در آنها نتایج (خروجیها) با ورودیها رابطه خطی دارند. اما اگر حقیقت نهفته در پس قیمت خانهها به این سادگی نباشد چه کاری میتوان انجام داد؟ برای مثال، ممکن است نوع محله برای خانههای بزرگ و کوچک مهم و برای خانههای اندازه متوسط بیاهمیت باشد.
بنابراین سوالی که در این وهله پیش میآید این است که چگونه میتوان جزئیات پیچیده موجود در مساله را در مدل گنجاند؟ برای هوشمندتر بودن، میتوان الگوریتم تخمین قیمت را چندین بار با وزنهای گوناگونی اجرا کرد که هر یک ممکن است مرز آستانه خاصی داشته باشند.
حل مساله با چهار راه گوناگون
در حال حاضر، چهار تخمینگر گوناگون وجود دارد که با ترکیب آنها تخمینگر نهایی ساخته میشود. اکنون این تخمینگر بر اساس الگوریتمی که پیشتر بیان شد اما با استفاده از مجموعه دیگری از وزنها اجرا میشود.
پاسخ جدیدِ فوقالعاده، حاصل ترکیب چهار تخمین گوناگون برای حل مساله است. به همین دلیل، این رویکرد میتواند نسبت به مدل ساده اولیه، موارد بیشتری را مدل کند.
شبکه عصبی چیست؟
در اینجا چهار کاری که برای پیشبینی قیمت خانهها انجام شد در یک نمودار بزرگ ترکیب شدهاند.
این یک «شبکه عصبی» (Neural Network) است! هر گره میداند که چگونه یک مجموعه از ورودیها را دریافت، وزنها را بر آنها اعمال و مقدار خروجی را محاسبه کند. با اتصال تعداد زیادی از این گرهها، میتوان توابع پیچیده را مدل کرد. جزئیات زیادی وجود دارد که برای ساده نگه داشتن مطلب از بیان آنها چشمپوشی میشود (از جمله تابع فعالسازی و مقیاسگذاری ویژگی)، اما مهمترین بخش این ایده عبارت است از یک تابع تخمین ساخته شده ساده که یک مجموعه از ورودیها را دریافت کرده و به منظور حصول خروجیها، آنها را در وزنها ضرب میکند. این تابع ساده «نورون» (neuron) نامیده میشود.
با اتصال تعداد زیادی نورون به یکدیگر، میتوان توابع پیچیدهتری را مدل کرد که قابل مدل شدن تنها با یک نورون نیستند. این کار دقیقا مانند بازی لِگو است. نمیتوان تنها با یک بلوک لِگو مدل خاصی ساخت، اما با داشتن بلوکهای پایهای لِگو، میتوان هرچیزی را مدل کرد.
تصویری از آینده حیوانات پلاستیکی
حافظه دادن به شبکه عصبی
خروجی شبکههای عصبی برای یک مجموعه داده مشخص، همیشه یک چیز است. شبکه عصبی هیچ حافظهای ندارد. به بیان برنامهنویسی، شبکه عصبی یک الگوریتم بدون حالت است. در بسیاری از مواقع (مانند تخمین قیمت خانهها)، این بدون حالت بودن دقیقا همان ویژگی است که دادهکاو میخواهد. اما کاری که چنین مدلهایی توانایی انجام آن را ندارند، پاسخگویی به الگوهای موجود در دادهها در طول زمان است.
برای درک بهتر، مثالی را میتوان در نظر گرفت که در آن به فرد یک صفحه کلید داده و از او خواسته شده که یک داستان بنویسد. اما پیش از آنکه فرد کارش را آغاز کند، شخصی که صفحه کلید را داده باید حدس بزند اولین حرفی که نویسنده تایپ میکند چیست. این شخص چه حرفی را باید حدس بزند؟
او میتواند با استفاده از دانش زبان انگلیسی خود شانس زدن حدس صحیح را افزایش دهد. برای مثال، ممکن است که فرد حرفی را برگزیند که اغلب کلمات انگلیسی با آن آغاز میشوند. همچنین، میتواند به داستانهایی که نویسنده در گذشته نوشته نگاه کند تا متوجه شود که بیشتر نوشتههای خود را با چه کلمهای آغاز کرده. هنگامی که فرد همه دادهها را داشته باشد، میتواند از آنها برای ساخت یک شبکه عصبی استفاده کند. این شبکه، برای هر حرف احتمال اینکه اولین کاراکتر مورد استفاده نویسنده در داستان باشد را مدل میکند. این مدل میتواند به شکل زیر باشد.
اکنون میتوان مساله را سختتر کرد، مثلا حالتی که حرف بعدی که شخص قرار است در هر بخشی از داستان تایپ کند (خواندن مطلب «پایتون و مدلسازی زبان — راهنمای گامبهگام» به شما پیشنهاد میشود.) توسط ماشین حدس زده شود. چنین مسالهای جذابتر است. برای درک بهتر این مثال، اولین کلماتی که در کتاب «خورشید همچنان میدمد» (The Sun Also Rises) اثر ارنست همینگوی آمده، مورد بررسی قرار میگیرد.
Robert Cohn was once middleweight boxi
کلمه بعدی چه خواهد بود؟
«n» احتمالا حدسی است که زده میشود تا با استفاده از آن در ادامه boxi، کلمه boxing ساخته شود. این حدس بر اساس دیگر کلمات موجود در جمله و کلمات متداول موجود در زبان انگلیسی زده شده است. همچنین، کلمه «middleweight» سرنخ مازادی ارائه میکند که با بهرهگیری از آن میتوان تشخیص داد قرار است درباره boxing صحبت شود.
به عبارت دیگر، حدس زدن کلمه بعدی با توجه به دنباله لغاتی که پیش از کلمه کنونی آمده و ترکیب آنها با دانش زبان انگلیسی فرد سادهتر خواهد بود. برای حل این مساله با استفاده از شبکه عصبی، نیاز به افزودن حالت (state) به مدل است. به بیان دیگر، هر بار که از شبکه عصبی پاسخ خواسته شود، یک مجموعه از محاسبات را انجام داده و از آنها در دفعات آتی مجددا به عنوان ورودی استفاده میکند. بدین شکل، مدل تنظیم پیشبینیهای خود را بر اساس ورودیهایی که اخیرا دیده انجام میدهد.
دنبال کردن وضعیت مدل این امکان را فراهم میکند که نه تنها اولین کلمه در داستان، بلکه محتملترین کلمه بعدی را نیز در هر قسمتی از آن پیشبینی کند. این مفهوم در برگیرنده ایده اصلی شبکههای عصبی بازگشتی است. کارشناس، شبکه را پس از هر بار استفاده بهروز رسانی میکند. این کار امکان بهروز رسانی پیشبینیها براساس آنچه اخیرا دیده شده را فراهم میکند. بدین شکل، در صورتی که حافظه کافی در اختیار مدل قرار بگیرد، میتواند حتی الگوها را نیز مدل کند.
یک لغت یکتا برای چه کاری مناسب است؟
پیشبینی لغت بعدی در یک داستان ممکن است کار بیهودهای به نظر برسد. پس نکته مثال بیان شده چیست؟ آیا چنین کاری کاربرد دارد؟ یکی از کاربردهای جالب «پیشبینی لغت بعدی» برای صفحه کلید گوشیهای هوشمند است.
حرف بعدی که بیشترین احتمال تایپ شدن را دارد «t» است.
در صورت توسعه این ایده چه کار میتوان کرد؟ اگر از مدل خواسته شود که کاراکترهای بعدی که ممکن است انتخاب شوند را یکی پس از دیگری تا ابد پیشبینی کند چه خواهد شد؟ این یعنی از ماشین درخواست شود که یک داستان کامل بنویسد.
تولید داستان
پیش از این توضیح داده شد که لغت بعدی در داستان همینگوی چگونه حدس زده میشود. اکنون، هدف تولید یک داستان به سبک همینگوی است. برای انجام این کار، از پیادهسازی یک شبکه عصبی بازگشتی استفاده شده که «اندرژ کارپیدی» (Andrej Karpathy) آن را آماده کرده است. اندرژ یک پژوهشگر حوزه یادگیری عمیق در دانشگاه استنفورد است و مقدمه خوبی برای چگونگی تولید متن با استفاده از شبکههای عصبی بازگشتی نوشته.
مدل مورد نظر در این مطلب با استفاده از متن کامل کتاب «خورشید همچنان میدمد» ساخته شده که دارای ۳۶۲،۲۳۹ کاراکتر و ۸۴ حرف یکتا (شامل نشانهگذاریها و حروف بزرگ و کوچک) است. این مجموعه داده در مقایسه با یک کاربرد جهان واقعی متداول بسیار کوچک به حساب میآید. برای تولید یک داستان خیلی خوب به سبک همینگوی، داشتن متنهای نمونه بیشتر، کارآمدتر است. اما انجام دادن این کار با متنی در این حجم نیز به اندازه کافی خوب محسوب میشود. در آغاز آموزش دادن شبکه عصبی بازگشتی، توانایی پیشبینی لغت آن خیلی خوب نیست. پس از ۱۰۰ دوره آموزش، خروجی به صورت زیر خواهد بود:
hjCTCnhoofeoxelif edElobe negnk e iohehasenoldndAmdaI ayio pe e h’e btentmuhgehi bcgdltt. gey heho grpiahe.
Ddelnss.eelaishaner” cot AAfhB ht ltny
ehbih a”on bhnte ectrsnae abeahngy
amo k ns aeo?cdse nh a taei.rairrhelardr er deffijha
چنانچه مشهود است، مدل توانسته درک کند که گاهی بین کاراکترها، یک فضای خالی (space) وجود دارد. اما خروجی پیشبینی شده توسط آن در حدی است که در بالا مشاهده شد. پس از ۱،۰۰۰ دوره تکرار (آموزش)، وضعیت بهتر میشود:
hing soor ither. And the caraos, and the crowebel for figttier and ale the room of me? Streat was not to him Bill-stook of the momansbed mig out ust on the bull, out here. I been soms
inick stalling that aid.
“Hon’t me and acrained on .Hw’s don’t you for the roed,” In’s pair.”
“Alough marith him.”
مدل شروع به تشخیص الگوهای موجود در ساختار جملات پایه کرده. همچنین، به پایان جملات نقطههایی افزوده و دیالوگها را داخل گفتاورد «Quotation» قرار داده است. هر چند برخی از کلمات قابل تشخیص هستند، اما بسیاری از آنها همچنان بیمعنی محسوب میشوند. پس از چندین هزار دوره آموزش، خروجی مدل بهبود قابل توجهی مییابد.
He went over to the gate of the café. It was like a country bed.
“Do you know it’s been me.”
“Damned us,” Bill said.
“I was dangerous,” I said. “You were she did it and think I would a fine cape you,” I said.
“I can’t look strange in the cab.”
“You know I was this is though,” Brett said.
“It’s a fights no matter?”
“It makes to do it.”
“You make it?”
“Sit down,” I said. “I wish I wasn’t do a little with the man.”
“You found it.”
“I don’t know.”
“You see, I’m sorry of chatches,” Bill said. “You think it’s a friend off back and make you really drunk.”
در این نقطه، الگوریتم الگوی پایهای دیالوگهای کوتاه و مستقیم همینگوی را آموخته است. حتی برخی جملات ساخته شده توسط مدل دارای معنا هستند. متن بالا را میتوان با متنی از کتاب اصلی مقایسه کرد:
There were a few people inside at the bar, and outside, alone, sat Harvey Stone. He had a pile of saucers in front of him, and he needed a shave.
“Sit down,” said Harvey, “I’ve been looking for you.”
“What’s the matter?”
“Nothing. Just looking for you.”
“Been out to the races?”
“No. Not since Sunday.”
“What do you hear from the States?”
“Nothing. Absolutely nothing.”
“What’s the matter?”
حتی تنها با نگاه کردن به الگوی یک کاراکتر یکتا، الگوریتم توانسته نثر قابل باوری را در فرمت مناسب تولید کند. این فوقالعاده است! نیازی به تولید متن کامل از پایه نیست. میتوان خوراک الگوریتم را با برخی از حروف اولیه تامین کرد و از آن خواست که حروف بعدی را حدس بزند. در ادامه، یک جلد جعلی برای کتاب خیالی ساخت ماشین طراحی و نام نویسنده و عنوان جدید با استفاده از متنهای بذرگونه «Er»، «He» و «The S» برای آن تولید شده است.
جلد کتاب واقعی در سمت چپ و کتاب بیمعنایی که توسط کامپیوتر تولید شده در سمت راست تصویر قرار دارد.
بد نیست! اما خارقالعادهترین بخش کار آن است که الگوریتم میتواند هر الگویی را در هر توالی از دادهها تشخیص دهد. در واقع، به سادگی میتواند دستور پخت غذایی که واقعی به نظر برسد یا سخنرانی جعلی از اوباما را تولید کند. اما چرا با وجود چنین تواناییهایی، طرح مساله به زبان انسان محدود شود؟ این ایده را میتوان روی هر نوع داده دارای توالی که الگو دارد نیز اعمال کرد.
ساخت بازی ماریو، بدون ساخت آن!
در سال ۲۰۱۵، شرکت بازیسازی «نینتندو» (Nintendo)، برنامه ™Super Mario Maker برای سیستم بازیسازی Wii U را منتشر کرد.
رویای هر کودکی
این بازی، امکان ساخت مراحل بازی برادران سوپر ماریو (Super Mario Brothers) را با استفاده از دسته بازی و بارگذاری آن در اینترنت میدهد. بنابراین، افراد گوناگون میتوانند مراحل ساخته شده توسط اشخاص دیگر (از جمله دوستان یا اعضای خانواده خود) را بازی کنند. همچنین، میتوان کلیه «افزایش قدرتهای کلاسیک» (power-ups) و دشمنان بازی ماریو اصلی را در بازیهایی استفاده کنند که قصد دارند. این برنامه، برای علاقمندان به بازی برادران سوپر ماریو مانند یک لِگو مجازی است.
آیا میتوان مدلی مشابه تولید متن جعلی همینگوی یافت که بتوان با بهرهگیری از آن مراحل بازی برادران سوپر ماریو را ساخت؟ برای انجام این کار ابتدا نیاز به یک مجموعه داده برای آموزش دادن مدل است. میتوان برای این کار از مراحل فضای باز متعلق به بازی اصلی ماریو استفاده کرد که در سال ۱۹۸۵ منتشر شد.
این بازی دارای ۳۲ مرحله است و بالغ بر ۷۰٪ آنها فضای باز مشابهی دارند. بنابراین بهتر است از این فضاها برای آموزش دادن مدل استفاده شود. برای دریافت طراحیهای هر مرحله، یک کپی اصلی از بازی گرفته و برنامهای نوشته میشود که طراحی مراحل را از حافظه برنامه بیرون بکشد. برادران سوپر ماریو یک بازی با قدمت ۳۰ ساله است و منابع برخط زیاد موجود برای آن به کشف چگونگی ذخیرهسازی مراحل در حافظه بازی کمک میکنند. استخراج دادههای مراحل از یک بازی ویدئویی قدیمی یک تمرین برنامهنویسی جالب است که انجام آن به فراگیران توصیه میشود. در ادامه، اولین مرحله بازی (نسخه سال ۱۹۸۵) قابل مشاهده است (افرادی که ماریو بازی کردهاند با این تصاویر خاطره دارند):
برادران سوپر ماریو، سطح ۱-۱
اگر از نزدیکتر به تصویر نگاه شود، مشخص است که کلیه سطوح از شبکه (grid) سادهای از اشیا ساخته شدهاند.
میتوان این شبکه را به صورت توالی از کاراکترها با بهرهگیری از کاراکترهایی ارائه کرد که هر یک نماینده یک شی هستند.
-------------------------- -------------------------- -------------------------- #??#---------------------- -------------------------- -------------------------- -------------------------- -##------=--=----------==- --------==--==--------===- -------===--===------====- ------====--====----=====- =========================-
هر شی یکتا در هر مرحله از بازی با یک حرف جایگزین شده است.
- «-» فضای خالی است.
- «=» یک بلوک جامد است.
- «#» یک آجر قابل شکستن است.
- «?» یک بلوک سکه است.
و به همین صورت، از حروف گوناگون برای نمایش اشیا مختلف موجود در سطوح استفاده میشود. با انجام این کار، در نهایت یک فایل متنی به شکل زیر حاصل شده است:
با نگاه به فایل متنی حاصل شده و خواندن خط به خط مراحل بازی سوپر ماریو میتوان دید که الگوهای زیادی وجود ندارد.
با خواندن خط به خط فایل متنی، میتوان دید که الگوی خاصی برای ثبت شدن وجود ندارد و بیشتر خطوط خالی هستند.
اگر به مراحل بازی به چشم یک مجموعه از ستونها نگاه شود، مراحل واقعا در یکدیگر ادغام میشوند.
با نگاه ستون به ستون، یک الگوی واقعی قابل مشاهده است. هر ستون با یک علامت «=» برای هر مثال پایان مییابد.
بنابراین، به منظور آنکه الگوریتم الگوهای موجود در دادهها را کشف کند، نیاز به ارائه دادهها به صورت ستون به ستون است. درک این نکته الزامی است که ارائه تاثیرگذار از دادهها (که به آن انتخاب ویژگی گفته میشود)، کلید استفاده خوب از «الگوریتمهای یادگیری ماشین» (Machine Learning Algorithms) محسوب میشود. برای آموزش دادن مدل، باید متن به اندازه ۹۰ درجه چرخانده شود. این کار امکان آن را فراهم میکند که کاراکترها به ترتیبی به مدل خوارنده شوند که الگوها واضحتر هستند.
-----------= -------#---= -------#---= -------?---= -------#---= -----------= -----------= ----------@= ----------@= -----------= -----------= -----------= ---------PP= ---------PP= ----------== ---------=== --------==== -------===== ------====== -----======= ---========= ---=========
آموزش دادن به مدل
همانگونه که هنگام ساخت مدل آثار نثر همینگوی مشاهده شد، هر چه مدل بیشتر آموزش ببیند، بهبود پیدا میکند. پس از یک آموزش کوتاه، خروجی مدل به صورت زیر و البته نامناسب است:
-------------------------- LL+<&=------P------------- -------- ---------------------T--#-- ----- -=--=-=------------=-&--T-------------- -------------------- --=------$-=#-=-_ --------------=----=<---- -------b -
مدل ایدهای مبنی بر این دارد که «-» و «=» باید در دادهها زیاد تکرار شوند، اما به همین حد اکتفا کرده و در واقع هنوز الگوی خاصی در خروجی ارائه نداده. پس از چندین هزار بار تکرار، خروجی مدل چیزی مانند زیر است:
-- -----------= ----------= --------PP= --------PP= -----------= -----------= -----------= -------?---= -----------= -----------=
مدل میداند که کلیه خطوط کد باید دارای طول مشابهی باشند. همچنین، شروع به درک منطق نهفته در پس بازی ماریو کرده. منطقی که در آن، لولهها همیشه به اندازه دو بلوک پهنا و حداقل دو بلوک ارتفاع دارند. بنابراین، «P» در دادهها باید در خوشههای ۲x۲ ظاهر شود. با آموزش دادن بیشتر، مدل شروع به رسیدن به نقطهای کرده که دادههای کاملا معتبر تولید میکند.
--------PP= --------PP= ----------= ----------= ----------= ---PPP=---= ---PPP=---= ----------=
اکنون، یک مرحله از بازی را با استفاده از دادههای موجود نمونهسازی کرده و به حالت افقی باز چرخانده میشود.
یک مرحله کامل که توسط مدل تولید شده است.
این دادهها عالی به نظر میرسند. چندین نکته مهم وجود دارد که باید به آنها توجه کرد:
- «لاکیتو» (Lakitu ـ هیولاهایی که روی ابرها شناورند) را در ابتدای مرحله در آسمان قرار داده، درست مثل یک مرحله واقعی از بازی سوپر ماریو
- مدل میداند که لولههای شناور در آسمان باید روی یک بلوک جامد قرار بگیرند و در هوا آویزان نباشند
- دشمنها را در نواحی منطقی قرار میدهد
- چیزی نمیسازد که مانع حرکت بازیکن شده و آن را در بلوک بسته قرار دهد
- این خروجی مانند یک مرحله واقعی از بازی سوپر ماریو به نظر میرسد. زیرا سبکی مشابه مراحل واقعی بازی دارد.
- در نهایت، این مرحله ساخته شده و در برنامه Super Mario Maker قرار میگیرد.
دادههای مرحله ساخته شده توسط مدل پس از اینکه وارد برنامه Super Mario Maker شده است.
افرادی که برنامه Super Mario Maker را داشته باشند میتوانند این مرحله ساخته شده توسط هوش مصنوعی را با بوکمارک کردن و یا جستوجوی آن با کد مرحله 4AC9–0000–0157-F3C3 بازی کنند.
اسباب بازیها و کاربردهای جهان واقعی
شبکه عصبی پیچشی که برای آموزش مدل استفاده شده همان نوع الگوریتمی است که توسط شرکتهای جهان واقعی برای حل مسائل سخت مانند تشخیص گفتار و ترجمه زبان استفاده میشود. آنچه مدل ارائه شده را به جای یک مدل خارقالعاده به یک اسباببازی مبدل میسازد آموزش دادن آن با حجم ناچیزی از دادهها است. زیرا مراحل کافی در بازی سوپر ماریو اصلی برای آموزش دادن مدل وجود ندارد.
اگر بتوان به صدها هزار مرحله ساخته شده توسط کاربران برنامه Super Mario Maker دسترسی داشت (که نینتندو این دسترسی را دارد)، میتوان یک مدل شگفتانگیز ساخت. اما این کار برای کاربر عادی امکانپذیر نیست، زیرا نینتندو چنین اجازهای را به افراد نمیدهد. شرکتهای بزرگ دادههای خود را به رایگان در اختیار کسی نمیگذراند.
با افزایش اهمیت یادگیری ماشین در بیشتر صنایع، تفاوت بین یک برنامه خوب با یک برنامه بد بسته به میزان دادهای خواهد بود که مدلها با آن آموزش دیدهاند. به همین دلیل است که شرکتهایی مانند گوگل و فیسبوک شدید به دادههای کاربران خود محتاج هستند!
برای مثال، گوگل اخیرا کتابخانه «تنسورفلو» (TensorFlow) را متنباز کرده. این کتابخانه، در واقع یک جعبه ابزار نرمافزاری برای ساخت نرمافزارهای کاربردی یادگیری ماشین است. ارائه فناوریهای رایگان چالشی بسیار بزرگ محسوب میشود که گوگل به آن اهمیت زیادی میدهد و این دقیقا همان چیزی است که به Google Translate قدرت میبخشد.
بدون حجم انبوه دادههای گوگل از هر زبان، نمیتوان نرمافزار رقیبی برای Google Translate ساخت. این دادهها هستند که به گوگل مزیت رقابتی میدهند. کاربران باید دفعات بعدی که تاریخچه مکانهای نقشه گوگل یا مکانهای فیسبوک خود را بررسی میکنند به این مساله توجه داشته باشند که این شرکتها به اطلاعات کلیه مکانهایی که فرد بوده دسترسی دارند و آنها را ذخیرهسازی میکنند.
مطالعه بیشتر
در «یادگیری ماشین» (Machine Learning)، هرگز یک راه یکتا برای حل کلیه مسائل وجود ندارد. هنگامی که صحبت از چگونگی پیش پردازش دادهها و الگوریتمهای مورد استفاده میشود، گزینههای نامحدودی موجودند. اغلب، استفاده از ترکیب چندین رویکرد به جای یک رویکرد یکتا، نتایج بهتری را به همراه دارد. بر اساس این نوشته، افراد دیگری نیز مراحل بازی سوپر ماریو مورد نظر خودشان را با استفاده از یادگیری ماشین ساختهاند.
برخی از این موارد در ادامه معرفی شده است.
- جاستین میکاد رویکرد ارائه شده در این مطلب را گسترش داده و کشف کرده که چگونه میتوان مراحل تولید شده را به فایل NES rom اصلی مبدل کرد (که کد آن ۳۰ سال پیش نوشته شده بوده!). این rom هک شده را میتوان از اینجا و به صورت برخط بازی کرد.
- تیم Amy K. Hoover از رویکردی استفاده کرده که هر نوع شیئی از مراحل را (لولهها، زمین، سکوها و غیره) به مثابه صدایی یکتا از یک سمفونی نشان میدهد. با استفاده از فرآیندی که به آن «داربست تابعی» (unctional scaffolding) گفته میشود، سیستم میتواند مراحل را با بلوکهایی از هر نوع شی داده شده تقویت کند. برای مثال، میتوان طرح کلی یک مرحله را طراحی کرد و سپس لولهها و بلوکهای سوالی را به آن افزود تا طراحی کامل شود.
- تیم Steve Dahlskog نشان داده که مدلسازی هر یک از ستونهای دادههای مراحل به عنوان یک مجموعه از کلمات «انگرم» (n-gram)، امکان تولید مراحل با الگوریتمهایی سادهتر از شبکه عصبی بازگشتی را فراهم میکند.
قسمت بعدی این مطلب را میتوانید در اینجا مطالعه کنید.
اگر نوشته بالا برای شما مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشود:
- آموزش یادگیری ماشین
- آموزش یادگیری ماشین (Machine Learning) با پایتون (Python)
- آموزش مقدمهای در رابطه با یادگیری ماشین با پایتون (Python) (رایگان)
- گنجینه آموزشهای یادگیری ماشین و دادهکاوی
- مهمترین الگوریتمهای یادگیری ماشین (به همراه کدهای پایتون و R)
^^
بسیار عالی و جذاب بود بخصوص اسم کتاب جدید و ساخت بازی سوپر ماریو
خسته نباشید؛ متن ترجمه شده چند تا اشکال در ترجمه دارد اما در کل ترجمه بسیار خوبیست. کلمه «دوره هایی» در این متن «مدل شروع به تشخیص الگوهای موجود در ساختار جملات پایه کرده. همچنین، به پایان جملات دورههایی افزوده و دیالوگها را داخل گفتاورد «Quotation» قرار داده است.»، باید به «نقطه/نقطه ها» معادل periods در این متن «این بازی دارای ۳۲ مرحله است و بالغ بر ۷۰٪ آنها فضای باز مشابهی دارند. بنابراین بهتر است از این فضاها برای آموزش دادن مدل استفاده شود.» بهتر است کلمه فضای باز یا فضاها به کلمه «محیط» ترجمه شود(Outdoor) علاوه بر این ها یک بازبینی کلی از متن در صورتی که فرصت داشتید مفید است. در متن تصویری که برای نشان دادن «شبکه عصبی با حالت» از طریق نمودار ساخته شده به نادرست مانند نمودار قبل از عنوان «مدل بدون حالت» استفاده شده، در حالی که در متن اصلی عبارت «stateful model» دیده می شود. متشکرم.
درود، سپاسگزارم از وقتی که به ارائه بازخورد اختصاص دادید. موارد بیان شده اصلاح شد. در زمینه معنای کلمه «Outdoor» در این متن، منظور به طور مشخص مراحل فضای باز بازی ماریو است (نه به صورت عمومی کل محیط آن). به دلیل آنکه بازی دارای مراحل فضای باز و بسته است (یا در واقع محیطهای داخل لوله که از آن با عنوان محیطهای داخل آب نیز یاد میشود. در ابتدای متن نیز بیان شده که صرفا مراحل فضای باز بازی برای آموزش مدل استفاده میشود (به دلیل اینکه این فضا در اغلب مراحل بازی از یک الگوی مشابه پیروی میکند).
سپاسگزارم از شما