Skip to content

2 BasicElement

Andrey Khomich edited this page Jun 6, 2020 · 12 revisions

Переменные модуля

  • synapse_learning_rate (default 0.01) - темп корректировки веса синапсов
  • lqv_learning_rate (default 0.01) - темп корректировки ядер LQV-кластеров
  • d_neuron_learning_rate (default 0.01) - темп корректировки статистики вознаграждения D-нейрона
  • lqv_kernels_usage_threshold_frequency (default 0.05) - минимальная частота выбора ядра LQV-кластера. "пустые" LQV-кластера автоматически реактивируются, получая другое ядро.
  • lqv_kernels_usage_frequency_learning_rate (default 0.01) - темп обновления статистики выбора ядра LQV-кластера.
  • d_neuron_reassessment_prob (default 0.001) - Влияет только на D-нейрон. Определяет вероятность переоценки вознаграждения за выбор альтернативного действия.

Классы

Synapse

Реализация синапса.

init(signal_source, signal_index, weight=1.0)

Конструктор синапса.

Параметры:

  • signal_source (required) - объект источника сигнала. Источник сигнала должен реализовывать интерфейс Template.SignalSource.
  • signal_index (required) - индекс сигнального канала. Источник сигнала может иметь более одного канала. Поэтому для однозначности помимо самого источника сигнала необходимо указать и номер сигнального канала.
  • weight (default 1.0) - начальный вес синапса. В процессе функционирования вес синапса адаптивно изменяется. Вес синапса должен иметь положительное значение.

run() -> None

Итерация работы синапса. Синапс считывает сигнал из источника и корректирует свой вес.

output_signal

Сигнал на выходе синапса.

weight

Вес синапса. Вес синапса принимает только не отрицательные значения. В отличие от "классической" архитектуры ИНС, здесь синапс не изменяет проводимый сигнал. Вес синапса используется для расчета средневзвешенной суммы сигналов из группы синапсов.

Dendrite

Реализация дендрита.

init(synapses=None)

Конструктор дендрита.

Параметры:

  • synapses (default None) - начальный список синапсов, из которых дендрит принимает сигнал. _В отличие от "классической" архитектуры ИНС, где один синапс передает сигнал только в один нейрон, здесь один синапс может поставлять сигнал в группу нейронов (опосредованно через дендриты). Для этого достаточно один и тот же объект синапса передать в конструктор нескольких нейронов.

append_synapses(synapses)

Добавление синапсов к дендриту.

Параметры:

  • synapses (required) - список добавляемых синапсов

run() -> None

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

output_signal

Сигнал на выходе дендрита.

LQVNeuron

Реализация LQV-нейрона.

init(dendrites, number_of_kernels)

Конструктор нейрона.

Параметры:

  • dendrites (required) - список дендритов, исходящие сигналы которых принимаются нейроном.
  • number_of_kernels (required) - Количество ядер LQV-кластеров, в которые отображается вектор сигналов от дендритов нейрона. Минимальное значение 2.

get_number_of_outputs() -> int

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

get_output_signal(signal_index) -> float

Возвращает значение выходного сигнала нейрона.

Параметры:

  • signal_index - номер сигнального канала. Может меняться от 0 до get_number_of_outputs() - 1.

run() -> None

Итерация работы нейрона:

  1. Нейрон инициирует работу дендритов.
  2. Нейрон считывает выходные сигналы дендритов.
  3. Вычисляется вектор расстояний между LQV-ядрами и входным вектором сигналов.
  4. Вектор расстояний отображается в выходные сигналы нейрона.
  5. Корректируются LQV-ядра (обучение LQV-нейрона).

reset_state() -> None

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

DNeuron

Реализация D-нейрона.

init(dendrites, number_of_kernels)

Конструктор нейрона.

Параметры:

  • dendrites (required) - список дендритов, исходящие сигналы которых принимаются нейроном.
  • number_of_kernels (required) - Количество ядер LQV-кластеров, в которые отображается вектор сигналов от дендритов нейрона. Минимальное значение 2.

get_number_of_outputs() -> int

Метод необходим для реализации интерфейса Template.SignalSource. Для D-нейрона всегда возвращает 1.

get_output_signal(_dummy=0) -> int

Возвращает значение выходного сигнала D-нейрона. Фиктивный параметр _dummy потребовался для реализации интерфейса Template.SignalSource.

run(reward) -> None

Итерация работы нейрона:

  1. Нейрон инициирует работу дендритов.
  2. Нейрон считывает выходные сигналы дендритов.
  3. Входной вектор сигналов отображается на один из LQV-ядер.
  4. Решается какой сигнал вернуть из нейрона
  5. Корректируются LQV-ядра и и другие параметры генерации выходного сигнала (обучение D-нейрона).

Параметры:

  • reward (required) - Уровень вознаграждения нейрона за свое прошлое поведение. Положительное значение указывает на полезное поведение. Отрицательное значение указывает на отрицательные результаты поведения. Передается значение 0 в случае отсутствия повода для "поощрения" или "наказания" нейрона.

reset_state() -> None

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