Меня действительно интересуют искусственные нейронные сети, но я ищу место для начала.
Какие ресурсы существуют и что является хорошим стартовым проектом?
Меня действительно интересуют искусственные нейронные сети, но я ищу место для начала.
Какие ресурсы существуют и что является хорошим стартовым проектом?
Ниже приведен пример программирования Neural Net. http://www.codeproject.com/KB/recipes/neural_dot_net.aspx
вы можете начать читать здесь: http://web.archive.org/web/20071025010456/http://www.geocities.com/CapeCanaveral/Lab/3765/neural.html
Я со своей стороны побывал на курсе об этом и проработал какую-то литературу.
Прежде всего, отказаться от любых представлений о том, что искусственные нейронные сети имеют какое-либо отношение к мозгу, но для прохождения сходства с сетями биологических нейронов. Изучение биологии не поможет вам эффективно применять нейронные сети; изучение линейной алгебры, исчисления и теории вероятностей. Вы должны, по крайней мере, познакомиться с идеей базовой дифференциации функций, цепного правила, частных производных (градиента, якобиана и гессиана) и понимания матричного умножения и диагонализации.
Действительно, что вы делаете, когда вы тренируете сеть, оптимизируется большая многомерная функция (сводя к минимуму ваша мера ошибки по отношению к каждому из весов в сети), и поэтому исследование методов нелинейной численной оптимизации может оказаться поучительным, Это широко изученная проблема с большой базой литературы за пределами нейронных сетей, и есть много лекций в числовой оптимизации, доступной в Интернете. Для начала большинство людей используют простой градиентный спуск, но это может быть намного медленнее и менее эффективно, чем более тонкие методы, такие как
После того, как у вас есть основные идеи, вы можете начать экспериментировать с различными "раздавливающими" функциями в вашем скрытом слое, добавляя различные виды регуляризации и различные настройки, чтобы ускорить обучение. См. этот документ для полного списка "лучших практик".
Одной из лучших книг по этой теме является Крис Бишоп Neural Networks для распознавания образов. Он довольно старый на этом этапе, но по-прежнему является отличным ресурсом, и вы часто можете найти используемые копии онлайн около 30 долларов США. Глава нейронной сети в его новой книге "Распознавание образов и машинное обучение" также довольно обширна. Для особо хорошего учебного пособия по реализации см. Этот код на CodeProject.com, который реализует умную сеть, называемую сверточной сетью, которая ограничивает возможности подключения таким образом, чтобы он очень хорошо учился классифицировать визуальные шаблоны.
Поддержка векторных машин и других методов ядра стала довольно популярной, потому что вы можете применять их, не зная, какого черта вы делаете, и часто получаете приемлемые результаты. С другой стороны, нейронные сети представляют собой огромные проблемы оптимизации, требующие тщательной настройки, хотя они по-прежнему предпочтительны для множества проблем, особенно крупных проблем в таких областях, как компьютерное зрение.
Я очень рекомендую эту прекрасную серию Anoop Madhusudanan на Code Project.
Он познакомит вас с основными принципами, чтобы понять, как они работают, и понять, как использовать его библиотеку brainnet
, чтобы создать свой собственный.
Нейронные сети - это своего рода декларация в наши дни. Поддержка векторных машин и методов ядра лучше для большего количества классов проблем, чем обратноепроложение. Нейронные сети и генетические алгоритмы захватывают воображение людей, которые мало знают о современном механическом обучении, но они не соответствуют уровню техники.
Если вы хотите узнать больше об ИИ и машинах, я рекомендую прочитать Peter Norvig Искусственный интеллект: современный подход. Это широкий обзор AI и множество современных технологий. Он также использует историю и более старые методы, и даст вам более полное обоснование основ ИИ и машинного обучения.
Нейронные сети довольно легки. Особенно, если вы используете генетический алгоритм для определения весов, а не для правильного обратного распространения.
I вторая рекомендация dwf Neural Networks для распознавания образов Криса Бишопа. Хотя, возможно, это не стартовый текст. Norvig или онлайн-учебник (с кодом в Matlab!), Вероятно, были бы более мягким введением.
Хорошим стартовым проектом будет OCR (оптическое распознавание символов). Вы можете сканировать на страницах текста и подавать каждый символ через сеть, чтобы выполнить классификацию. (Сначала вам нужно было бы обучать сеть!).
Книга Рауля Рохаса - очень хорошее начало (это также бесплатно). Кроме того, Haykin book 3rd edition, хотя и большой объем, очень хорошо объясняется.
Я могу порекомендовать, где не начинать. Я купил "Введение в нейронные сети" Кевина Герни, который имеет хорошие отзывы об Amazon и претендует на "очень доступное введение в один из самых важных темы в когнитивной и компьютерной науке" . Лично я бы не стал рекомендовать эту книгу в качестве старта. Я могу понять только около 10%, но, возможно, это только я (английский не мой родной язык). Я собираюсь изучить другие варианты этой темы.
http://www.ai-junkie.com/ann/evolved/nnt1.html - это четкое введение в многослойный персептрон, хотя он не описывает алгоритм backpropagation
вы также можете взглянуть на generation5.org, который содержит множество статей об ИИ в целом и содержит некоторые отличные тексты о нейронной сети.
Если вы не против тратить деньги, Справочник по теории мозга и нейронным сетям очень хорош. Он содержит 287 статей, охватывающих исследования по многим дисциплинам. Он начинается с введения и теории, а затем выделяет пути через статьи, чтобы наилучшим образом удовлетворить ваши интересы.
Что касается первого проекта, Kohonen maps интересны для категоризация: найти скрытые отношения в вашей музыкальной коллекции, построить интеллектуальный робот или решить Премия Netflix.
Две книги, которые использовались во время моего исследования:
Курс по курсу: Введение в нейронные вычисления Игоря Александера и Хелен Мортон.
Продвинутый курс: Нейрокомпьютинг Роберта Хехт-Нильсена
Программирование коллективного интеллекта обсуждает это в контексте алгоритмов поиска и ранжирования. Кроме того, в коде здесь (в ch.4), концепции, обсуждаемые в книге, проиллюстрированы на примере Python.
Я думаю, что хорошей отправной точкой всегда будет Wikipedia. Там вы найдете полезные ссылки на документацию и проекты, которые также используют нейронные сети.
Я нашел Fausett Основы нейронных сетей - простой и легкий для ввода вводный учебник.
Я нашел учебник "Вычислительный интеллект" невероятно полезным.
Если вы хотите быстро узнать о приложениях некоторых концепций нейронной сети на реальном симуляторе, есть отличная онлайн-книга (теперь wiki) под названием "Вычислительная когнитивная неврология" на http://grey.colorado.edu/CompCogNeuro/index.php/CCNBook/Main
Книга используется в школах как учебник и проходит через множество разных областей мозга, от отдельных нейронов до исполнительного функционирования более высокого порядка.
Кроме того, каждый раздел дополняется домашними заданиями, которые уже для вас. Просто скачайте, следуйте инструкциям и имитируйте все, о чем говорила глава. Программное обеспечение, которое они используют, Emergent, немного тонкое, но невероятно надежное: это продукт более 10 лет работы, который я считаю.
Я прошел через это в классе под уроки в прошлом семестре, и это было здорово. Просматривает все шаг за шагом.
Я согласен с другими людьми, которые говорили, что изучение биологии - не самая хорошая отправная точка... потому что у них много нерелевантной информации в биологии. Вам не нужно понимать, как работает нейрон, чтобы воссоздать его функциональность - вам нужно только имитировать свои действия. Я рекомендую Ray Kurzweil "Как создать разум" - это касается аспекта биологии, который имеет отношение к вычислительным моделям (создание сингулярного нейрона путем объединения нескольких входов и стрельбы после достижения порога), но игнорирует бесполезные вещи, такие как как нейрон на самом деле добавляет вход тэгов togeather. (Например, вы будете использовать + и неравенство для сравнения с порогом)
Я должен также указать, что книга на самом деле не о "создании ума" - она фокусируется только на распознавании иерархической структуры/неокортекса. Общая тема была обсуждена с 1980-х годов, когда я верю, поэтому есть много старых книг, которые, вероятно, содержат слегка датированные формы одной и той же информации. Я прочитал старые документы, в которых говорится, что система видения, например, является многоуровневым распознавателем паттерна. Он утверждает, что это относится ко всей неокортексу. Кроме того, возьмите его "предсказания" с куском соли - его аппаратные оценки, вероятно, довольно точны, но я думаю, что он недооценивает, насколько сложными могут быть простые задачи (например, вождение автомобиля). Конечно, он видел много прогресса (и был частью некоторых из них), но я все еще думаю, что он слишком оптимистичен. Существует большая разница между тем, что автомобиль ИИ способен проехать милю успешно в 90% случаев по сравнению с 99,9 +%, что может сделать человек. Я не ожидаю, что какой-либо ИИ по-настоящему будет управлять мной в течение как минимум 20 лет... (Я не считаю дорожные автомобили BMW, которые должны быть "обучены" на реальном курсе, поскольку они на самом деле не играют одинаково игра)
Если у вас уже есть базовое представление о том, что такое ИИ и как его можно смоделировать, вам может быть лучше пропустить что-то более техническое.