کرانستان بلاک‌چین‌ها Extremistan of Blockchains

پیش‌نوشت: این مطلب، الهام گرفته از نوشته‌ی دیگریست. نسخه‌ی اصلی و مفصل‌تر در New York Times (حدود ۹۰۰۰ کلمه انگلیسی)

همانطور که می‌دانید اینترنت توسط تعدادی محقق که از دولت آمریکا برای تحقیقاتشان سرمایه جذب می‌کردند توسعه پیدا کرد تا این امکان را فراهم کند که دو کامپیوتر بتوانند ارتباطی بدون نقص با هم داشته باشند. به سنت معمول کارهای اکادمیک، پس از حدود بیست سال نتایج این تحقیقات در قالب یک پروتکل استاندارد منتشر شد تا همه بتوانند به رایگان از آن استفاده کنند. مشابه همین اتفاق برای پروتکل‌های ارتباطی ایمیل (POP, IMAP, SMTP) هم رخ داد و هرکسی می‌توانست بدون اینکه ریالی به سازندگان این پروتکل بپردازد، از امکاناتی که اون‌ها ایجاد کرده بودند در بستر اینترنت ( که اون هم پروتکل مشابهی بود) استفاده کند. GPS هم کمابیش به همین شکل به دست عموم مردم رسید. (قبل از انتشار، توسط ارتش آمریکا توسعه و استفاده می‌شد.)

ویزگی مشترک همه‌ی این پروتکل‌ها این بود که کسی مالک این پروتکل و محتویات داخل آن نبود و کسی همه‌ی اطلاعات رو نداشت. (یا نمی‌توانست داشته باشد.) طبیعتا مالک هر اطلاعاتی، کسی بود که ان را تولید کرده بود. لایه‌ی اول تکنولوژی‌هایی که در آن سال‌ها توسعه داده شد عموما این ویژگی مشترک را داشتند. طبعا نقاط خالی‌ای هم در این پروتکل‌ها پیدا می‌شد. برای مثال، نحوه‌ی ارسال و دریافت نامه مشخص بود، اما مکانیزمی برای ارسال و دریافت پول وجود نداشت. یا مکانیزم مشخصی برای تعیین هویت افراد و مشخص کردن ارتباطات افراد تعیین نشده بود. به دلیل همین کم و کاستی‌ها، در لایه‌ی دوم این تکنولوژی‌ها، شرکت‌های خصوصی، سرویس‌هایی را بر روی همین پروتکل‌ها سوار کردند تا بتوانند این ضعف را جبران کنند. مانند فیسبوک و اینستاگرام که عملا به شناسنامه‌ی آنلاین افراد تبدیل شده و شما حتما در سایت‌های مختلف گزینه‌ی Sign in with Facebook رو مشاهده کرده‌اید. همچنین بانک‌ها و موسسات مالی کار پرداخت‌های مالی را روی لایه‌ی قبلی سوار کردند.

خانه‌ی اجاره‌ای

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

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

به عقب برمی‌گردیم؟

حال چرا این دو لایه با این تفاوت‌های اساسی ایجاد شدند؟ اگر مشکلاتی یا فرصت‌هایی باعث ایجاد سرویس‌ها به جای پروتکل‌ها شدند، ما چگونه انتظار داریم بتوانیم قدمی رو به عقب برداریم؟

گفته می‌شود دو عامل اساسی در این روند تاثیر گذار بوده.

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

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

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

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

تغییر پارادایم

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

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

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

Initial Coin Offering

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

پروتکل در برابر سرویس

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

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

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

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

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

تحلیل محتوای وبلاگ محمدرضا

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

از اونجایی که این سیستم لازم داره حجم زیادی از متن رو به عنوان خوراک دریافت کنه، با خودم گفتم چه جایی بهتر از وبلاگ محمدرضا شعبانعلی؟ در نتیجه یک خزنده (Crawler) نوشتم که متن تمامی پست‌ها و کامنت‌های اونجا رو ذخیره کنه. (مدل ساده‌ی شده‌ی کاری که گوگل می‌کنه.) حاصل نهایی کار شد این عکسی که می‌بینید. چند قسمت خیلی جالب برای من داشت. مثلا سیستم تونسته  ضمیرها رو تشخصی بده و کنار هم قرارشون بده. (پایین سمت راست) یا تمامی افعال هم‌خانواده کنار همن. یا کلمات «هرگز» و «اصلا» تقریبا روی هم قرار دارن. همچنین «تنها» و «فقط». و…

تحلیل متن فارسی

