Как начать изучать искусственный интеллект?


16

Я студент по разработке программного обеспечения, и я начинающий AI. Я прочитал много статей о том, как начать изучать ИИ, но каждая статья предлагает свой путь. Мне было интересно, если некоторые из вас, эксперты, могут помочь мне начать правильно.

Несколько более конкретных вопросов

  1. На каком языке мне следует сосредоточиться? Многие статьи предлагают Python, C ++ или Lisp для AI. Могу ли я использовать Java вместо любых других упомянутых языков?

  2. Какое математическое образование я должен иметь? В течение первого года я занимался дискретной математикой, которая включала следующие темы: множества, матрицы, векторы, функции, логику и теорию графов (они преподавали эти темы кратко). Есть ли еще какие-то темы, которые я должен изучить сейчас? Например, исчисление?

Если возможно, я был бы признателен за любые ресурсы или книги, которые я мог бы использовать, чтобы начать, или, может быть, вы, ребята, можете дать мне подробную процедуру, которой я могу следовать, чтобы догнать ваш уровень.

Примечание: сейчас я хотел бы сосредоточиться на нейронных сетях и машинном обучении. После этого я хотел бы изучить робототехнику и обработку естественного языка.


Ответы:


16

Искусственный интеллект - это очень широкая область, которая охватывает многие и очень глубокие области компьютерных наук, математики, аппаратного дизайна и даже биологии и психологии. Что касается математики: я думаю, что исчисление, статистика и оптимизация являются наиболее важными темами, но изучение как можно большего количества математики не повредит.

Есть много хороших бесплатных вводных ресурсов об искусственном интеллекте для начинающих. Я настоятельно рекомендую начать с этого: http://aiplaybook.a16z.com/ Они также опубликовали два видео об общих понятиях ИИ, их можно найти в Vimeo: «ИИ, глубокое обучение и машинное обучение: учебник для начинающих» и "Обещание ИИ"

Когда у вас есть четкое понимание основных терминов и подходов ИИ, вы должны выяснить, каковы ваши цели. Какое программное обеспечение ИИ вы хотите разработать? В каких отраслях вы заинтересованы? Каковы ваши шансы принять участие в проектах крупных компаний? Подбирать правильные инструменты легче, когда вы точно знаете, чего хотите достичь.

Для большинства новичков в искусственном интеллекте наиболее интересной областью является Deep Learning. Просто чтобы прояснить это, есть много областей ИИ за пределами машинного обучения, и есть много областей машинного обучения за пределами глубокого обучения. (Искусственный интеллект> Машинное обучение> Глубокое обучение) Большинство последних событий и раскрученных новостей о DL.

Если вы тоже заинтересовались глубоким обучением, вы должны начать с изучения концепций искусственных нейронных сетей. К счастью, не так уж сложно понять основы, и в Интернете есть множество учебных пособий, примеров кода и бесплатных обучающих ресурсов, и есть много фреймворков с открытым исходным кодом, с которыми можно начать экспериментировать.

Наиболее популярной такой платформой Deep Learning является TensorFlow. Это поддерживается Google. Нравится это или нет, это основанная на Python инфраструктура. Есть также много других основанных на Python фреймворков. Scikit-learn, Theano, Keras также часто упоминаются в уроках. (Совет: если вы используете Windows, вы можете загрузить WinPython, который включает все эти платформы.)

Что касается Java-фреймворков, к сожалению, вариантов не так много. Наиболее известной платформой Java для DL является Deeplearning4j. Он разработан небольшой компанией, и его пользовательская база намного меньше, чем у TensorFlow. Есть меньше проектов и учебных пособий для этой платформы. Тем не менее, отраслевые специалисты говорят, что платформы на основе Java в конечном итоге лучше интегрируются с решениями для больших данных на основе Java, и они могут обеспечить более высокий уровень мобильности и облегчить развертывание продукта. Просто примечание: Лаборатория реактивного движения НАСА использовала Deeplearning4j для многих проектов.

Если вы решили пойти по течению и хотите больше узнать о TensorFlow, я рекомендую вам посмотреть каналы YouTube "DeepLearning.TV", "sentdex" и "Siraj Raval". У них есть хорошие учебники и несколько классных демонстраций. И если вы решите совершить более глубокое погружение, вы можете записаться на онлайн-курс на Udacity или Coursera.

Вам также может быть интересно узнать, что существуют другие среды глубокого обучения для виртуальной машины Java с альтернативными языками, например Clojure. (Clojure - это диалект LISP, и он был изобретен Джоном Маккарти, тем же учёным-компьютерщиком, который придумал термин «искусственный интеллект». Другими словами, существуют более современные и популярные языки и инструменты программирования, но это все же возможно / и довольно круто / использовать язык для искусственного интеллекта, который изначально был разработан для искусственного интеллекта. ThinkTopic в Боулдере и Фрайхейт в Гамбурге - две компании, использующие Clojure для проектов искусственного интеллекта. И если вы хотите увидеть что-то удивительное, чтобы получить вдохновение для использования Clojure в искусственном интеллекте и робототехнике, Я рекомендую вам посмотреть видео на YouTube "OSCON 2013: Карин Майер, Радость летающих роботов с Clojure".

(+++ Кто-нибудь может поправить меня, если я сказал что-то не так. +++)


Поскольку для Java меньше фреймворков, можно ли написать свои собственные фреймворки для него, которые я могу использовать вместо TensorFlow? Спасибо
aspire29

1
Создание собственной структуры для изучения основных понятий - очень хорошая идея. С другой стороны, TensorFlow разрабатывается огромным сообществом и множеством очень талантливых профессионалов. Честно говоря, я не думаю, что какие-либо самодельные рамки могут успешно конкурировать с ним. Кстати, я не понимаю, почему так мало Java AI Framework ... учитывая, что это все еще номер 1. Язык программирования и JVM практически везде. Я предполагаю, что ИИ по-прежнему скорее исследования, чем производства.
Акопачи

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

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

Это также может быть хорошей идеей для изучения статистики, так как вы особенно заинтересованы в ML. После упомянутой книги у вас также должно быть хорошее представление о том, что будет дальше.

  • Не слишком заботьтесь о языке программирования.

Гораздо важнее понимать само программирование и связанные с ним методы. Узнайте что-нибудь о структурах данных, алгоритмах и различных парадигмах программирования (таких как ООП, функциональное программирование и т. Д.). Постарайтесь понять логику программирования, а не только конкретный язык. В конце концов, выучить новый язык не так уж сложно, когда вы поймете, как программировать (тогда изучение нового языка - это более или менее синтаксический сахар).


1
Я сделал небольшое редактирование для удобства чтения и добавил ссылку на учебник. Хороший совет, особенно в отношении языков программирования. (Посмотрите на программистов, которые работают на «любом языке с синтаксисом» :) Действительно, все сводится к тому, что является наиболее оптимальным или удобным для данного проекта или задачи.
DukeZhou

4

Вот некоторые ресурсы, которые я нашел полезными, чтобы познакомиться с основами ИИ

Эндрю Нг - приглашенный профессор в Стэнфорде, основатель Coursera и в настоящее время руководитель исследований в Alibaba. Приведенные выше видео должны дать вам (все) основы, которые вам нужны об искусственном интеллекте.


3

Для начала ИИ, прежде всего, понять, что такое ИИ. Почему точность MNIST быстро возрастает после 2012 года. Зачем машинному обучению нужен ИИ для повышения его точности.

Чтобы начать и построить приложение по машинному обучению с помощью искусственного интеллекта, вам не нужны математика или какие-то ракетостроения. Вы опоздали, мой брат, люди создают ярлыки для всех проблем машинного обучения, как оболочка. Вам просто нужно передать данные в метод и метод сделает все дерьмо. Начните с проблемы MNIST, это увлекательно. Читайте об истории MNIST, используйте базовый алгоритм. Попробуйте линейную регрессию, логистическую регрессию, Kmean clusting, KNN. Инструменты для машинного обучения Skite learn (python lib) или Tensorflow (python lib) tflearn (API-интерфейсы Tensorflow более высокого уровня, как обертка) Оба имеют открытый исходный код. Примеры доступны на GitHub. Начните поиск на GitHub. Вы нашли отличный пример. Для обоих lib. Используйте kaggel для решения проблемы, участвуйте в соревнованиях.

Когда вы завершите все вышеперечисленные алгоритмы, постарайтесь сосредоточиться на своей ошибке. Теперь ИИ пришел в прокат. Попытайтесь выяснить, как нейронная сеть поможет вам уменьшить ошибку и повысить точность. Затем попробуйте какую-нибудь базовую нейронную сеть, такую ​​как sigmoid, relu и cnn. Не забудьте использовать dropout в вашей нейронной сети. Вы можете использовать Tensorflow или керас или Tensorflow с керасом

Отметьте бок о бок 3 видео 1 по линейной алгебре Брауна, чтобы улучшить математику. один раз в день, но каждый день одно видео.

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

Используйте Tensorflow для создания приложений Android, IOS, RaspPi Check Tensorflow Dev Summit 2016/2017.

Или, если вам нужен ускоренный курс, проверьте это https://youtu.be/u4alGiomYP4


1
Давайте разберемся, AI - это не только чтение html-книги, и вы начинаете программировать, давайте проясним это здесь! ОП должен проконсультироваться с профессорами из Оксфорда, Гарвада и т. Д.
quintumnia

3

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

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

Если вам нравится читать и учиться по книгам (как я), то вы можете купить Искусственный интеллект: современный подход (Питер Норвиг и Стюарт Рассел). Книга очень хорошая и хорошо работает для среднего и продвинутого уровня. Попробуйте решить задачи упражнения, приведенные в книге. Решение PDF книг доступно в Интернете . Для машинного обучения я рекомендую две книги: «Распознавание образов» и «Машинное обучение» (Кристофер М. Бишоп) и «Коллективный интеллект программирования» (О'Рейли).

Для начала есть очень хороший статья об искусственном интеллекте и технологической сингулярности.

Статья длинная и разделена на две части. Я настоятельно рекомендую вам прочитать эту статью, если вы серьезно относитесь к искусственному интеллекту. Это даст вам хорошие идеи.

Знание вычислительной теории очень поможет вам. Особенно, когда вы работаете в области обработки естественного языка. Другими областями ИИ, которые могут вас заинтересовать, будут Машинное обучение, Эволюционные вычисления, Генетические алгоритмы, Усиленное обучение, Глубокое обучение и т. Д. Этот список можно продолжить. Чем лучше вы разбираетесь в статистике, тем лучше для искусственного интеллекта. Следите за последними событиями в этой области на форумах, веб-сайтах и ​​т. Д. Открытый сайт ИИ также является очень хорошим источником.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.