هوش مصنوعی
در حوزه هوش مصنوعی و مدیریت استراتژیک مطالب زیر قابل مشاهده هستند:
| هوش مصنوعی - یادگیری ماشین - یادگیری عمیق | برنامه نویسی هوش مصنوعی |
برخی از زبانهای برنامه نویسی هوش مصنوعی به ترتیب بیشترین استفاده و جامعیت به شرح زیر هستند:
|
در حوزه هوش مصنوعی و مدیریت استراتژیک مطالب زیر قابل مشاهده هستند:
| هوش مصنوعی - یادگیری ماشین - یادگیری عمیق | برنامه نویسی هوش مصنوعی |
برخی از زبانهای برنامه نویسی هوش مصنوعی به ترتیب بیشترین استفاده و جامعیت به شرح زیر هستند:
|
اسکالا یک زبان برنامه نویسی همه منظوره است که هم از برنامه نویسی شی گرا و هم از برنامه نویسی تابعی پشتیبانی میکند. این زبان برنامه نویسی در سال ۱۳۸۳ شمسی (۲۰۰۴ میلادی) برای رفع کاستیهای بسیار اندک زبان جاوا طراحی و توسعه یافته است. کدهای منبع زبان اسکالا برای اجرا در ماشین مجازی جاوا ایجاد شدهاند، به عبارت دیگر، پشتههای جاوا و اسکالا میتوانند در برنامهها به جای یکدیگر ادغام شوند. این زبان برنامه نویسی از بسیاری از کتابخانههای JVM پشتیبانی میکند و همچنین، میتواند ویژگیهای سینتکسی قابل خواندن خود را با سایر زبانهای برنامه نویسی محبوب به اشتراک بگذارد.
از آنجایی که بسیاری از برنامههای سیستم عامل اندروید با استفاده از زبان جاوا نوشته میشوند و اسکالا نیز کاملاً با این زبان سازگار است، میتوان از اسکالا برای توسعه اپلیکیشنهای اندرویدی استفاده کرد که در آنها از کاربردهای هوش مصنوعی بهره گرفته شده است. این زبان انتخابی مناسب برای برنامه نویسی هوش مصنوعی به حساب میآید؛ زیرا توانایی مدیریت الگوریتمهای پیچیده و جریانهای دادهای را دارد. اسکالا یک انتخاب مناسب برای ارتباط با موتورهای پردازش داده بزرگ از جمله �Apache Spark� است که با استفاده از این زبان نوشته شدهاند. محبوبیت زبان اسکالا برای ایجاد مدلهای یادگیری ماشین تا حدی توسط �Spark� و کتابخانههای یادگیری ماشین آن در حال افزایش است.
کتابخانههای Apache Spark MLlib و ML وظیفههایی مرتبط با �خوشهبندی� (Clustering)، دستهبندی و یادگیری نظارتشده را انجام میدهند. کتابخانه �BigDL� با Apache Spark ادغام شده است و مانند �Apache PredictionIO� یک پشته ارائه میدهد که ساخت و استقرار الگوریتمهای یادگیری ماشین را ساده میکند.
زبان برنامه نویسی «اعلانی» (Declarative) و «منطقی» (Logical) پرولاگ در ابتدا برای پردازش زبانهای طبیعی توسعه یافته بود. در حقیقت، در شرکت IBM از زبان پرولاگ برای تجزیه و تحلیل زبانهای طبیعی در هنگام طرح سوالات ایجاد شده توسط انسان استفاده میشود. در این زبان برنامه نویسی هنگامی که کاربر قوانین و راه حلهای مورد نظر را ارائه میدهد، Prolog ادامه آن را با استفاده از حقایق و قوانین موجود در یک پایگاه داده حل میکند. ویژگیهای تطبیق الگوی قدرتمند و قابلیت استدلال سطح بالا در این زبان برنامه نویسی آن را به زبانی بسیار مفید برای هوش مصنوعی تبدیل کرده است.
طبیق الگوی پرولاگ، برای حوزه پردازش زبان طبیعی، «جستجوی هوشمند پایگاه داده» (Intelligent Database Search) و بینایی ماشین ویژگی سودمندی به حساب میآید. همچنین این ویژگیها همراه با ساختمان دادههای درختی و روشهای ردیابی خودکار، Prolog را به یک زبان برنامه نویسی سازگار و انعطافپذیر تبدیل میکنند. علاوه بر این، فهرستهای (لیست) از پیش نوشته شده و داخلی این زبان برنامه نویسی، ایجاد برنامههای مدیریت فهرست را ساده خواهد کرد. این مسئله به صورت بازگشتی است و میتوان گفت این زبان حل مسائل بازگشتی را نیز انجام میدهد.
سادگی حل مسائل بازگشتی با استفاده از این زبان به برنامه نویسها امکان ایجاد برنامههای فشرده و قابل فهمی را هنگام مواجه شدن با مشکلات پیچیده پروژههای هوش مصنوعی خواهد داد. مجموعه گستردهای از برنامههای هوش مصنوعی نیز به صورت بازگشتی حل میشوند و زبان پرولاگ یک انتخاب مناسب برای برنامه نویسی این نوع از پروژهها به حساب میآید.
++C، یک زبان برنامه نویسی شی گرا همراه با کارایی و سرعت پردازش بالا است. این زبان برای پیادهسازی مدلهای یادگیری ماشین پیچیده با کدهای فشرده معمولاً عملکرد مطلوبی را از خود نشان میدهد. از آنجایی که ++C زبانی با نوع «ایستا» (Static) به حساب میآید، خطاهای نوع در طول زمان اجرای آن ظاهر نمیشوند.
همچنین این زبان، در «تعادل بار پویا» (Dynamic Load Balancing)، «کَش تطبیقی» (Adaptive Cache) و مدیریت حافظه به خوبی عمل میکند و به همین دلیل جهت ساخت فریم ورکهای مقیاسپذیر برای دادههای بزرگ انتخاب خوبی است. بسیاری از کتابخانههای یادگیری ماشین و یادگیری عمیق به وسیله زبان ++C نوشته شدهاند. در ادامه برخی از این کتابخانهها فهرست شدهاند:
زبان ++C معمولاً در برنامههای کاربردی هوش مصنوعی با «منابع فشرده» (Resource-Intensive) استفاده میشود که نیاز به اجرای سریع دارند.
LISP دومین زبان برنامه نویسی قدیمی بعد از «فرترن» (Fortran) به حساب میآید، اما هنوز هم به دلیل مزایای بسیاری که دارد در برخی از پروژههای سنگین یادگیری ماشین مورد استفاده قرار میگیرد، این مزایا در ادامه ارائه شدهاند:
زبان برنامه نویسی LISP قادر به پردازش اطلاعات نمادین است و در زمینههایی که شامل محاسبه با نمادها و اطلاعات نمادین هستند، هنوز هم به خوبی عمل میکند. «هوش مصنوعی نمادین» (Symbolic AI) روش اولیهای است که برای حل مسئلههایی مورد استفاده قرار میگیرد که نیاز به تفکر منطقی و بازنمایی دانش دارند. با گذشت زمان، بسیاری از ویژگیهای خاص زبان برنامه نویسی LISP در سایر زبانهای محبوب قرار گرفتند. برای مثال عبارت «خلاصه لیست» (List Comprehension) در پایتون، #C و LINQ از این زبان به آنها انتقال یافته است.
Haskell یک «زبان برنامه نویسی تابعی» (Functional Programming Language) به حساب میآید که بر اساس «معناشناسی» (Semantics) زبان «Miranda» ایجاد شده است. این زبان برنامه نویسی در زمینه یادگیری ماشین، امنیت و سرعت خوبی دارد. از آنجایی که هسکل یک زبان تعبیه شده با دامنههای خاص به حساب میآید، در تحقیقات هوش مصنوعی دانشگاهها جایگاه خوبی به دست آورده است. اما شرکتهای بزرگ نرم افزاری از جمله فیسبوک، این زبان را برای ساخت فریم ورکهایی برای مبارزه با «بدافزارها» (Malware) استفاده میکنند.
با استفاده از کتابخانه «HLearn»، زبان برنامه نویسی Haskell پیادهسازیهای الگوریتمی را برای یادگیری ماشین انجام میدهد و تنسورفلو از یادگیری عمیق آن پشتیبانی میکند. این زبان به برنامه نویسها امکانی میدهد تا الگوریتمهایی بدون کاهش عملکرد ایجاد کنند. همچنین هسکل برای پروژههایی مناسب است که دارای «ریاضیات انتزاعی» (Abstract Math) و «برنامه نویسی احتمالی» (Probabilistic Programming) هستند.
با استفاده از این زبان، برنامه نویسها میتوانند مدل را با کدهای اندکی ایجاد کنند و خطوط نوشته شده را مانند معادلههای ریاضی بخوانند. بنابراین میتوان در نهایت به این نتیجه رسید که زبان هسکل میتواند پیچیدگی مدل یادگیری عمیق را با کدهای تمیز و شبیه به ریاضیات واقعی مدل نشان دهد.
هدف از طراحی این زبان برنامه نویسی پویا، بیشتر برای تجزیه و تحلیل عددی و علوم محاسباتی است. زبان Julia توسط شرکت MIT در سال ۱۳۹۱ شمسی (۲۰۱۲ میلادی) توسعه یافته است و نسبتاً زبان جدیدی به حساب میآید. این زبان برنامه نویسی به دلیل سرعت بالا، ظرفیت محاسباتی قدرتمند و ساختار نحوی شبیه به اسکریپت نویسی به سرعت در حال محبوب شدن میان برنامه نویسها است. جامعه برنامه نویسی این زبان به سرعت در حال رشد است و این مسئله به پشتیبانی هر چه بهتر از آن کمک میکند. برخی از کتابخانههای یادگیری ماشین زبان برنامه نویسی Julia شامل موارد زیر هستند:
زبان Julia میتواند به طور یکپارچه الگوریتمها را از مقالههای تحقیقاتی به کدها تبدیل کند، همچنین ریسک مدل را کاهش و امنیت آن را افزایش میدهد. علاوه بر این، Julia این امکان را به متخصصهای یادگیری ماشین میدهد تا یک مدل را تخمین بزنند و آن را با استفاده از همان زبان در تولید به کار ببرند. جولیا یک زبان برنامه نویسی مناسب برای آن دسته از برنامههای هوش مصنوعی است که به محاسبات عددی قدرتمند نیاز دارند.
زبان برنامه نویسی R به صورت اختصاصی برای محاسبات آماری ساخته شده است. زبان R زبانی قدرتمند به حساب میآید که برای کاربردهای یادگیری ماشین و هر نوع دیگری از عملکردهای هوش مصنوعی استفاده میشود که در آنها باید محاسبات گسترده یا تحلیل داده انجام شود.
زبان R توسط متخصصین آمار برای محاسبات آماری توسعه یافته است. از آنجایی که این زبان برنامه نویسی میتواند مجموعه دادههای گستردهای را مورد بحث و بررسی قرار دهد، در توسعه نرم افزارهای آماری، تجزیه و تحلیل دادهها و «تجسم یا مصورسازی دادهها» (Data Visualization) استفاده میشود. زبان برنامه نویسی R یکی از بهترین انتخابها برای پروژههای یادگیری ماشینی است که شامل تجزیه و تحلیلهای گسترده هستند و روشهای گوناگونی را برای آموزش و ارزیابی مدل ارائه میدهند. R زبانی قدرتمند برای برای یادگیری ماشین است و «بستههای» (Package) فراوانی در این زمینه دارد که دو نمونه از آنها در ادامه نمایش داده شدهاند:
همچنین، محیط تعاملی زبان R برای نمونهسازی سریع و بررسی مشکلات جدید بسیار مناسب است. به طور کلی میتوان گفت که این زبان چندان برای استقرار مدلهای یادگیری ماشین در تولید به کار نمیرود و بیشتر ابزاری برای کارهای اکتشافی در فرآیند انتخاب مدل به حساب میآید.
یکی از بزرگترین نقاط قوت زبان R محیط تعاملی این زبان است که شبیهسازی سریع و انتخاب مدل کاوشگرانه را بسیار آسان میکند.
رنامه نویسی هوش مصنوعی به اجرای سریع و زمان اجرای پرسرعت بسیار وابسته است. زبان جاوا این ویژگیها را دارد؛ به همین سبب با استفاده از این زبان برای برنامه نویسی هوش مصنوعی ارزش تولیدی بسیار مطلوبی فراهم میشود و امکان یکپارچهسازی عالی و بیعیب و نقص با استفاده از تمام چارچوبهای تحلیلی کلیدی در جاوا فراهم شده است.
به لطف فناوری ماشین مجازی جاوا، عملیات پیادهسازی با استفاده از این زبان در پلتفرمهای بسیاری امکانپذیر است. این یعنی وقتی اپلیکیشن هوش مصنوعی مربوطه نوشته میشود و کامپایل آن روی یک پلتفرم خاص صورت میگیرد، میتوان به سادگی با استفاده از شیوه یک بار نوشتن و اجرای چندین باره، آن را روی پلتفرمهای دیگر هم اجرا کرد. به همین دلیل است که بسیاری از پشتههای متنباز کلان داده بر بستر ماشین مجازی جاوا نوشته میشوند.
از جمله بزرگترین مزیتهای جاوا به عنوان زبان برنامه نویسی هوش مصنوعی میتوان به سادگی استفاده از آن، عیبیابی سریع، مدیریت حافظه، قابل حمل بودن و تطبیقپذیری مطلوب آن اشاره کرد. جاوا میتواند برای توسعه بسیاری از کاربردهای هوش مصنوعی از تجزیه و تحلیل دادهها گرفته تا پردازش زبان طبیعی، یادگیری عمیق، یادگیری ماشین و بسیاری از موارد دیگر مورد استفاده قرار بگیرد.
تعداد زیادی از کتابخانههای یادگیری ماشین برای زبان جاوا وجود دارند که از جمله میتوان Weka را نام برد که برای الگوریتمهای یادگیری ماشین، مدلسازی پیشگویانه و بسیاری از موارد دیگر استفاده میشود. همچنین تعدادی زیادی نرم افزار تحلیل آنلاین و ابزارهای متن باز داده کاوی مبتنی بر جاوا وجود دارند. بسیاری از ابزارهای محبوب پردازش کلان دادهها مثل Apache Hadoop ،Apache Hive و Apache Spark نیز با زبان جاوا نوشته شدهاند که این مسئله باعث میشود با استفاده از زبان جاوا امکان ادغام تمیز و بینقص با استفاده از این فریمورکهای تحلیل داده فراهم شود.
جاوا، «زبان برنامه نویسی شی گرا» (Object Oriented Programming | OOP) و بسیار قدرتمند به حساب میآید و دارای ساختار نحوی و اشکالزدایی ساده است. همچنین، جاوا زبانی پیشرو برای توسعه اپلیکیشنهای موبایل به شمار میرود و به شدت بر هوش مصنوعی متکی است. از زبان جاوا در صنعت استفاده بسیاری میشود، این زبان در اجرا و پیادهسازی برنامهها سریعتر از پایتون به نظر میرسد و برای پروژههای هوش مصنوعی و یادگیری ماشینی مناسب است که به سرعت بالا برای انجام پردازشهای خود نیاز دارند. همچنین، جاوا مقیاسبندی برنامههای بزرگ و پیچیده هوش مصنوعی را آسان میکند. این زبان برنامه نویسی دارای مجموعهای از کتابخانههای یادگیری ماشین است که در ادامه برخی از آنها معرفی شدهاند:
بسیاری از ابزارهای پردازش «کلان دادهها» (Big Data) محبوب، با استفاده از زبان جاوا نوشته شدهاند. برخی از این فریم ورکهای کلیدی در ادامه فهرست شدهاند:
همچنین فناوری «ماشین مجازی جاوا» (Java Virtual Machine | JVM) این امکان را به توسعه دهندگان میدهد که کدهای ثابتی را در همه پلتفرمهای پشتیبانی شده بنویسند و پیادهسازی کنند و بتوانند ابزارهای سفارشیشده بسازند. به طور کلی جاوا در تجزیه و تحلیل دادهها، یادگیری عمیق و پردازش زبان طبیعی کاربرد دارد و دارای پشتیبانی قدرمتمندی از جامعه برنامه نویسها است.
الگوریتمهای اساسی هوش مصنوعی مثل رگرسیون (Regression) و دستهبندی (Classification) به صورت تخصصی با استفاده از کتابخانه scikit-learn در پایتون قابل پیادهسازی هستند. همچنین با کتابخانههای Caffe ،Keras و TensorFlow نیز میتوان یادگیری عمیق را با ظرافت بالا اجرا کرد.
بسیاری از کتابخانههای دیگر هم وجود دارند که باعث شدهاند پایتون به عنوان یکی از دسترسپذیرترین و بهترین زبانهای برنامه نویسی هوش مصنوعی تبدیل شود؛ برخی از این کتابخانهها در ادامه فهرست شدهاند:
همچنین پایتون دارای اسناد جامع و پشتیبانی از طرف جامعه برنامه نویسها است و به راحتی با زبانهای برنامه نویسی دیگر ادغام میشود.
برنامه نویسی نقش بسیار مهم و پررنگی در پیادهسازی کارکردها و عملکردهای هوش مصنوعی دارد. برنامه نویسی هوش مصنوعی میتواند معنیهای مختلفی داشته باشد. از ایجاد برنامههایی برای اجرای عملیات تشخیص الگو (با استفاده از یادگیری ماشین) گرفته تا «سیستمهای خبره» که حوزهای بسیار تخصصی است همگی جز برنامه نویسی هوش مصنوعی به حساب میآیند.
معمولاً برنامه نویسی هوش مصنوعی شامل برنامه نویسی کارکردهایی نظیر جستجو در فضای جواب، استفاده از برخی روشها (ساده یا پیچیده) و سایر مواردی میشود که برای رسیدن به پاسخی که با برخی از شرطهای خاص مطابقت دارد مورد استفاده قرار میگیرد.
بهترین زبان برای برنامه نویسی هوش مصنوعی وجود ندارد. در واقع فرایند توسعه به قابلیتهای عملکردی هوش مصنوعی بستگی دارد که مورد نیاز هستند و باید پیادهسازی شوند.
رخی از محبوبترین و پراستفادهترین زبانهای برنامه نویسی هوش مصنوعی به شرح زیر هستند :
پایتون - جاوا - R -جولیا - هسکل - لیسپ - پرولوگ - اسکالا - متلب
هوش مصنوعی:
هوش مصنوعی به مجموعهای از تکنیکها و سیستمهای کامپیوتری گفته میشود که هدف آنها تقلید و شبیهسازی رفتارهای هوشمندانه انسانها است. این سیستمها میتوانند اطلاعات را پردازش کنند، از تجربیات خود یاد بگیرند و حتی تصمیمات پیچیده اتخاذ کنند.
هوش مصنوعی مجموعهای از سیستمهای کامپیوتری است که میتوانند بسیاری از کارها مانند استدلال کردن، تصمیمگیری، حل مسئله و غیره را تا حد زیادی شبیه انسان و گاهی حتی بهتر و دقیقتر از انسان انجام دهند.
یادگیری ماشین :
فرایند استفاده از مدلهای ریاضی ساخته شده براساس دادهها توسط ماشینهای کامپیوتری است.هدف از یادگیری ماشین وسعه و ساخت سیستمی است که بتواند بدون دریافت دستورالعملهای دقیق و خط به خط، خودش یاد بگیرد و بیاموزد. در یادگیری ماشین سیستمی طراحی و ساخته میشود که به یادگیری ادامه میدهد و رفته رفته خودش را بر اساس تجربه بدست آمده بهبود میدهد.
یادگیری عمیق:
در واقع یادگیری عمیق زیرمجموعهای از یادگیری ماشینی و شاخهای از هوش مصنوعی بوده که هدف آن آموزش دادن ماشینها به وسیله دادهها، بدون برنامهریزی مستقیم است.در یادگیری عمیق نوعی شبکه عصبی از چندین لایه نورون مصنوعی است که با استفاده از مجموعه دادههای بزرگ آموزش داده میشود. این لایهها به مدلهای یادگیری عمیق اجازه میدهند تا دادههای پیچیده را بیاموزند و پیشبینیهای دقیق انجام دهند.