برای شلوغ نشدن عکس، فقط ۵۰۰ تا از کلمات رو توی عکس نشون دادم. برای دیدن در اندازه‌ی بزرگ‌تر، روی عکس کلیک کنید.

پی‌نوشت۱: کلمه‌ی «شعبانعلی» دقیقا کنار «عزیز» و «جان» نشسته. چقدر هم که درسته 🙂

پی‌نوشت: محمدرضای عزیز. در حین خزیدن در وبلاگت، به این نتیجه رسیدم که ظاهرا پست لحظه نگار خودت مشکل داره. حداقل برای من که اصلا نشون داده نمیشه. نمی‌دونم مشکل از منه یا نه. خواستی یه بررسی بکن.

مصاحبه‌ای از ایلان ماسک

Elon-Musk

در حال گشت و گذار در اینترنت بودم که مصاحبه‌ای از ایلان ماسک را دیدم. از آنجایی که علاقه‌ی بسیار شدیدی به او دارم، در دیدن آن تردید نکردم. قسمتی از صحبت‌های حاشیه‌ای ایلان را بسیار دوست داشتم. آن را (به مضموم برایتان نقل می‌کنم)

مجری: زمانی که صحبت از ریسک می‌شود، شما معمولا مثال شرکت SpaceX را می‌زنید. ظاهرا تصمیمتان بیشتر شبیه دیوانگی بوده.

ماسک: بله. دیوانگی بود. اگر انتظار بیشترین بازده را در ازای ریسک حساب شده داشتیم، حماقت بود. ولی هدف ما چیز دیگری بود. به این نتیجه رسیده بودم که اگر حرکتی در حوزه‌ی فضانوردها رخ ندهد، باید مدت‌ها در همین حد بمانیم. شرکت SpaceX علاقه‌ای به خلاقیت رادیکال نداشت. ما فقط می‌خواستیم تکنولوژی قدیمی را هرساله کمی بهتر کنیم. و حتی واقع بعضی وقت‌ها روند معکوس داشتیم. این اتفاق در صنعت هوافضا رخ داده. برای مثال ما در سال ۱۹۶۹ به ماه رفتیم. اما بعد از بازنشستگی ایستگاه فضایی این روند به هیچ تبدیل شد. «شاید شما فکر کنید تکنولوژی به صورت خودکار سالانه بهتر می‌شود. ولی در واقع اینگونه نیست. فقط در صورتی این اتفاق رخ می‌دهد که افراد باهوش، دیوانه‌وار برای آن تلاش کنند. تکنولوژی اینگونه رشد می‌کند. و اگر برای بهبود آن کار نکنیم افول خواهد کرد. به تاریخ تمدن‌ها مراجعه کنید. برای مثال امپراطوری مصر باستان قادر بود آن اهرام شگفت انگیز را بسازد یا با خطوط مخصوص خود بنویسد. اما آن‌ها را فراموش کرد. یا به تمدن روم نگاه کنید. توانسته بودند آن راه‌های جادویی را بسازند. رومی‌ها خطوط لوله‌کشی شده به خانه‌ها داشتند. ولی همه‌ی آن را فراموش کردند. از این مثال‌ها در تاریخ بسیار است.»

پ.ن: اصل مصاحبه را می‌توانید از یوتیوب ببینید.

تشخیص احساسات با هوش مصنوعی

متنی که خدمتتان ارائه می‌شود، در واقع ترجمه‌ای است بر مقاله‌ای که در مدرسه‌ی تابستانه‌ی ولفرم در ارمنستان منتشر کردم. (در نوشته‌ی قبلی تجربه‌هایی جهت حل مشکلات خروج از کشور نوشته‌ بودم.) متن زبان اصلی این مقاله در کامیونیی ولفرم را در این لینک می‌توانید پیدا کنید.

The big image on the left side is the Input, and on the right side is the Output

عکس سمت چپ، ورودی برنامه، و عکس‌های سمت راست به همراه احساس نوشته شده در ذیل آن، خروجی برنامه می‌باشد.

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

The big image on the left side is the Input, and on the right side is the Output

جمع آوری داده

در این تحقیق ۴ پایگاه داده مختلف استفاده شده بودند:

  1. Cohn-Kanade AU-Coded Expression Database (+)
  2. Japanese Female Facial Expression (+)
  3. FaceTales (+)
  4. Yale face database (+)

