چگونه به ماشینها یاد بدهیم تا تصاویری که مشاهده میکنند را درک کنند؟
جامعه ما به لحاظ فناوری از هر زمان دیگر پیشرفتهتر است. ما موفق شدیم انسانها را به ماه بفرستیم، تلفنهایی ساختیم که با ما صحبت میکنند یا ایستگاههای رادیویی سفارشی طراحی کردیم که میتوانند فقط موسیقی که دوست داریم را پخش کنند.
با این حال پیشرفتهترین ماشینها و رایانههای ما هنوز هم در درک تصاویر مشکل دارند. با اینحال، پیشرفتهای خوبی در این زمینه و به ویژه بینایی ماشین انجام شده که ممکن است انقلابی در دنیای فناوری به وجود آورد.
تا به امروز دانشمندان موفق به ساخت ماشینهایی شدهاند که خودشان میتوانند رانندگی کنند، اما بدون دید هوشمند (smart vision) نمیتوانند فرق میان پاکت کاغذی مچاله در جاده که میشود از روی آن رد میشود را با یک سنگ همان اندازه که نباید از روی آن رد شوند تشخیص دهند، برای حل این مشکل دوربینهایی با وضوح مگاپیکسل عالی ساخته شدند که برای استفاده مؤثر از آنها به نرمافزارهای خاصی نیاز است.
هواپیماهای بدون سرنشین که بر فراز زمینهای وسیع پرواز کنند، اما فناوری بینایی کافی برای کمک به ما در رهگیری تغییرات جنگلهای بارانی ندارند. دوربینهای امنیتی همهجا هست، اما وقتی یک کودک در استخر در حال غرقشدن است، هشدار نمیدهند. تصاویر و ویدئوها در حال تبدیلشدن به جز مهمی از زندگی جهانی هستند.
تصاویر با سرعتی فراتر از آنچه هر انسان یا گروهی از انسانها، بتواند امیدوار به دیدن آنها باشد تولید میشوند. بااینوجود پیشرفتهترین نرمافزارها همچنان در فهم و مدیریت این حجم عظیم مشکل دارند و به عبارت دقیقتر، ماشینها با وجود پیشرفتهای انجام شده هنوز نمیتوانند مثل انسانها تمامی اشیایی که مشاهده میکنند را درک کنند و شناختی از آنها داشته باشند.
شاید بپرسید چرا این موضوع تا این اندازه سخت است؟ دوربینها میتوانند تصاویری را بر مبنای تبدیل نور به آرایه دوبعدی اعداد که پیکسل نام دارند، تهیه کنند. تصاویری که فاقد روح هستند و معنی خاصی ندارند.
همانگونه که میگوییم شنیدن کی بود؛ مانند دیدن، عکسگرفتن با دیدن یکی نیست، زیرا با دیدن باید به فهمیدن برسید. مغز انسان یا سایر موجودات در یک بازه چند میلیونساله تکامل پیدا کردند تا بتوانند تصاویری که مشاهده میکنند را پردازش کنند. به بیان دقیقتر، دیدن با چشم آغاز میشود، اما در حقیقت در مغز کار اصلی را انجام میدهد.
اولین قدم در این مسیر که به رایانهها یاد بدهیم تا اشیا را ببینند؛ آشنایی با مباحث دنیای بصری است. به سادهترین حالت این فرایند آموزش را مانند نشاندادن تعدادی عکس آموزشی از یک شی خاص مثلاً گربهها به رایانه تصور کنید و طراحی یک مدل (برای رایانه) که از دیدن این عکسها یاد بگیرد.
این کار چقدر میتواند سخت باشه؟ بالاخره یک گربه مجموعهای از شکلها و رنگها است و این کاری هست که در روزهای ابتدایی طراحی اشیا باید انجام داد. شما به الگوریتم رایانه به زبان ریاضی میگویید که یک گربه صورت گرد دارد، بدن تپل دارد، دو تا گوشتیز دارد و یک دمدراز و این کافی بود، اما اگر گربه در زاویه خاصی قرار داشته باشد چه میشود؟ حالا شما باید یکشکل و زاویه دید دیگر به مدل شی اضافه کنید، اما اگر گربهها تمامرخ نباشند چه میشود؟ حالا متوجه منظور من شدید که این فرایند تا چه اندازه سخت و پیچیده است. حتی یک چیز ساده مثل حیوان خانگی میتواند مدلهای بینهایت داشته باشد و این تازه دشواریهایی در ارتباط با یک موضوع است.
کسی به یک کودک نمیگوید چگونه ببیند، بهویژه در سالهای ابتدایی که تازه قادر به درک جهان پیرامون خود است. آنها این کار را از طریق تجربیات و مثالهای دنیای واقعی یاد میگیرند.
اگر چشمهای یک کودک را مثل یک جفت دوربین بیولوژیک در نظر بگیرید، آنها هر ۲۰۰ میلیثانیه یک تصویر میگیرند، مدتزمان متوسطی که حرکت چشم صورت میگیرد. پس تا سهسالگی یک کودک صدها میلیون تصویر از دنیای واقعی دیده است که به معنای حجم بسیار گستردهای از مثالهای آموزشی است.
پس بهجای تمرکز صرف بر الگوریتمهای بهتر باید به این نکته دقت کنید که به الگوریتمها آن دسته از دادههای آموزشی را بدهید و با آنها درست مثل یک کودک رفتار کنید.
وقتی این موضوع را متوجه شوید، در مرحله بعد به این فکر خواهید افتاد تا به جمعآوری مجموعه اطلاعاتی بپردازید که نیاز است. هرچه تصاویر بیشتری داشته باشید، کیفیت کار و خروجی الگوریتم بهتر خواهد شد.
بهترین منبع در این زمینه اینترنت است که بزرگترین گنجینه عکسها که انسانها تاکنون گرفتهاند را میزبانی میکند. به طور مثال، در برخی موارد کارشناسان از یک میلیارد عکس و فناوریهایی مثل CrowdSourcing و Amazon Mechanical Turk platform برای برچسبزنی این عکسها استفاده میکنند.
برای انجام این کار به تیم بزرگی نیاز دارید که قادر به سازماندهی تصاویر، اصلاح، مرتبسازی و برچسبگذاری تصاویر باشند. جالب آنکه تمامی این کارها معادل کاری است که ذهن یک کودک در سالهای اولیه تکامل خود انجام میدهد. پس از گذشت زمان و کسب تجربه ایده استفاده از حجم عظیمدادهها برای آموزش الگوریتم رایانهها، بدیهی به نظر برسد.
به طور مثال، در یک نمونه تحقیقاتی در سال ۲۰۰۹ پروژه ImageNet یک پایگاهداده از 15 میلیون عکس در وسعت ۲۲٫۰۰۰ کلاس از اشیا که با کلمات انگلیسی روزمره منظم شده بودند را در اختیار تیمی از پژوهشگران هوش مصنوعی قرار داد. به لحاظ کیفیت و کمیت این مقیاس بیسابقه بود. بهعنوان مثال در مورد گربهها بیش از ۶۲٫۰۰۰ (تصویر) گربه در انواع شکلها، فرم بدن و در تمام گونههای اهلی و وحشی ارایه کرد.
حالا که دادهها را برای تغذیه مغز رایانه در اختیار دارید، آماده هستید تا برگردید سراغ خود الگوریتمها، زیرا از طریق پروژههایی مثل ImageNet دسترسی به اطلاعات طبقهبندی شده و کامل که برای آموزش الگوریتمهای یادگیری ماشین نیاز است در اختیار دارید.
درست مثل مغز که از میلیاردها نورون پیوسته تشکیل شده یک واحد عملیاتی بنیادی در یک شبکه عصبی یک گره نورون مانند است. از گرههای دیگر ورودی میگیرد و خروجی را به دیگر گرهها میفرستند.
بهعلاوه، این صدها یا هزاران یا حتی میلیونها گره در لایههایی با سلسلهمراتب منظم شدهاند، مانند مغز. در یک شبکه عصبی نوعی، برای آموزش مدل تشخیص اشیا، 24 میلیون گره، 140 میلیون پارامتر، و 15 میلیارد اتصال وجود دارد. این یک مدل عظیم است.
با استفاده از نیروی عظیمدادهها از ImageNet و پردازنده مرکزی و گرافیکی برای آموزش چنین مدل یکدستی، شبکه عصبی درهمتنیده ایجاد میشود. شبکهای که قادر است پس از آموزش از طریق مشاهده میلیونها عکس میتواند به شما بگوید این تصویر شامل یک گربه است و اینکه گربه کجای تصویر قرار دارد.
البته پیادهسازی یک چنین شبکههای عصبی برای کاری بهمراتب فراتر از تشخیص گربهها استفاده میشوند و به طور مثال یک الگوریتم رایانهای میتواند به شما بگوید در یک تصویر یک پسر و یک عروسک خرسی؛ یک سگ، یک آدم و بادبادک کوچک در پسزمینه وجود دارد یا تصویر شامل چیزهای شلوغتر مثل یک مرد، تخته اسکیت، نردهها، تیر چراغبرق و چیزهای دیگر است. گاهی اوقات که کامپیوترها اطمینان ندارند از چیزی که به آن نگاه میکنند، باید به آنها کمک کنید تا بهاندازه کافی باهوش باشند تا یک جواب مطمئن به شما بدهند، درست مثل کاری که انسانها انجام میدهند.
بهطور مثال، اگر میلیونها عکس منظره خیابانها در شهرهای مختلف را در اختیار الگوریتم قرار دهید و کدنویسی آن به درستی انجام شده باشد، به اطلاعات جالبی دست پیدا میکنید، بهطوری که الگوریتم به شما نشان میدهد که قیمت خودرو وابستگی زیادی به درآمد خانوارها دارد یا اینکه، قیمت خودرو بستگی زیادی به نرخ جرایم در شهرها یا الگوی رای دادن در شهرها بر اساس کدپستی دارد.
تا اینجا به کامپیوتر یاد دادیم که اشیا را ببیند. این مثل این هست که کودک یاد بگیرد چند اسم بگوید. این یک موفقیت باورنکردنی است، اما فقط اولین قدم است.
بزودی یک مرحله مهم طی خواهد شد و کودکان یاد میگیرند تا از طریق صحبت گفتن ارتباط برقرار کنند. پس به جای اینکه بگوید این یک گربه در این عکس است الگوریتم باید به اندازهای کارآمد باشد که بگویید یک گربه خوابیده روی تخت است.
برای آنکه به کامپیوتر آموزش دهیم تصویری که مشاهده میکند را در قالب جملاتی شرح دهد باید به سراغ پیوند بین دادههای عظیم و الگوریتم آموزش ماشین بروید که گام بعدی است.
حالا رایانه باید هم از تصاویر یاد بگیرد هم از جملات زبان طبیعی که توسط انسان تولید میشوند، استفاده کند. درست مثل مغز که بینایی و زبان را به هم میآمیزد شما نیز باید مدلی ایجاد کنید که قسمتهای اجسام بصری مانند خرده تصاویر را به کلمات و عبارات در جملات پیوند بزند.
در مجموع باید به این نکته دقت کنید که ابتدا به ماشینها بینایی ببخشید، به آنها دیدن را یاد بدهید تا آنها بتوانند به شما در شناخت بهتر تصاویر کمک کنند.