هوش مصنوعی چیست؟
هوش مصنوعی یکی از مقوله هایی است که در علوم کامپیوتر، اهمیت فراوان دارد و تغییرات در هوش مصنوعی میتوانند تحولات گستردهای را در فناوری اطلاعات پدید بیاورند. در این مقاله قصد داریم که هوش مصنوعی را به شما معرفی کنیم.
هوش مصنوعی، هوش ماشین هاست! در واقع شاخهای از علوم کامپیوتر است که قصد دارد راه حلهای الگوریتمی را ارائه کند تا بتوانیم به وسیله آنها در ماشینها هوشمندی ایجاد کنیم. اما این تعریف کافی نیست؛ اول از همه باید بدانیم که تعریف هوشمندی چیست و بعد باید منظور از ماشین را دریابیم.
استدلال، منطق، تصمیمگیری؛ اینها توانایی هستند که شما از آنها استفاده میکنید. پس شما هوشمند هستید. اگر این تواناییها را در کامپیوتر هم ایجاد کنیم، آنگاه به ماشین هوشمند دست مییابیم! به همین سادگی … ولی به جز اینها چیزهای دیگری هم در رابطه با تعریف هوشمندی وجود دارند که دانستن آنها را میتوان مهم ارزیابی کرد. در واقع بحثهایی که در مورد هوشمندی و هوش مصنوعی مطرح شده است؛ تنها به دورهی امروزهی ما و قرن 21 مربوط نمیشود، بلکه از سال 1950 این مباحث به طور جدی مطرح شد.
پیشینهی هوش مصنوعی
باید گفت که از این نظر هوش مصنوعی یکی از غنیترین تاریخها را دارد، منتها در قصهها! ماشینها و مخلوقات مصنوعی باشعور، اولین بار در افسانههای یونان باستان مطرح شدند. شبه انسانها باور داشتند که باید یک تمدن بزرگ را تشکیل دهند؛ تندیسها و مجسمههای انسان نما در مصر و یونان به حرکت درآمده بودند و … حتی در مواردی این قصهها، پای جابر بن حیّان و چند تن دیگر را هم به سازندگان موجودات مصنوعی باز کردند.
از قصهها که بگذریم؛ فیلسوفها و ریاضیدانها از مدتها پیش مباحث مربوط به استدلال و منطق را پیش کشیدند و امروزه این مباحث به صورت قراردادی، به رسمیت پذیرفته شده است. این گونه منطقها اساس کامپیوترهای دیجیتال و برنامهپذیر شدهاند. یکی از افرادی که نقش اساسی و مهمی در این مورد ایفا کرد آقای آلن تورینگ بود.
نظریه تورینگ
تئوری تورینگ مبتنی بر این بود که میتوانیم با استفاده از نشانهها و اعدادی مانند 0 و 1، هر استدلال ریاضیای را در کامپیوتر عملی کنیم. همزمان با این نظریه کشفهای تازهای در زمینهی عصبشناسی، نظریه اطلاعات و فرمانشناسی، به وقوع پیوسته بود. این پیشرفتها الهام بخش گروهی کوچک از پژوهشگران شد تا به طور جدی به مساله ایجاد یک مغز الکترونیکی رسیدگی نمایند.
تست تورینگ
در سال 1950، آلن تورینگ مقالهای را در رابطه با هوش مصنوعی منتشر ساخت که بعدها به تست تورینگ مشهور شد. در این مقاله عنوان شده بود که اگر فردی از پشت یک دیوار یا هر چیز جدا کننده دیگری، با کامپیوتر مکالمه کتبی داشته باشد و نداند که طرف مقابلش انسان نیست و پس از پایان مکالمه نیز متوجه این موضوع نشود، آنگاه میتوان کامپیوتر را ماشینی هوشمند نامید، زیرا توانسته است که در برابر یک انسان به اندازه کافی از استدلال و منطق استفاده کند. تست تورینگ تا حدی توانست هوشمندی را توجیه کند ولی فقط ((تا حدی))! اما از آن زمان تا کنون ماشینی اختراع نشده است که توانسته باشد این تست را با موفقیت بگذراند. هر چند زبان AIML ابداع شد، اما این زبان هرگز به این حد از هوش مصنوعی دست نیافت.
تیمی که در زمینه هوش مصنوعی تحقیق میکردند، در تابستان سال 1956، کنفرانسی را در محوطه کالج دارتموس برگزار کردند. این کنفرانس به همراه افرادی مانند جان مک کارتی، ماروین مینسکی، آلین نویل و هربت سیمون که برای دههها پیشتازان تحقیق برای هوش مصنوعی بودند انجام شد. آنها و دانشآموزان آنها، برنامهای نوشته بودند که حقیقتاً برای عده زیادی از مردم شگفتآور بود. این برنامه میتوانست مشکلات نوشتاری در جبر را حل کند، استدلالهای منطقی را اثبات کند و به زبان انگلیسی سخن بگوید. در اواسط دههی 1960، بودجه سنگینی برای دایرکردن آزمایشگاههای تحقیقاتی در گرداگرد دنیا، از سوی حوزهی دفاعی ایالات متحده آمریکا، اختصاص داده شد. پیشتازان هوش مصنوعی درباره آینده آن در جهان بسیار خوشبین بودند. هربت سیمون پیشبینی کرده بود که در مدت 20 سال، کامپیوترهای هوشمند میتوانند، هر کاری را که انسان انجام میدهد، انجام دهند. در واقع مشکلات بزرگی که در آن زمان برای ایجاد هوش مصنوعی وجود داشت، اساساً حل شده بود.
مقایسه، استدلال و حل مسائل
خیلی زود توسعهدهندگان هوش مصنوعی به این نتیجه رسیدند که باید در الگوریتمهای خود از نحوه حل مساله ((گام به گام)) استفاده کنند. در واقع انسانها هم معمولاً برای حل مواردی از جمله: ساختن پازل و … از این روش استفاده میکنند. آنها همچنین توانستند که پس از دهههای 80 و 90 الگوریتمهای موفقیتآمیزی را برای درک دادهها و اطلاعات ناکامل عرضه کنند که این الگوریتمها از احتمالات، برای درک این اطلاعات استفاده میکردند.
برای حل مسائل سخت، بیشتر این الگوریتمها به کامپیوترهای بزرگ و قدرتمندی برای پردازش نیاز داشتند. بسیاری از این الگوریتمها به مقدار زیادی حافظه (رم) نیاز داشتند و حتی در صورت فراهم آمدن آن، با وجود سخت افزارهای آن زمان، مدت مورد نیاز برای پردازش نجومی بود. بنابراین میتوان این مساله را دریافت که: جستجو برای الگوریتمهای بهتر و مؤثرتر در آن زمان، از اولویتهای اصلی پژوهشگران هوش مصنوعی بود.
انسان برای حل مسائل خود خیلی سریع عمل میکند. چیزی که باید فهمید این است که اگرچه انسان در جمع و تفریق اعداد از کامپیوتر شکست میخورد، اما مسأله فقط جمع و تفریق نیست. در واقع اولین گام برای حل مسأله درک آن است و این چیزی است که برای انسان بسیار ساده و برای کامپیوترها بسیار سخت است. بر این اساس آنها به تحقیقات زیادی پرداختند و به این نتیجه رسیدند که باید برای بازدهی بیشتر از شبکههای عصبی استفاده کنند. این کار به آنها کمک میکرد تا بتوانند به ساختار اعصاب و مغز انسان و سایر حیوانات نزدیکتر شوند.
نمایش معلومات
نمایش معلومات و مهندسی معلومات مرکز توجه در پژوهشهای هوش مصنوعی بودند. بسیاری از دستگاههای حل مسأله برای حل مسائل نیازمند معلومات گسترده و وسیعی بودند این معلومات عبارت میشد از : شناختن اشیاء، خواص و اقلام- شناختن روابط بین اشیاء- درک موقعیت، نوع واقعه و زمان و مکان- علت ها و تأثیر عوامل و بسیاری چیز های دیگر.
و سختترین مشکلات درباره نمایش اطلاعات و معلومات عبارت بود از:
استدلال پیش فرض و مسائل نسبی: دانستهی یک فرد از یک چیز برابر است با پنداشت او از آن چیز، برای مثال وقتی نام پرنده به گوش کسی میخورد، معمولاً یک موجود کوچک را به یاد میآورد با صدای زیبا و قابلیت پرواز؛ در حالی که این موضوع برای همهی پرندگان صدق نمیکند. مثلاً پنگوئن هیچکدام از این ویژگیها را ندارد! جان مک کارتی این موضوع را به عنوان یک مسئله نسبی در سال 1969 کشف کرد. برای هر قضاوت صحیح (در تعریف عام) که محققان هوش مصنوعی، سعی در پیادهسازی آن داشتند، تعداد زیادی استثنا وجود داشت. بنابراین، آنها به این نتیجه دست یافتند که در قضاوت عام، نمیتوان یک چیز را مطلقاً درست یا غلط دانست بلکه همه چیز نسبی است. مثلاً وقتی به شما میگویند که فلان شخص، خوب است یا بد؟ شما اول به مواردی توجه میکنید که مهمتر هستند و بر این اساس در مورد خوبی و بدی قضاوت میکنید. در حالی که هیچ کس مطلقاً خوب یا بد نیست! در واقع شما اول به مواردی اهمیت میدهید که مهمتر است. محققان هوش مصنوعی هم با پیاده کردن چنین الگوریتمی توانستند این مشکلات را حل کنند.
سطح وسیع اطلاعات مورد نیاز برای قضاوت عام: منظور از قضاوت عام، همان نحوه قضاوتی است که در بالا توضیح داده شد که شما به نکاتی که بیشتر اهمیت دارند، امتیاز بیشتری اختصاص میدهید و آنها را ملاک قضاوت خود قرار میدهید. اما این نوع قضاوت، شاید در زندگی روزمره ما کار عادیای شده باشد؛ اما در واقع برای کامپیوتر این کار نیاز به اطلاعات پایهای زیادی در زمینه هستیشناسی و شناخت ویژگیهای موجودات دارد. محققان هوش مصنوعی میبایست، مفاهیم دقیق و پیچیدهای را با دست خود، به کامپیوتر میفهماندند. کار بزرگی که انجام شد این بود که توانستند کامپیوتر را قادر سازند که از منابع اطلاعاتی (نظیر اینترنت امروزی)، مفاهیمی را کسب کند و از این راه به اطلاعات خود در این باره بیافزاید.
استفاده از زبان Sub-Symbolic برای توضیح بعضی مفاهیم در قضاوت عام: بسیاری از معلوماتی که مردم دارند، چیزهایی است که نمیتوان آنها را تصویر کرد و یا توضیح داد. برای مثال یک شطرنج باز ماهر، از قرار دادن یک مهره در یک وضعیت خاص پرهیز میکند، زیرا احساس میکند که این کار خطرناک است و یا یک کارشناس و منتقد هنری با نگاه کردن به یک مجسمه و یا یک نقاشی تشخیص میدهد که آن جعلی و تقلبی است. پیاده کردن چنین الگوریتمهایی با استفاده از زبان سمبلیک ممکن نبود و باید از زبان دیگری بر پایه Sub-Symbolic استفاده میشد. قبل از هر چیز باید، توضیح مختصری از این دو را به شما ارائه کنیم:
در واقع اساس کار زبانهای سمبلیک بر پایه استدلال و نتیجهگیری و به طور کلی، منطق است. در این گونه زبانها برای متغیرها و توابع مقدارهای مشخصی در نظر گرفته میشود و بدین وسیله، هر متغیر حاوی بخشی از اطلاعات برنامه و هر تابع حاوی بخشی از قوانین استنباطی برنامه است. اما روش Sub-Symbolic تا حد زیادی متفاوت است. این روش از شبکههای عصبی برای پردازش اطلاعات استفاده میکند. این شبکههای عصبی از واحدهای ورودی، واحدهای پنهان و واحدهای خروجی تشکیل شدهاند که همگی با یکدیگر ارتباط دارند. این واحدها گاهی سلول عصبی نیز، خطاب میشوند. همانطور که گفته شد، این سلولهای عصبی با یک دیگر ارتباط دارند. اما چیزی که باید بدانید این است که اطلاعات در بین این ارتباطات، پردازش میشوند و بر این اساس ممکن است یک سلول عصبی در پردازش اطلاعات مؤثر و یا کم اثر باشد. در عوض، در شبکههای عصبی تمامی اجزا مهم تلقی میشود. چون هیچ کدام از آنها به تنهایی نمیتوانند، اطلاعات را پردازش کنند ولی وقتی تمام اجزا با هم کار کنند، موجب ایجاد یک عملکرد هوشمند میشوند. برای این که این روش را بهتر درک کنید، به این مثال توجه نمایید: یک مورچه تنها را در نظر بگیرید، طبعاً نه کاری میتواند بکند و نه اثری دارد، اما وقتی مجموعهای از این مورچهها جمع میشوند و یک کلونی را تشکیل میدهند، آنگاه جامعهای از آنها درست میشود که در کلیت، هوشمند و مؤثر است، به طوری که حتی ما هم با دانستن رازهای زندگی جمعی مورچهها، به فکر فرو میرویم! همین کار را هم میتوان با شبکههای عصبی انجام داد و یک شبه مغز را ایجاد کرد.
برنامهریزی: موجودات و به طور کلی، چیزهای هوشمند، باید بتوانند هدفهایی را برای خود تعیین کرده و به آنها دست یابند. برای این کار اولاً لازم است که تصوری از آینده خود داشته باشیم. یعنی وضع کنونی هدف مورد نظر را در نظر بگیریم و پیشبینی کنیم که تصمیماتی که خواهیم گرفت، چگونه میتواند بر آن تاثیر بگذارد. پس از این کار باید، برای رسیدن به بهترین نتیجه؛ از بین گزینههایی که داریم، بهترین و سودمندترین آنها را انتخاب نماییم. پس تصمیم گیری و برنامه ریزی از این روش، کاری است که بدون هوشمندی، نمی توان آن را انجام داد و فقط موجودات هوشمند از پس آن بر می آیند!
در مسائل کلاسیکی که در مورد برنامهریزی وجود داشت، عامل هوشمند میتوانست فرض کند که تنها یک چیز (هدف مورد نظر) در جهان فعال است و احتمالاً میتوان نتیجه آن را تغییر داد. بنابراین هدف مورد نظر تعیین میشد و برای آن راه حلهایی ارائه میگردید. همچنین عامل هوشمند – که میتواند برنامه و یا هر چیز دیگری باشد – به طور مرتب و دائمی چک میکرد که پیشگوییهایش درست باشد و اگر اینطور نبود، راه حل مورد نظر برای هدفش را تغییر میداد.
در این مورد میتوانید یک روبوت را در نظر بگیرید که میخواهد از یک مسیر مارپیچ عبور نماید. این روبوت ابتدا هر یک از این مسیرها را امتحان میکند و اگر هر کدام از آنها به بن بست، برخورد، آن را به حافظه میسپارد تا دوباره تکرارش نکند و این عمل را آنقدر ادامه میدهد که راه خودش را بیابد! ( این یک تعریف بسیار ساده بود).
یادگیری: ایجاد امکان یادگیری برای ماشینها، همواره از پژوهشهای اصلی در زمینهی هوش مصنوعی بوده است. یادگیری بدون نظارت: قابلیت یادگیری الگوها، از اطلاعات ورودی را فراهم میکند. یادگیری نظارت شده هم، میتواند هر دو امکان: طبقهبندی و عبرت عددی را ایجاد کند. طبقهبندی این امکان را میدهد که کامپیوتر بتواند تشخیص دهد که چه چیزهایی را میتوان در یک گروه خاص گنجاند. عبرت عددی (Regression takes) نیز به این صورت عمل میکند که بعد از دادن چیزهایی به عنوان ورودی به کامپیوتر و مشخص کردن خروجی دقیق آنها، کامپیوتر میتواند روابط بین ورودی و خروجی را کشف کرده و الگوریتمها و توابع پیوستهای را برای آنها تعیین کند. این روش برای به وجود آوردن الگوریتمهای بسیار پیچیده، مفید خواهد بود.
اجازه دهید تا در این مورد مثالی بزنیم: وقتی در حال رانندگی هستید و به عابران پیاده نگاه میکنید، میتوانید تا حد زیادی تشخیص دهید که آنها قصد چه کاری را دارند. مثلاً میخواهند از خیابان رد شوند یا این که تاکسی بگیرند و یا این که فقط سر جای خود ایستادهاند. خب، این کار برای من و شما نسبتاً ساده است اما اساساً برای نوشتن الگوریتم آن برای کامپیوتر، از دست یک انسان کاری ساخته نیست. با استفاده از روش عبرت عددی میتوان با روشهای خاص این مورد را با مثالهای زیادی به کامپیوتر و برنامهی مربوطه نشان داد و به تدریج الگوریتم مورد نیاز را تحویل گرفت. اما چیزی که باید هم اکنون به آن اشاره کرد، عملیات تقویت یادگیری است. این کار به این صورت انجام میپذیرد که تئوری تصمیمگیری کامپیوتر آنالیز شده و برداشتهای سودمند آن تئوری، مورد تأکید قرار میگیرند. در واقع کارهای درست با تشویق (به صورت اولویت دادن) و کارهای غلط با تنبیه (به صورت امتیاز منفی) پاسخ داده میشوند و به همین خاطر یادگیری کامپیوتر بهطور مرتب بهبود مییابد.
یادداشت: آنالیز الگوریتمهای یادگیری ماشینها، شاخهای از علوم نظری کامپیوتر است که با نام تئوری یادگیری کامپیوتری شناخته میشود.