TensorFlow

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

در مورد کتابخانه TensorFlow

کتابخانه TensorFlow

مدت چندان زیادی از ورود کتابخانه TensorFlow به دنیای برنامه‌نویسی نمی‌گذرد. نسخۀ 1.0.0 آن در سال 2017 بود که عرضه شد. نام آن برگرفته از عملیاتی است که شبکه‌های عصبی روی آرایه‌های چندبعدی انجام می‌دهند. توسعه دهندگان، کدهای موجود در TensorFlow را به زبان‌های برنامه‌نویسی پایتون و C++ نوشته‌اند. در حال حاضر این کتابخانه برای سیستم‌عامل‌های لینوکس، ویندوز، مک و اندروید و  iOSدر دسترس است.

تیم Google Brain در شرکت گوگل کار ساخت کتابخانۀ TensorFlow را انجام دادند. تیم‌های تحقیقاتی گوگل برای محصولات مختلف این شرکت مانند Gmail، تصاویر گوگل، جستجو و... از کتابخانه تنسورفلو بهره می‌گیرند این کتابخانه متن‌باز امکان این را فراهم می‌سازد که بتوانید با کمک یک API محاسبات را بر روی یک یا چند CPU یا GPU توزیع و پردازش کنید. فرقی هم ندارد این پردازنده‌ها یا کارت‌های گرافیک مربوط به کامپیوتر شخصی، سرور یا موبایل باشند.

نسخۀ دوم این کتابخانه تحت عنوان TensorFlow 2.0 سال 2019 توسط گوگل معرفی شد. توسعه دهندگان در ساخت این نسخه بر سادگی و سهولت در استفاده متمرکز بودند. برای نصب کتابخانه تنسورفلو می‌توانید به سایت رسمی TensorFlow مراجعه کرده و آخرین ورژن را دانلود کنید.

TensorFlow Lite

شرکت گوگل در سال 2019 یک پشتۀ نرم‌افزاری را معرفی کرد که تنسورفلو لایت نام داشت. این محصول به طور ویژه برای توسعه موبایل عرضه شد تا گوشی‌های هوشمند هم از قابلیت‌های مختلف این کتابخانه بی‌بهره نمانند. به‌این‌ترتیب گوشی‌های اندرویدی و iOS توانستند با کمک TensorFlow بر قابلیت‌های خود بیفزایند.

ویژگی های کتابخانه TensorFlow

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

تنسورفلو

اول از همه باید به API پایدار این کتابخانه برای زبان‌های Python و C اشاره کرد. دومین ویژگی تنسورفلو اجرای مشتاقانه یا همان Eager Execution است. با کمک این ویژگی، پردازش عملیات بلافاصله پس از فراخوانی توسط زبان پایتون، اجرا می‌شود. به این ترتیب امکان ساخت سریع نمونه اولیه فراهم خواهد شد. ویژگی سوم وجود مجموعه‌ای بزرگ از توابع هزینه است که برای ارزیابی مدل‌های مختلف از آنها استفاده می‌شود. این توابع به‌طور کلی در محاسبه تفاوت بین دو تانسور کاربرد دارند. کتابخانه TensorFlow همچنین تعدادی بهینه‌ساز ارائه می‌دهد که در آموزش شبکه‌های عصبی به کار می‌روند. ADAGARD، ADAM و Stochastic Gradient Descent (SGD) از جمله بهینه سازهای این کتابخانه هستند.

یادگیری ماشین

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

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

کاربردهای مهم

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

کاربرد TensorFlow

تشخیص صدا

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

اپلیکیشن های مبتنی بر متن

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

تشخیص تصویر با کمک TensorFlow

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

سری های زمانی

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

کتابخانه TensorFlow و تشخیص ویدیو

تشخیص ویدیو در بخش‌هایی وارد حیطۀ کاری رابط کاربری و UX هم می‌شود. اما بیشترین کاربرد آن را امروزه می‌توان در زمینۀ بازی‌های کامپیوتری دانست. سیستم‌های موشن کپچر که در شبیه‌سازی حرکات کاراکترهای بازی نقش اساسی دارند از این تکنولوژی استفاده می‌کنند. به‌غیراز این حتی سازمان بزرگی نظیر NASA هم در برخی پروژه‌های خود این قابلیت را به کار می‌گیرد.