Нейронные сети. Начало. |
||
МЕНЮ Искусственный интеллект Поиск Регистрация на сайте Помощь проекту ТЕМЫ Новости ИИ Искусственный интеллект Разработка ИИГолосовой помощник Городские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Техническое зрение Чат-боты Авторизация |
2019-01-12 12:17 Всем доброго времени суток. Нейросети в последнее время становятся все более и более популярными, потому не разобрать основы их работы я не могу. Немного истории Как вы уже поняли из названия, нейронные сети появились в момент изучения работы биологических нейросетей - нервные системы живых организмов. Вся история началась с искусственного нейрона Маккалона-Пирса, который по математически является нелинейной функцией(функция активации) от суммы входных сигналов. По факту это упрощенный вариант биологического нейрона, из которых составляют отдельные сети. Принцип работы Вспомним формулу линейной функции: y = w[0] * x[0] + w[1] * x[1] + .... w[p] * x[p] + b Графически мы изобразим это так: w[0..p] - веса узлов, x[0..p] - входные признаки. На рисунке изображена сеть без скрытого узла, который представляет собой ряд нейронов. Посмотрим, как это будет выглядеть с одним скрытым слоем. Здесь намного больше весов - на каждый синапс(стрелочку, если смотреть на рисунок) приходится один вес. В скрытом слое у нас три нейрона, каждый из которых принимает взвешенную сумму всех признаков, обрабатывает результат с помощью функции активации и подает полученный результат на выход. Если говорить языком математики, то(функция активации - f): h[o] = f(x[0] * w[0] + x[1] * w[1] + x[2] * w[2] + x[3] * w[4]) h[1] = f(x[0] * w[5] + x[1] * w[6] + x[2] * w[7] + x[3] * w[8]) h[2] = f(x[0] * w[9] + x[1] * w[10] + x[2] * w[11] + x[3] * w[12]) А y вычисляется по формуле: y = h[0] * v[1] + h[1] * v[1] + h[2] * v[2] w - веса между входом и скрытым слоем, v - веса между скрытым слоем и выходом. Кол-во узлов в скрытом слое - очень важный параметр, который настраивает пользователь. Его значение может быть абсолютно разным и зависит от размера входных данных. Обычно используют две нелинейные функции активации:
В NumPy эти функции имеют названия np.tanh(arg) и np.maximum(arg, 0). Построим графики этих функций на диапазоне (-3, 3), используя Jupyter Notebook: Результат таков: Как мы видим, relu приравнивает отрицательные числа к 0, иначе не делает ничего. Формула гиперболического тангенса до жути проста: sinh(x) / cosh(x) Гиперболический синус имеет следующий вид: ( (e ** x) - (e ** (-x)) ) / 2, где ** - оператор возведения в степень Гиперболический косинус также очень схож: ( (e ** x) + (e ** (-x)) ) / 2, где ** - оператор возведения в степень Делим первое на второе и получаем: ( e ** x - e ** (-x) ) / ( e ** x + e ** (-x) ) Если вынести в числителе и знаменателе e ** (-x) и сократить его, получаем рабочую формулу: (e ** 2x - 1) / (e ** 2x + 1) Когда недавно впервые столкнулся с такими понятиями, задавал себе вопрос: что общего эти функции имеют с тригонометрией? Многие наверняка знают, так что пишу для "зеленых" : функции преобразования у гиперболических функций такие же, как и у тригонометрических. Основные понятия Немного о базовых понятиях:
Процесс инкремента эпохи и итерации:
( (I1 - O1) ** 2 + (I2 - O2) ** 2 ... + (In - On) ** 2 ) / n
sqrt(( (I1 - O1) ** 2 + (I2 - O2) ** 2 + ... + (In - On) ** 2 ) / n)
(arctan**2(I1 - O1) + arctan**2(I2 - O2) + ... + arctan**2(In - On) / n)
Заключение. Нейронные сети - сверхважный алгоритм, потому надо в точности знать все тонкости его работы. Нейросети имеют очень тонкую настройку параметров(alpha для регуляризации, кол-во скрытых узлов и т.д.), потому стоит хорошо подумать, дабы отлично настроить свою модель. В следующей статье разберём практическое применение нейросети, реализованной в sklearn. Источник: m.vk.com Комментарии: |
|