Як почати вивчати штучний інтелект?


16

Я студент програмної інженерії і я початківець для AI. Я прочитав багато статей про те, як почати навчатись ІІ, але кожна стаття пропонує інший спосіб. Мені було цікаво, чи можуть хтось із вас експертів допомогти мені почати правильно.

Ще кілька конкретних питань

  1. На якій мові слід зосередитись? Дуже багато статей пропонують Python, C ++ або Lisp для AI. Чи можна використовувати Java замість будь-якої з інших мов?

  2. Яку математичну основу я повинен мати? Протягом першого курсу я займався дискретною математикою, яка включала наступні теми: набори, матриці, вектори, функції, теорія логіки та графіків (Вони викладали ці теми коротко). Чи є ще якісь теми, які я повинен вивчити зараз? Наприклад, обчислення?

Якщо можливо, я буду вдячний за будь-які ресурси чи книги, які я міг би використати для того, щоб почати роботу, або, можливо, ви, хлопці, можете дати мені детальну процедуру, яку я можу дотримуватися, щоб досягти вашого рівня.

Примітка. Зараз я хотів би зосередитись на нейромережах та машинному навчанні. Після цього я хотів би вивчити робототехніку та природну обробку мови.


Відповіді:


16

Штучний інтелект - це дуже широке поле і охоплює багато і дуже глибокі області інформатики, математики, дизайну апаратних засобів і навіть біології та психології. Щодо математики: я вважаю, що обчислення, статистика та оптимізація - це найважливіші теми, але вивчення такої кількості математики, як ви не можете зашкодити.

Є багато хороших безкоштовних вступних ресурсів про AI для початківців. Я настійно рекомендую почати саме з цього: http://aiplaybook.a16z.com/ Вони також опублікували два відео про загальні поняття AI, їх можна знайти на Vimeo: "AI, глибоке навчання та машинне навчання: буквар" "та" Обіцянка ШІ "

Після того, як ви чітко розумієте основні терміни та підходи до інтелектуального інтелекту, ви повинні з'ясувати, які ваші цілі. Яке програмне забезпечення AI ви хочете розробити? Які галузі Вас цікавлять? Які ваші шанси долучитися до проектів великих компаній? Простіше підібрати правильні інструменти, коли ти точно знаєш, чого хочеш досягти.

Для більшості новачків AI найцікавішою областю є глибоке навчання. Просто для того, щоб було зрозуміло, існує багато областей ШІ поза машинним навчанням, і багато областей машинного навчання поза межами глибокого навчання. (Штучний інтелект> Машинне навчання> Поглиблене навчання) Більшість останніх розробок та розкручених новин стосуються DL.

Якщо вас теж зацікавило глибоке навчання, вам слід почати з вивчення понять штучних нейронних мереж. На щастя, зрозуміти основи не так складно, і в Інтернеті є багато навчальних посібників, приклади коду та безкоштовних навчальних ресурсів, і є багато структур з відкритим кодом, з якими можна почати експериментувати.

Найпопулярніший такий фреймворк Deep Learning - це TensorFlow. Це підтримується Google. Любіть це чи ненавидите, це рамка на основі Python. Також існує багато інших фреймворків на основі Python. Scikit-learn, Theano, Keras також часто згадуються в навчальних посібниках. (Порада: якщо ви використовуєте Windows, ви можете завантажити WinPython, що включає всі ці рамки.)

Що стосується фреймворків Java, то, на жаль, варіантів не так багато. Найвизначніша рамка Java для DL - Deeplearning4j. Він розроблений невеликою компанією, а його база користувачів набагато менша, ніж натовп навколо TensorFlow. Для цього є менше проектів та навчальних посібників. Однак спеціалісти галузі кажуть, що рамки, засновані на Java, в кінцевому підсумку краще інтегруються з рішеннями Big Data на базі Java, і вони можуть забезпечити більш високий рівень портативності та легше розгортання продукту. Просто бачення: Лабораторія реактивного руху NASA використовувала Deeplearning4j для багатьох проектів.

Якщо ви вирішили піти з потоку і хочете почати дізнаватися більше про TensorFlow, рекомендую переглянути канали YouTube "DeepLearning.TV", "sentdex" та "Siraj Raval". У них є гарні підручники та кілька цікавих демонстрацій. А якщо ви вирішите зробити більш глибоке занурення, можете записатись на онлайн-курс у udacity або курсі.