هر پایگاه داده، احساسات مخصوص به خودش را مشخص کرده، در نتیجه نیاز بود تا احساسات مورد نیاز و مورد قبول فیلتر شوند که در نهایت ۷ احساس مختلف، به همراه حالت خنثی انتخاب شدند. سهم هر یک از این ۸ حالت را در ۴۲۱۱ داده‌ی ابتدایی پروژه مشاهده می‌نمایید:

  1. خوشحال (۸۴۴)
  2. ناراحت (۴۱۲)
  3. خشمگین (۶۵۹)
  4. منزجر (۵۹۲)
  5. ترسیده (۴۰۸)
  6. خجالتی(۸۱)
  7. شگفت زده (۷۷۵)
  8. خنثی (۴۴۰)

Samples

تعدادی از احساسات از پایگاه داده‌های مختلفی اقتباس شده‌اند.

شرایط دشوار

در دنیای واقعی هیچ تضمینی وجود ندارد که افراد دقیقا در مقابل دوربین، با زاویه درست و نور مناسب قرار بگیرند، (شرایطی که افراد پایگاه‌داده دارند) جهت بهبود عملکرد برنامه در شرایط غیر استاندارد نیاز داشتیم تا داده‌های ورودی را به این شرایط نزدیک‌تر کنیم. بدین منظور تمامی عکس ها را ۵، ۱۰ و ۱۵ در جفت جهت ساعت گرد و پات ساعت گرد گردش دادیم و ضمنا آن را از چپ به راست قرینه نیز کردیم. در نتیجه تعداد داده‌های در دسترس ۱۴ برابر بیشتر گردید.

پیش فرایند

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

The big image on the left side is the Input, and on the right side is the Output

شبکه‌ی عصبی

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

LeNet Neural Network

The big image on the left side is the Input, and on the right side is the Output

آموزش شبکه عصبی

داده ها را به سه قسمت تقسیم کردیم: داده‌های تست (۱۰۰۰ تصویر)، داده‌های اعتبارسنجی (۳۰۰۰ تصویر)، و داده‌های آموزش (۵۴۹۵۴ تصویر).

آموزش این داده ها به شبکه عصبی، تقریبا ۱۴ ساعت در ۱۰ راند، روی پردازشگر Intel Core i5 4210U روی ویندوز ۱۰ ورژن ۶۴ بیتی به طول انجامید. پس از آموزش، برنامه روی داده های تست، ۹۸.۵٪ دقت را نشان می‌داد

The big image on the left side is the Input, and on the right side is the Output

مشکلات و بهبود های بعدی

جهت تشخیص صورت افراد، در مرحله‌ی پیش فراید، از دستور داخلی زبان ولفرم به نام FindFaces[] استفاده شده است. این دستور هنوز در مرحله‌ی تکامل قرار دارد و دقت بالایی ندارد. ممکن است قسمت بی‌معنی‌ای را به عنوان چهره انتخاب کند یا چهره‌ای که بیش از ۲۵ درجه انحراف داشته باشد را تشخیص ندهد. برای حل مشکل اول، رابط کاربری‌ای تعبیه شده تا در صورت عدم رضایت از چهره‌های پیدا شده، کاربر بتواند با کلیک بر روی تصویر مورد نظر آن را حذف نماید. اما حل مشکل دوم نیازمند تلاش های بسیار بیشتری خواهد بود.

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

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

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

Iman Nazari And Mikayel Egibyan

 نتیجه گیری

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

در صورت تمایل به آزمایش، افراد می‌توانند با دانلود این فایل (لینک بک‌آپ) و قرار دادن آن در مسیر  $HomeDirectory و سپس اجرای دو بخش انتهایی کدها در این فایل، خود نتایج را مشاهده فرمایند. داشتن نرم افزار مثمتیکا جهت اجرای این فایل، ضروری می‌باشد. (از این لینک نرم افزار مثمتیکا را می‌توانید دانلود کنید)

ضمنا در ادامه‌ی مطلب می‌توانید نمونه کارهای بیشتری از این برنامه را مشاهده فرمایید.

ادامه مطلب

تعویض دامنه‌ی سایت

شاید پیش بیاید که بخواهید بدون تغییر محتوا، و حتی تغییر سرور پشتیبانی کننده‌ی خود، آدرس یا اصطلاحا دامین سایت خود را تعویض کنید. احتمالا تا الان برای سایت خود زحمات زیادی کشیده‌اید و مایل نیستید که به راحتی اعتباری که گوگل و دیگر موتورهای جستجو برایتان قائل هستند (SEO) را از دست بدهید. از آنجایی که این عملیات را یکبار انجام داده‌ام(از اینجا به اینجا) امیدوارم بتوانم شما را راهنمایی کنم. ادامه مطلب