Функции активации искусственной нейронной сети

В самой искусственной нейронной сети нет чего-то сверх нового, просто попытка искусственно воссоздать великий гений природы — человеческий мозг. Теоретические описания и математические модели искусственных нейронных сетей появились уже очень давно. А первой практической реализацией стал перцептрон Розенблатта — нейронная сеть с одним скрытым слоем. Об этой и многих других сетях вы сможете найти информацию на википедии, а я хочу рассказать об одной важной детали, без которой не станет функционировать ни один нейрон в сети.

Прежде чем перейти непосредственно к описанию самих функций, стоит вспомнить модель искусственного нейрона. Понять, где в этой модели есть место для функции активации и какая у нее роль во всем процессе.

Модель искусственного нейрона

читать далее «Функции активации искусственной нейронной сети»

Краткая история развития науки об искусственном интеллекте

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

Вовсе нет, мысли и идеи о создании машины, способной мыслить и принимать решения появились больше 50 лет назад.

История становления как науки

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

читать далее «Краткая история развития науки об искусственном интеллекте»

Метод перекрестной проверки(Cross-validation) с примером реализации

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

Чем выше процент правильных ответов, тем больше вероятность, что модель адекватно себя поведет в «полевых условиях» — на реальных данных. Хорошо, когда размер обучающей выборки достаточно велик для того, чтобы выбрать оттуда процентов 30 элементов для тестирования. Но как быть, если данных для обучения очень мало?

На помощь приходит метод перекрестной проверки, в оригинале — Cross-validation.

Суть метода перекрестной проверки

читать далее «Метод перекрестной проверки(Cross-validation) с примером реализации»

Умножение больших чисел — реализация на C/C++

Третья часть из серии статей про реализацию больших чисел на C/C++, в начале по традиции ссылки на предыдущие части.

Наконец я добрался до реализации самых интересных операций. В совокупности с предыдущими наработками наши большие числа уже можно использовать для реализации различных алгоритмов, например, из области криптографии. О них я тоже скорее всего напишу, но уже чуть позже.

Умножение больших чисел

читать далее «Умножение больших чисел — реализация на C/C++»

Операторы сравнения больших чисел — реализация на C/C++

Приветствую всех, это вторая статья из серии про реализацию больших чисел на языке C/C++. В прошлый раз я рассказывал про общую структуру класса BigNumber и способ хранения большого числа в памяти. Были реализованы функции нормирования большого числа для печати и две арифметические операции: сложение и вычитание.

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

В прошлый раз я обещал, что следующим шагом станет реализация деления и умножения больших чисел, но потом понял, что они не выполнимы без возможности сравнивать два числа. Кроме того, большинство алгоритмов отпадает без этого функционала. Поэтому в этот раз я приведу реализации всех операторов сравнения: ==, !=, >, >=, <, <=.

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

читать далее «Операторы сравнения больших чисел — реализация на C/C++»