Привет. Я хочу продолжить тему реализации методов машинного обучения на c#, и в этой статье я расскажу про алгоритм обратного распространения ошибки для обучения нейронной сети прямого распространения, а также приведу его реализацию на языке C#. Особенность данной реализации в том, что реализация алгоритма абстрагирована от реализаций целевой функции (той, которую нейросеть пытается минимизировать) и функции активации нейронов. В итоге получится некий конструктор, с помощью которого можно поиграться с различными параметрами сети и алгоритма обучения, посмотреть и сравнить результат. Предполагается, что вы уже знакомы с тем, что такое искусственная нейросеть (если нет, то настоятельно рекомендую для начала изучить википедию или одну из подобных статей). Интересно? Лезем под кат.
Рубрика «алгоритм» - 12
Алгоритм обратного распространения ошибки с регуляризацией на c#
2012-10-15 в 11:39, admin, рубрики: .net, data mining, алгоритм, искусственный интеллект, нейронные сети, обратное распространение ошибки, регуляризация, метки: c++, алгоритм, искусственный интеллект, нейронные сети, обратное распространение ошибки, регуляризацияАлгоритмизация творчества: можно ли создать интересную рекламу без креатива?
2012-10-15 в 5:16, admin, рубрики: алгоритм, Алгоритмы, искусственный интеллект, творчество, Учебный процесс в IT, метки: алгоритм, творчество
Предвидя негодование по поводу использования слова «креатив», спешу заметить, что в контексте этой статьи трудно использовать синоним. Честно.
Основная мысль — алгоритмизировать можно абсолютно любой мозговой процесс. Я взял рекламу в качестве примера для доказательства потому, что:
- Понять и оценить интересную рекламу может каждый человек;
- Реклама сильно завязана на творчестве и нестандартном мышлении, которое обычно представляется хаотичным и слабо поддающимся алгоритмизации;
- Я просто очень сильно люблю рекламу. И алгоритмы.
Перед тем, как начать, было бы нечестным не упомянуть о том, что в алгоритме все же есть небольшие хитрости. Понявшему их — плюсов в карму. Итак.
Читать полностью »
Нужно отправить SMS, что может быть «проще»?
2012-10-04 в 7:11, admin, рубрики: Apache, CAMEL, sms, алгоритм, Алгоритмы, Веб-разработка, разработка, рассылки, метки: apache, camel, sms, алгоритм, рассылкиНаконец, в вашем проекте потребовалось организовать рассылку SMS с помощью какой-нибудь службы, работающей через Интернет.
На первый взгляд ничего сложного:
Алгоритм Диффи — Хеллмана
2012-09-17 в 9:39, admin, рубрики: алгоритм, Алгоритмы, дискретный логарифм, криптография, математика, простые числа, шифрование, метки: алгоритм, дискретный логарифм, криптография, математика, простые числа, шифрованиеОдна из фундаментальных проблем криптографии – безопасное общение по прослушиваемому каналу. Сообщения нужно зашифровывать и расшифровывать, но для этого обеим сторонам нужно иметь общий ключ. Если этот ключ передавать по тому же каналу, то прослушивающая сторона тоже получит его, и смысл шифрования исчезнет.
Алгоритм Диффи — Хеллмана позволяет двум сторонам получить общий секретный ключ, используя незащищенный от прослушивания, но защищённый от подмены канал связи. Полученный ключ можно использовать для обмена сообщениями с помощью Читать полностью »
Эвристика случайного поиска и теплоходы
2012-08-18 в 17:12, admin, рубрики: алгоритм, Алгоритмы, эвристика, метки: алгоритм, эвристикаКогда-то давно я уже писал довольно большую статью об использовании эвристик в программировании, но сегодня я хочу привести небольшой практический пример. Этим летом я плавал на теплоходе по маршруту Москва — Ростов-на-Дону — Москва, и заметил, что каждый вечер директор круиза пытается найти оптимальную рассадку туристических групп по автобусам. Задача не такая сложная, но минимум 15 минут в день на её решение тратится. Разумеется, я попробовал автоматизировать этот процесс.Читать полностью »
СуперБан — что за зверь, и как с ним бороться
2012-08-14 в 20:46, admin, рубрики: алгоритм, Алгоритмы, скриптВ статье рассматривается так называемый «супербан», в отличии от обычных методов бана, таких как бан по IP-адресу, по нику или по кукам, «супербан» блокирует пользователя по индивидуальным характеристикам его машины.Читать полностью »
Минимакс на примере игры в зайца и волков
2012-06-21 в 22:56, admin, рубрики: алгоритм, Алгоритмы, альфа-бета-отсечения, здравый смысл, искусственный интеллект, минимакс, Программирование, теория игр, метки: алгоритм, альфа-бета-отсечения, здравый смысл, искусственный интеллект, минимакс, теория игрДанная статья предназначена для разъяснения сути фундаментальных методов построения и оптимизации «искусственного интеллекта» для компьютерных игр (в основном антагонистических). На примере игры в зайца и волков будет рассмотрен алгоритм «Минимакс» и алгоритм его оптимизации «Альфа-бета отсечение». Помимо текстового описания, статья содержит иллюстрации, таблицы, исходники, и готовую кроссплатформенную игру с открытым кодом, в которой вы сможете посоревноваться с интеллектуальным агентом.Читать полностью »
Алгоритм моделирования многомерного массива данных, распределенных по нормальному закону
2012-06-06 в 7:38, admin, рубрики: c++, алгоритм, Алгоритмы, математическая статистика, Программирование, метки: c++, алгоритм, математическая статистикаПри разработке или исследовании готовых алгоритмов часто требуется определить качество их работы. Использовать для этой цели данные из реальных источников не всегда возможно, так как их свойства зачастую неизвестны и потому нельзя спрогнозировать результат выполнения исследуемых алгоритмов. В таком случае применяется моделирование данных по одному из хорошо известных законов распределения. Применяя исследуемый алгоритм к модельным данным, можно заранее предположить, каким окажется результат его выполнения. Если он окажется удовлетворительным, можно попробовать применить его и к реальным данным. Естественно, что это относится только к непараметрическим алгоритмам, то есть не зависящим от закона распределения данных.
Чаще всего используется моделирование данных, распределённых по нормальному закону. К сожалению, MS Excel и распространённые статистические пакетаы (SPSS, Statistica) позволяют моделировать только одномерные статистические распределения. Конечно, можно составить многомерное распределение из нескольких одномерных, но только в том случае, если переменные независимы. Если же нужно исследовать данные с зависящими друг от друга переменными, придётся писать программу.
Читать полностью »
Обход бинарных деревьев: рекурсия, итерации и указатель на родителя
2012-06-05 в 7:10, admin, рубрики: java, алгоритм, Алгоритмы, Программирование, метки: java, алгоритм Основы о бинарных деревьях представлены, в том числе, здесь . Добавлю свои «5 копеек» и данным постом систематизирую материалы, связанные с обходом бинарных деревьев, а именно сравнений возможностей рекурсии и итераций, а также обсуждение возможностей использования указателя на родительский узел.
Читать полностью »
О подходах к сравнению версий файлов
2012-04-24 в 4:45, admin, рубрики: алгоритм, Алгоритмы, контроль версий, оптимизация, Программирование, разработка, расстояние Левенштейна, сравнение, сравнение файлов, хэширование, метки: алгоритм, Алгоритмы, контроль версий, оптимизация, расстояние Левенштейна, сравнение, сравнение файлов, хэширование Люди, использующие системы контроля версий исходного кода (SVN, Mercurial, Git и т.п.), наверняка часто пользуются возможностью сравнения версий файлов для просмотра внесенных пользователями изменений. Существует множество независимых программ сравнения версий (WinMerge, BeyondCompare и др.). При сравнении версий, как правило, две версии файла показываются рядом друг с другом таким образом, чтобы одинаковые (неизменившиеся) части документов были расположены напротив друг друга, а изменившиеся (добавленные и удаленные) выделяются соответствующим цветом.
Уверен, многим было бы интересно узнать, какие алгоритмы могут использоваться для реализации такого сравнения.
Читать полностью »