چگونه به ماشین‌ها یاد بدهیم تا تصاویری که مشاهده می‌‎کنند را درک کنند؟

چگونه به ماشین‌ها یاد بدهیم تا تصاویری که مشاهده می‌کنند را درک کنند؟

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

تا به امروز دانشمندان موفق به ساخت ماشین‌هایی شده‌اند که خودشان می‌توانند رانندگی کنند، اما بدون دید هوشمند (smart vision) نمی‌توانند فرق میان پاکت کاغذی مچاله در جاده که می‌شود از روی آن رد می‌‌شود را با یک سنگ همان اندازه که نباید از روی آن رد شوند تشخیص دهند، برای حل این مشکل دوربین‌هایی با وضوح مگاپیکسل عالی ساخته شدند که برای استفاده موثر از آن‌ها به نرم‌افزارهای خاصی نیاز است. هواپیماهای بدون سرنشین که بر فراز زمین‌های وسیع پرواز کنند، اما فناوری بینایی کافی برای کمک به ما در رهگیری تغییرات جنگل‎‌های بارانی ندارند. دوربین‌های امنیتی همه جا هست، اما وقتی یک کودک در استخر در حال غرق شدن است، هشدار نمی‌دهند. تصاویر و ویدیوها در حال تبدیل شدن به جز مهمی از زندگی جهانی هستند. تصاویر با سرعتی فراتر از آن‌چه هر انسان یا گروهی از انسان‌ها، بتواند امیدوار به دیدن آن‌ها باشد تولید میشوند. با این وجود پیشرفته‌ترین نرم‌افزارها همچنان در فهم و مدیریت این حجم عظیم مشکل دارند و به عبارت دقیقتر، ماشین‌ها با وجود پیشرفت‌های انجام شده هنوز نمی‌توانند مثل انسان‌ها تمامی اشیایی که مشاهده می‌کنند را درک کنند و شناختی از آن‌ها داشته باشند.

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

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

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

وقتی این موضوع را متوجه شوید، در مرحله بعد به این فکر خواهید افتاد تا به جمع‎‌آوری مجموعه اطلاعاتی بپردازید که نیاز است. هرچه تصاویر بیشتری داشته باشید، کیفیت کار و خروجی الگوریتم بهتر خواهد شد. بهترین منبع در این زمینه اینترنت است که بزرگ‌ترین گنجینه عکس‌ها که انسان‌ها تاکنون گرفته‌اند را میزبانی می‎‌کند. به‎‌طور مثال، در برخی موارد کارشناسان از یک میلیارد عکس و فناوریهایی مثل CrowdSourcing و Amazon Mechanical Turk platform برای برچسب‌زنی این عکس‌ها استفاده می‎‌کنند. برای انجام این‎‌کار به تیم بزرگی نیاز دارید که قادر به سازماندهی تصاویر، اصلاح، مرتب‎‌سازی و برچسب‎‌گذاری تصاویر باشند. جالب آن‎‌که تمامی این کارها معادل کاری است که ذهن یک کودک در سال‌های اولیه تکامل خود انجام می‎‌دهد. پس از گذشت زمان و کسب تجربه ایده استفاده از حجم عظیم دادهه‌ا برای آموزش الگوریتم رایانه‎‌ها، بدیهی بنظر برسد.

به‎‌طور مثال، در یک نمونه تحقیقاتی در سال ۲۰۰۹ پروژهImageNet یک پایگاه داده از 15 میلیون عکس در وسعت ۲۲٫۰۰۰ کلاس از اشیا که با کلمات انگلیسی روزمره منظم شده بودند را در اختیار تیمی از پژوهشگران هوش مصنوعی قرار داد. به لحاظ کیفیت و کمیت این مقیاس بیسابقه بود. به‎‌عنوان مثال در مورد گربه‎‌ها بیش از ۶۲٫۰۰۰ (تصویر) گربه در انواع شکلها، فرم بدن و در تمام گونه‌های اهلی و وحشی ارایه کرد.

حالا که داده‎‌ها را برای تغذیه مغز رایانه در اختیار دارید، آماه هستید تا برگردید سراغ خود الگوریتمها، زیرا از طریق پروژههایی مثل ImageNet دسترسی به اطلاعات طبقه‌بندی شده و کامل که برای آموزش الگوریتمهای یادگیری ماشین نیاز است در اختیار دارید. درست مثل مغز که از میلیاردها نورون پیوسته تشکیل شده یک واحد عملیاتی بنیادی در یک شبکه عصبی یک گره نورونمانند است. از گرههای دیگر ورودی میگیرد و و خروجی را به دیگر گرهها میفرستند. به علاوه، این صدها یا هزاران یا حتی میلیونها گره در لایه‌هایی با سلسله مراتب منظم شده‌اند، مانند مغز. در یک شبکه عصبی نوعی، برای آموزش مدل تشخیص اشیا، 24 میلیون گره، 140 میلیون پارامتر، و 15 میلیارد اتصال وجود دارد. این یک مدل عظیم است. با استفاده از نیروی عظیم داده‎‌ها ازImageNet و پردازنده مرکزی و گرافیکی برای آموزش چنین مدل یکدستی، شبکه عصبی در هم تنیده ایجاد م‌یشود. شبکه‌ای که قادر است پس از آموزش از طریق مشاهده میلیونها عکس میتواند به شما بگوید این تصویر شامل یک گربه است و اینکه گربه کجای تصویر قرار دارد. البته پیاده‎‌سازی یک چنین شبکه‎‌های عصبی برای کاری به مراتب فراتر از تشخیص گربه‌ها استفاده میشوند و به‌طور مثال یک الگوریتم رایانهای میتواند به شما بگوید در یک تصویر یک پسر و یک عروسک خرسی؛ یک سگ، یک آدم و بادبادک کوچک در پسزمینه وجود دارد یا تصویر شامل چیزهای شلوغ‎‌تر مثل یک مرد، تخته اسکیت، نردهها، تیر چراغ برق و چیزهای دیگر است. گاهی أوقات که کامپیوترها اطمینان ندارند از چیزی که به آن نگاه میکنند، باید به آنها کمک کنید تا به اندازه کافی باهوش باشند تا یک جواب مطمئن به شما بدهند، درست مثل کاری که انسانها انجام میدهند.

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

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

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

در مجموع باید به این نکته دقت کنید که ابتدا به ماشین‌ها بینایی ببخشید، به آنها دیدن را یاد بدهید تا آنها بتوانند به شما در شناخت بهتر تصاویر کمک کننند.