Вам також може бути цікаво знати, що існують інші рамки глибокого навчання для віртуальної машини Java з альтернативними мовами, наприклад Clojure. (Clojure - це діалект LISP, і його винайшов Джон Маккарті, той же вчений-комп'ютер, який ввів термін "штучний інтелект". Іншими словами, існують більш сучасні та популярні мови програмування та інструменти, але це все-таки можливо / і якось круто / використовувати мову для AI, яка спочатку була розроблена для AI. ThinkTopic у Боулдері та Freiheit у Гамбурзі - це дві компанії, які використовують Clojure для проектів AI. І якщо ви хочете побачити щось дивовижне, щоб отримати натхнення для використання Clojure в AI та робототехніці, Рекомендую переглянути відео на YouTube "OSCON 2013: Карін Мейер, радість літаючих роботів з клоджуром".

(+++ Будь-хто може мене виправити, якщо я сказав щось не так. +++)


Оскільки фреймворків для Java менше, чи можна написати власні рамки для неї, які я можу використовувати як заміну для TensorFlow? Дякую
aspire29

1
Створення власних рамок для вивчення основних понять - дуже гарна ідея. З іншого боку, TensorFlow розробляється величезною спільнотою та великою кількістю дуже талановитих професіоналів. Чесно кажучи, я не думаю, що будь-яка домашня основа може успішно конкурувати з нею. До речі, я не розумію, чому існує так мало фреймворків Java AI ... враховуючи, що це все-таки номер 1. мова програмування та JVM - майже всюди. Я здогадуюсь, AI все ще швидше стосується досліджень, ніж виробництва.
akopacsi

6

Ви побачите, що і обчислення, і лінійна алгебра мають певне застосування в методах AI / ML. У багатьох сенсах ви можете стверджувати, що більша частина ML зменшується до лінійної алгебри, а обчислення використовується, наприклад. алгоритм зворотного розповсюдження для тренування нейронних мереж.

Вам також послужили б вірогідність та статистику для занять чи двох.

Вибір мови програмування менш важливий, ІМО. Ви можете робити AI / ML майже будь-якою основною мовою та безліччю мов, що не є основними. Найбільша різниця полягає у продуктивності та наявності бібліотек / інструментів. Наприклад, C ++, як правило, перевершує Java або Python, і це дозволяє "наблизитися до металу", щоб дійсно максимізувати можливості вашого обладнання. Однак Python має дійсно хороший FFI, і його часто використовують спільно з C або C ++. Python, C ++, Java, R, Octave / Matlab та кілька інших мов, як правило, мають багато бібліотек високої якості, що може бути важливим для вас залежно від того, що ви хочете робити.

При цьому ви, ймовірно, не хочете пробувати ML / AI у, скажімо, COBOL або PL / I або RPG / 400 чи щось. Дотримуйтесь чогось хоча б розумно популярного. Погляньте на mloss.org і подивіться, які бібліотеки / набори інструментів доступні на різних мовах, і що має допомогти орієнтуватися на ваш вибір.


5

Коли я зацікавився AI, я почав з самих основних речей. Моєю першою книжкою був « Штучний інтелект Рассела та Норвіга» - сучасний підхід . Я думаю, що це гарне місце для початку, навіть якщо ви здебільшого цікавитеся Deep Nets. Він розглядає не лише основні поняття та алгоритми ШІ (експертні системи, пошук на перших порах та вширці, представлення знань тощо), а й фундаментальну математику (байєсівські міркування, логіка першого порядку, n-грам NL тощо). і деякі загальновідомі проблеми (наприклад, проблема продавця подорожей).

Також може бути непоганою ідеєю вивчити статистику, оскільки Вас особливо цікавить ML. Після згаданої книги ви також повинні мати гарне уявлення про те, чому навчитися далі.

  • Не надто дбайте про мову програмування.

Набагато важливіше зрозуміти саме програмування та пов'язані з ним методи. Дізнайтеся щось про структури даних, алгоритми та різні парадигми програмування (наприклад, OOP, функціональне програмування тощо). Спробуйте зрозуміти логіку програмування, а не лише певної мови. Зрештою, вивчити нову мову не так вже й складно, коли ви зрозумієте, як програмувати (тоді вивчення нової мови - це просто більш-менш синтаксичний цукор).


1
Я зробив невелику редакцію для читабельності та додав посилання на підручник. Гарна порада, особливо щодо мов програмування. (Зверніться до кодерів, які працюють "будь-якою мовою з синтаксисом" :) Дійсно зводиться до того, що є найбільш оптимальним або зручним для даного проекту чи завдання.
DukeZhou

4

Ось деякі ресурси, які мені здаються корисними для ознайомлення з основами ШІ

Ендрю Нг - завідуючий професор Стенфорда, засновник Coursera і в даний час керівник досліджень в Alibaba. Наведені вище відео мають дати вам (усі) основи, необхідні щодо AI.


3

Для початку AI насамперед зрозумійте, що таке AI. Чому точність MNIST швидко зростає після 2012 року. Чому для машинного навчання потрібен AI для підвищення його точності.

Для запуску та створення додатків на машинному навчанні з AI вам не потрібна була математика чи якась ракетологія. Ви спізнилися, мій брато, люди будують ярлики для всіх проблем машинного навчання, як обгортка. Вам просто потрібно передати дані методу, і метод зробить все лайно. Почніть з проблеми MNIST - її захоплюючої. Читайте про історію MNIST, використовуйте базовий алгоритм. Спробуйте лінійну регресію, логістичну регресію, кменові кластери, KNN. Інструменти для машинного навчання Skite learn (python lib) або Tensorflow (python lib) tflearn (api вищого рівня Tensorflow, як обгортка) Обидва є відкритим кодом. Приклади доступні на GitHub. Почніть пошук на GitHub. Ви знайшли чудовий приклад. Для обох ліб. Використовуйте кагель для вирішення проблеми участі в конкурсі.

Коли ви виконаєте алгоритм, описаний вище, спробуйте зосередити свою помилку. Тепер А.І. Спробуйте розібратися, як нейронна мережа допоможе вам зменшити помилку та підвищити точність. Потім спробуйте декілька основних нейронних мереж, такі як сигмоїд, релу та cnn. Не забудьте використати відсіву у своїй нейромережі. Можна використовувати Tensorflow або keras або Tensorflow з керами

Побіч перевірити 3 відеоролики з лінійною алгеброю Blue 1 Brown, щоб покращити математику. раз на день, але щодня по одному відео.

А тепер зосередимось на математиці, що стоїть за логікою (будь-який алгоритм). Ви можете спробувати витягнути курс машинного навчання.

Використовуйте Tensorflow для створення програми Android, додатка IOS, RaspPi Перевірте саміт Tensorflow dev 2016/2017.

Або якщо вам потрібен збій, тоді перевірте це https://youtu.be/u4alGiomYP4


1
Розберемося, AI - це не все про читання html-книг та запуску програмування, давайте зрозуміти тут! ОП потрібно проконсультуватися з професорами з Оксфорда, гавардом тощо
квінтумнія

3

Перш ніж потрапити в Штучний інтелект, слід поступити з необхідними умовами. Не існує ґрунтовного переліку, але добре знання різних алгоритмів є обов'язковим. Крім цього, вам повинно бути зручно принаймні однією мовою програмування, наприклад, C ++ або Java. Я не пропоную вам зануритися в Штучний інтелект, якщо ви абсолютно новачок у галузі комп'ютерних наук. Певний досвід програмування перед зануренням у Штучний інтелект стане для вас плюсом.

Почніть читати (блоги, статті, статті науковців тощо) про штучний інтелект. Як і що це таке, його програми, поточний стан та інші речі, які ви можете знайти. Для початку почніть робити AI-коди для невеликих ігор, таких як Tic Tac Toe, Судоку, Реверсі (Othello) тощо. Ви можете створити власний тренажер і побудувати код, який вирішує кубик Рубіка. Аналогічно зробіть коди для розпізнавання образів та машинного навчання. Немає нічого кращого, ніж вчитися робити. Такі мови, як LISP та python, будуть дуже корисними. Ось дві відповіді, які допоможуть вам, ans1 та ans2 .

Якщо ви людина, яка любить читати та вчитися з книг (як я), то ви можете придбати Штучний інтелект: сучасний підхід (Пітер Норвіг та Стюарт Рассел). Книга дуже хороша і добре працює для проміжного та просунутого рівня. Спробуйте вирішити проблеми вправ, наведені в книзі. Програма pdf книг доступна в Інтернеті . Для машинного навчання дві книги, які я рекомендую, - це розпізнавання образів та машинне навчання (Крістофер М. Бішоп) та програмування колективного інтелекту (О'Рейлі).

Для початку є дуже гарна стаття про штучний інтелект та технологічну особливість.

Стаття довга і розділена на дві частини. Настійно рекомендую прочитати цю статтю, якщо ви серйозно ставитеся до штучного інтелекту. Це дасть вам добру думку.

Знання теорії обчислень дуже допоможуть вам. Особливо, коли ви працюєте в галузі обробки природних мов. Інші підполі AI, які можуть вас зацікавити, - це машинне навчання, еволюційні обчислення, генетичні алгоритми, посилення навчання, глибоке навчання тощо. Цей список продовжується. Чим краще ви знаєте статистику, тим краще це буде для штучного інтелекту. Слідкуйте за останніми подіями на місцях через форуми, веб-сайти тощо. Відкритий веб-сайт також є дуже хорошим джерелом.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.