На протяжении ряда лет для превращения входных сигналов в выходные использовалось несколько типов функций. На приведенных ниже рисунках показаны графики некоторых из наиболее часто используемых. По горизонтали - сумма входных сигналов (см. ниже), по вертикали - значение функции. Все функции выдают результат в диапазоне от 0 до 1.
Простая ступенчатая (шаговая) функция. Значение активационной функции равно 1 при положительной сумме входных сигналов или 0 при отрицательной.
Функция, значение которой равно 0 при отрицательном аргументе, при положительном аргументе - пропорционально аргументу (только до 1).
Так называемая сигмоида. Значение функции стремится к 0 при больших отрицательных значениях, к 1 - при больших положительных, со сглаженным переходом между теми и другими. Сигмоидальная функция описывается уравнением:
выход=
1 + e- x
Эта функция, как считается, наиболее точно описывает активность настоящих нейронов мозга и наиболее часто используется в искусственных нейронных сетях. Код на паскале для этой функции:
function sigmoid (x: real): real;begin sigmoid:= 1/(1 + exp(-x))end;
Однако паскалевская функция exp приводит к ошибке в программе, если входное значение выходит из промежутка -39..38. К счастью, эти настолько значения далеко отстоят от начала координат, что мы можем считать: при аргументе < -39 значение функции равно 0, при аргументе > 38, - значение функции равно 1. Для предотвращения ошибки добавим несколько строчек:
function sigmoid (x: real): real;begin if abs(x) < 38 {отсеиваем "опасные" аргументы} then sigmoid:= 1/(1+exp(-x)) else if x >= 38 {наше допущение для аргументов меньших -39 и больших 38} then sigmoid:= 1 else sigmoid:= 0end;
studopedia.su - Студопедия (2013 - 2026) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав!Последнее добавление