Меня действительно интересуют искусственные нейронные сети, но я ищу, с чего начать.
Какие ресурсы есть и с чего начать?
Меня действительно интересуют искусственные нейронные сети, но я ищу, с чего начать.
Какие ресурсы есть и с чего начать?
Ответы:
Вот несколько примеров программирования нейронной сети. 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
Я со своей стороны посетил курс об этом и проработал литературу.
Прежде всего, откажитесь от любых представлений о том, что искусственные нейронные сети имеют какое-либо отношение к мозгу, кроме мимолетного сходства с сетями биологических нейронов. Изучение биологии не поможет вам эффективно применять нейронные сети; изучение линейной алгебры, исчисления и теории вероятностей будет. Вы должны как минимум познакомиться с идеей базового дифференцирования функций, правилом цепочки, частных производных (градиент, якобиан и гессиан), а также с пониманием умножения матриц и диагонализации.
На самом деле то, что вы делаете при обучении сети, - это оптимизация большой многомерной функции (минимизация вашей меры погрешности по каждому из весов в сети), и поэтому исследование методов нелинейной численной оптимизации может оказаться поучительным. Это широко изучаемая проблема с большой базой литературы за пределами нейронных сетей, и в Интернете есть множество лекций по численной оптимизации. Для начала большинство людей используют простой градиентный спуск , но он может быть намного медленнее и менее эффективен, чем более сложные методы, такие как
Когда у вас есть базовые идеи, вы можете начать экспериментировать с различными функциями «раздавливания» в вашем скрытом слое, добавляя различные виды регуляризации и различные настройки, ускоряющие обучение. См. Этот документ для получения полного списка «лучших практик».
Одна из лучших книг по этой теме - « Нейронные сети для распознавания образов» Криса Бишопа . На данном этапе он довольно старый, но по-прежнему остается отличным ресурсом, и вы часто можете найти использованные копии в Интернете примерно за 30 долларов. Глава о нейронных сетях в его новой книге « Распознавание образов и машинное обучение» также довольно обширна. Для особенно хорошего руководства, ориентированного на реализацию, см. Этот на CodeProject.com, который реализует хитроумную сеть, называемую сверточной сетью, которая ограничивает возможности подключения таким образом, чтобы сделать ее очень хорошей при обучении классификации визуальных паттернов.
Машины поддержки векторов и другие методы ядра стали довольно популярными, потому что вы можете применять их, не зная, что вы делаете, и часто получаете приемлемые результаты. Нейронные сети, с другой стороны, представляют собой огромные проблемы оптимизации, которые требуют тщательной настройки, хотя они все же предпочтительны для множества проблем, особенно крупномасштабных проблем в таких областях, как компьютерное зрение.
Я очень рекомендую эту отличную серию Анупа Мадхусуданана о Code Project .
Он в простой для понимания форме проведет вас через основы, чтобы понять, как они работают, и покажет, как использовать свою brainnet
библиотеку для создания своей собственной.
В наши дни нейронные сети как бы деклассированы. Машины опорных векторов и методы ядра лучше подходят для большего числа классов проблем, чем обратное распространение. Нейронные сети и генетические алгоритмы захватывают воображение людей, которые мало что знают о современном машинном обучении, но не являются современными.
Если вы хотите узнать больше об ИИ и машинном обучении, я рекомендую прочитать книгу Питера Норвига « Искусственный интеллект: современный подход» . Это обширный обзор ИИ и множества современных технологий. В нем также рассматривается история и старые методы, и вы получите более полное представление об основах ИИ и машинного обучения.
Однако нейронные сети довольно просты. Особенно, если вы используете генетический алгоритм для определения весов, а не правильное обратное распространение.
Я вторая рекомендация dwf по нейронным сетям для распознавания образов Криса Бишопа. Хотя, возможно, это не стартовый текст. Norvig или онлайн-руководство (с кодом в Matlab!), Вероятно, было бы более мягким введением.
Хорошим стартовым проектом будет OCR (оптическое распознавание символов). Вы можете сканировать страницы текста и передавать каждый символ по сети, чтобы выполнить классификацию. (Конечно, сначала нужно обучить сеть!).
Книга Рауля Рохаса - очень хорошее начало (она также бесплатна). Кроме того, книга Хайкина 3-е издание , хотя и большого объема, очень хорошо объяснена.
Могу порекомендовать, с чего не начинать. Я купил «Введение в нейронные сети » Кевина Герни, у которого есть хорошие отзывы на Amazon и который утверждает, что это «очень доступное введение в одну из самых важных тем когнитивной и компьютерной науки». Лично я бы не рекомендовал эту книгу для начала. Я могу понять только около 10% этого, но, возможно, это только я (английский не мой родной язык). Я собираюсь изучить другие варианты из этой ветки.
http://www.ai-junkie.com/ann/evolved/nnt1.html - это четкое введение в многослойный перцептрон, хотя он не описывает алгоритм обратного распространения.
вы также можете заглянуть на generation5.org, где есть много статей об ИИ в целом и есть отличные тексты о нейронных сетях.
Если вы не против тратить деньги, то справочник по теории мозга и нейронным сетям очень хорош. Он содержит 287 статей, посвященных исследованиям во многих дисциплинах. Он начинается с введения и теории, а затем выделяет пути по статьям, которые наилучшим образом отражают ваши интересы.
Что касается первого проекта, карты Кохонена интересны для категоризации : найдите скрытые взаимосвязи в своей музыкальной коллекции, создайте умного робота или разгадывайте приз Netflix .
Две книги, которые использовались во время моего обучения:
Вводный курс: Введение в нейронные вычисления Игоря Александра и Хелен Мортон.
Продвинутый курс: нейрокомпьютеры Роберта Хехт-Нильсена
Я нашел « Основы нейронных сетей» Фозетта простым и легким для понимания вводным учебником.
Мне очень помог учебник «Вычислительный интеллект».
Программирование коллективного разума обсуждает это в контексте алгоритмов поиска и ранжирования. Кроме того, в коде, доступном здесь (в главе 4), концепции, обсуждаемые в книге, проиллюстрированы на примере Python.
Я согласен с другими людьми, которые сказали, что изучение биологии - не лучшая отправная точка ... потому что в биологии есть много нерелевантной информации. Вам не нужно понимать, как работает нейрон, чтобы воссоздать свою функциональность - вам нужно только смоделировать его действия. Я рекомендую «Как создать разум» Рэя Курцвейла - он касается аспекта биологии, который имеет отношение к вычислительным моделям (создание симулируемого нейрона путем объединения нескольких входных данных и срабатывания при достижении порога), но игнорирует несущественные вещи, такие как как нейрон фактически добавляет тысячи входных данных вместе. (Вы просто будете использовать + и неравенство для сравнения, например, с порогом)
Я также должен отметить, что книга на самом деле не о «создании разума» - она фокусируется только на распознавании иерархических образов / неокортексе. Я полагаю, что об этой общей теме говорят с 1980-х, поэтому существует множество старых книг, которые, вероятно, содержат слегка устаревшие формы той же информации. Я читал старые документы, в которых говорилось, что система технического зрения, например, представляет собой многослойный распознаватель образов. Он утверждает, что это относится ко всему неокортексу в целом. Кроме того, отнеситесь к его «прогнозам» с недоверием - его оценки оборудования, вероятно, довольно точны, но я думаю, что он недооценивает, насколько сложными могут быть простые задачи (например, вождение автомобиля). Конечно, он добился большого прогресса (и был частью этого), но я все же думаю, что он слишком оптимистичен. Существует большая разница между машиной с искусственным интеллектом, способной успешно проехать милю в 90% случаев, по сравнению с 99,9 +%, которые может сделать человек. Я не ожидаю, что какой-либо ИИ будет по-настоящему отвлекать меня, по крайней мере, на 20 лет ... (Я не считаю гоночные машины BMW, которые нужно `` тренировать '' на реальной трассе, поскольку они на самом деле не играют так же игра)
Если у вас уже есть базовое представление о том, что такое ИИ и как его можно моделировать, возможно, вам лучше перейти к чему-то более техническому.
Если вы хотите быстро узнать о применении некоторых концепций нейронных сетей на реальном симуляторе, есть отличная онлайн-книга (теперь вики) под названием «Вычислительная когнитивная нейробиология» по адресу http://grey.colorado.edu/CompCogNeuro/index. php / CCNBook / Главная
Книга используется в школах как учебник и знакомит с множеством различных областей мозга, от отдельных нейронов до исполнительных функций высшего порядка.
Кроме того, каждый раздел дополнен домашними «проектами», которые уже готовы для вас. Просто скачайте, следуйте инструкциям и смоделируйте все, о чем говорилось в главе. Программное обеспечение, которое они используют, Emergent, немного сложное, но невероятно надежное: я считаю, что это продукт более чем 10-летней работы.
В прошлом семестре я прошел его в старших классах, и это было здорово. Проводит вас через все шаг за шагом