Как преобразовать вывод искусственной нейронной сети в вероятности?

Можно сделать то, что Вы описываете как это:

  1. Перемещение содержание ABC к ABC/ подкаталог, и исправляет историю так, чтобы было похоже, что это всегда было там:

    $ cd /path/to/ABC
    $ git filter-branch --index-filter \
        'git ls-files -s | sed "s-\t-&ABC/-" |
         GIT_INDEX_FILE=$GIT_INDEX_FILE.new \
         git update-index --index-info &&
         mv $GIT_INDEX_FILE.new $GIT_INDEX_FILE' HEAD
    

    Теперь Ваша структура каталогов ABC/ABC/your_code

  2. То же для содержания DEF:

    $ cd /path/to/DEF
    $ git filter-branch --index-filter \
        'git ls-files -s | sed "s-\t-&DEF/-" |
         GIT_INDEX_FILE=$GIT_INDEX_FILE.new \
         git update-index --index-info &&
         mv $GIT_INDEX_FILE.new $GIT_INDEX_FILE' HEAD
    

    Теперь Ваша структура каталогов DEF/DEF/your_code

  3. Наконец, создайте PPP репозиторий и вытяните и ABC и DEF в него:

    $ mkdir /path/to/PPP
    $ cd /path/to/PPP
    $ git init
    $ git pull /path/to/ABC
    $ git pull /path/to/DEF
    

    Теперь Вы имеете PPP/ABC/your_code и PPP/DEF/your_code, наряду со всей историей.

необходимо, вероятно, попросить, чтобы Вы коллеги выполнили предыдущие команды в их системе для всех, чтобы синхронизироваться.

Примечание: броское filter-branch команды прибывают из страницы справочника .:-)

37
задан Mathieu Pagé 21 December 2010 в 14:49
поделиться

3 ответа

Как только NN имеет был обучен, например. используя обратное прогнозирование, как упомянуто в вопросе (посредством чего логика обратного прогнозирования «подтолкнула» веса таким образом, чтобы минимизировать функцию ошибок), веса, связанные со всеми отдельными входами («внешние» входы или входы внутри NN), являются фиксированными. Затем NN может использоваться для целей классификации.

Таким образом, математика (и «варианты») на этапе обучения могут стать немного толстыми, это относительно просто и прямолинейно при работе в качестве классификатора. Основной алгоритм - вычислить значение активации для каждого нейрона, как сумму входного веса x для этого нейрона. Это значение затем передается в функцию активации, цель которой - нормализовать его и преобразовать в логическое значение (в типичных случаях, поскольку в некоторых сетях нет правила «все или ничего» для некоторых из своих уровней). Функция активации может быть более сложной, чем вы указали, в частности, она не обязательно должна быть линейной, но какой бы ни была ее форма, обычно сигмовидная, она работает одинаково: выяснение того, где активация соответствует кривой, и, если применимо, выше или ниже порога. Затем основной алгоритм обрабатывает все нейроны на данном слое, прежде чем перейти к следующему.

Имея это в виду, вопрос об использовании способности перцептрона квалифицировать свое предположение (или, действительно, предположения - множественное число) с процентным значением, находит простой ответ: вы держите пари, что может, Не нужно ничего менять в работе самой нейронной сети; единственное, что нужно, - это каким-то образом «подключиться» к логике выходных нейронов, чтобы получить доступ к [действительному] значению активации, которое они вычислили, или, что лучше, получить доступ к действительнозначному выходу активации функция, перед своим логическим преобразованием (которое обычно основано на пороговом значении или на некоторой стохастической функции).

Другими словами, NN работает как прежде, ни ее логика обучения, ни распознавания не изменяется, входные данные в NN остаются такими же, как и связи между различными слоями и т. д. Мы получаем только копию действительной активации нейронов в выходном слое и используем ее для вычисления процента. Вот несколько простых случаев (взятых из предлагаемых правил вывода вопроса) 1) Если имеется единственный выходной нейрон: должно иметь значение отношение значения, предоставленного функцией активации, к диапазону этой функции. 2) Если имеется два (или более выходных нейрона), как, например, с классификаторами: если все выходные нейроны имеют одну и ту же функцию активации, процент для данного нейрона равен проценту значения его функции активации, деленному на сумму всех функций активации. ценности. Если функции активации меняются, это становится индивидуальной ситуацией, потому что отдельные функции активации могут указывать на целенаправленное желание придать больший вес некоторым нейронам, и процентное соотношение должно учитывать это.

21
ответ дан 27 November 2019 в 04:35
поделиться

Что вы можете сделать, так это использовать сигмовидную передаточную функцию на узлах выходного уровня (которая принимает диапазоны данных (-inf, inf) и выводит значение в [- 1,1]).
Затем, используя выходную кодировку 1-of-n (один узел для каждого класса), вы можете сопоставить диапазон [-1,1] с [0,1] и использовать его как вероятность для каждого класса значение (обратите внимание, что это естественно работает не только для двух классов).

18
ответ дан 27 November 2019 в 04:35
поделиться

I can remember I saw an example of Neural network trained with back propagation to approximate the probability of an outcome in the book Introduction to the theory of neural computation (hertz krogh palmer). I think the key to the example was a special learning rule so that you didn't have to convert the output of a unit to probability, but instead you got automatically the probability as output.
If you have the opportunity, try to check that book.

(by the way, "boltzman machines", although less famous, are neural networks designed specifically to learn probability distributions, you may want to check them as well)

4
ответ дан 27 November 2019 в 04:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: