Сеть теории адаптивного резонанса | ART

алгоритм

Сеть Adaptive Resonance Theory (ART) была предложена Г. А. Карпентером, ученым из Бостонского университета, в 1976 году. В течение многих лет Г. А. Карпентер пытался создать единую математическую теорию психологии человека и познавательной деятельности, и ИСКУССТВО является центральной частью этой теории. Затем Г. А. Карпентер и С. Гроссберг предложили сеть ATR. После многих лет исследований и непрерывного развития сеть ART имеет три формы: тип ART I обрабатывает биполярные или бинарные сигналы; тип ART II — это расширенная форма ART I, используемая для обработки непрерывных аналоговых сигналов; тип ART III — иерархический. модель совместима с функциями первых двух структур и расширяет двухслойную нейронную сеть до произвольной многослойной нейронной сети. Поскольку ART III включает механизм биоэлектрохимической реакции биологических нейронов в операционную модель нейронов, он обладает сильными функциями и масштабируемостью. В этой статье представлен принцип работы сети ART I и, наконец, приведен простой пример и соответствующая программа.

@[toc]

1. Катастрофическая проблема забывания

Для обучающей сети с сигналом наставника стабильная память достигается за счет многократного ввода шаблона образца.Если для продолжения обучения добавляются новые образцы, результаты предыдущего обучения будут постепенно меняться. Конкретная производительность заключается в забвении старых данных и старых знаний. Формула корректировки веса сети обучения без учителя включает элемент обучения данных и элемент забывания старых данных, и определенный компромисс может быть достигнут путем управления размером коэффициента обучения и коэффициента забывания. Однако не существует общего метода определения этого коэффициента. Следовательно, при обучении этих двух типов нейронных сетей старые образцы будут забыты, что повлияет на производительность классификации сети. Нереально решить проблему забывания выборки, бесконечно увеличивая размер сети. Убедитесь, что при соответствующем увеличении размера сети достигается определенный компромисс между шаблоном прошлой памяти и шаблоном обучения нового ввода, максимизируя получение новых знаний (гибкость), обеспечивая при этом меньшее количество выборок, влияющих на прошлый шаблон (стабильность). ), сеть ART хорошо решает эту проблему.

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

2. Сеть типа ART I

Он будет представлен в соответствии с тремя элементами нейронной сети: моделью нейрона, структурой сети и алгоритмом обучения.

2.1 Структура сети

2.1.1 Структура сетевой системы показана на следующем рисунке:

在这里插入图片描述Структура сети ART I состоит из двух слоев нейронов, образующих две подсистемы, а именно слой сравнения C и слой идентификации R, которые содержат три вида управляющих сигналов: сигнал сброса R, логические управляющие сигналы G1 и G2.

2.1.2 Структура С-уровня показана на следующем рисунке:

在这里插入图片描述Этот слой имеет n нейронов, каждый из которых получает сигналы от 3 аспектов: внешний входной сигнал, обратный сигнал чужого весового вектора нейрона-победителя в R-слое и управляющий сигналG1G_1. Выход нейронов в слое C генерируется в соответствии с принципом голосования большинства 2/3, а выходное значение совпадает со значением сигнала большинства среди трех сигналов. Когда сеть начнет работать,G1=1G_1 = 1, слой распознавания еще не произвел нейронов, выигравших конкуренцию, поэтому сигнал обратной связи равен 0. По правилу 2/3 выходной сигнал слоя C должен зависеть от входного сигнала.C=XC=X. Когда на уровне идентификации сети есть сигнал обратной связи,G1=0G_1=0, по правилу 2/3 выход слоя С зависит от результата сравнения входного сигнала и сигнала обратной связи, если xi = tij, то,ci=xic_i = x_i,в противном случаеci=0c_i=0. Сигнал управления можно увидетьG1G_1Функция состоит в том, чтобы позволить уровню сравнения различать различные этапы работы сети, и сеть начинает работать.G1G_1Функция состоит в том, чтобы заставить слой C выводить входной сигнал напрямую, а затемG1G_1Функция состоит в том, чтобы заставить слой C выполнять функцию сравнения, в это времяcic_iзаxix_iиtijt_{ij}Сигнал сравнения , оба из которых равны 1 одновременно, затемcic_i1, иначе 0. Видно, что сигнал обратной связи R-слоя оказывает регулирующее влияние на выход C-слоя.

2.1.3 Структура уровня R показана на следующем рисунке:

在这里插入图片描述Эта функция эквивалентна сети конкуренции с прямой связью.Слой R имеет m нейронов, представляющих m классов входных паттернов, и m может динамически увеличиваться для создания новых классов паттернов. Выходной вектор C слоя C достигает нейрона R-слоя по вектору веса внутренней звезды нейрона R-слоя и указывает категорию входного режима в том месте, где нейрон-победитель генерируется после соревнования. Победивший нейрон выдает 1, а остальные 0. Каждый нейрон в слое R соответствует двум векторам весов, один из которых является внутренним вектором весов, который агрегирует сигнал прямой связи слоя C к слою R, а другой является внешним вектором весов, который излучает сигнал обратной связи слоя R к слою R. слой С.

2.1.4 Сигналы управления

СигналG2G_2Обнаружение режима вводаXXНезависимо от того, равен ли он 0, он равен логическому ИЛИ каждого компонента X. Если xi все равно 0, то G2=0, иначе G2=1. Логическое ИЛИ каждого компонента выходного вектора слоя R равноR0R_0, то сигналG1=G2G_1=G_2и(R0R_0нет). Когда все компоненты выходного вектора слоя R равны 0, а входной векторXXКогда это не нулевой вектор,G1G_1равно 1, иначеG1G_1равно 0.G1G_1Функция состоит в том, чтобы позволить уровню сравнения различать различные этапы работы сети.Функция G1 в начале работы сети состоит в том, чтобы заставить уровень C напрямую выводить входной сигнал, а затемG1G_1Функция состоит в том, чтобы заставить слой C выполнять функцию сравнения.В это время ci является сигналом сравнения xi и tij, и оба одновременно равны 1, тогдаcic_i1, иначе 0. Роль сигнала сброса состоит в том, чтобы аннулировать нейроны-победители соревнования R-слоя, если в соответствии с некоторым заранее установленным стандартом измерения,TjT_jиXXУстановленное сходство не достигается, что указывает на то, что эти два нейрона недостаточно близки, поэтому система отправляет сигнал сброса, аннулирующий нейрон-победитель соревнования.

2.2 Принцип работы сети

Среда выполнения сети принимает входные шаблоны из среды и проверяет, насколько хорошо входные шаблоны соответствуют всем сохраненным классам шаблонов на уровне R. Класс паттернов, хранящийся в слое R, отражается чужеродным вектором весов, соответствующим нейрону в слое R. Для нейрона-победителя с наивысшей степенью совпадения сеть должна продолжать исследовать сходство своего сохраненного класса паттернов с текущим. шаблон ввода. Степень подобия проверяется в соответствии с заранее заданным эталонным порогом, и могут возникнуть следующие ситуации: A. Если сходство превышает эталонный порог, текущий режим ввода классифицируется в эту категорию.Правило постоянной корректировки заключается в том, что нейроны, сходство которых превышает эталонный порог, настраивают соответствующие внутренние и внешние векторы веса звезды, так что нейроны, которые близки к текущему режиму ввода, встречаются в дальнейшем, большее сходство может быть получено при использовании выборки, остальные векторы весов не изменяются. Б. Если сходство не превышает порогового значения, то проверяется сходство для класса паттернов, представленного нейроном со второй по величине степенью совпадения в слое R. Если оно превышает порог, работа сети возвращается к случаю А , в противном случае он все равно возвращается к случаю B. . Если сходство между всеми сохраненными классами паттернов и текущим входным паттерном не превышает порогового значения, на выходе сети необходимо настроить нейрон, представляющий новый класс паттернов, для представления и сохранения паттерна, чтобы участвовать в последующем процессе сопоставления. . Сеть выполняет описанный выше процесс для каждой новой входной выборки, которую она принимает. Для каждого режима ввода процесс работы сети можно разделить на 4 этапа:

2.2.1 Фаза сопоставления

Сеть находится в состоянии ожидания до того, как не будет режима ввода, в это время входной терминалX=0X=0. Когда на входе не все 0 режимXXчас,G1=1G_1=1Разрешить входной шаблон проходить непосредственно из слоя C и вперед в слой R, все внутренние векторы весов звезд, соответствующие нейронам слоя RBjB_jВыполните соответствующий расчет:netj=BjTX=i=1nbijxinet_j=B_j^{T}X=\sum_{i=1}^n b_{ij}x_iВыберите нейрон-победитель конкурса с наибольшей степенью соответствия (с наибольшим скалярным произведением):netj*=maxj{netj}net_j^*=\max_j\{net_j\}сделать выигрышный выход нейронаrj*=1r_j^*=1, другие нейроны выводят 0.

2.2.2 Этап сравнения

Соедините вектор веса инопланетянина с нейроном-победителем в слое R.Tj*Т^*_jАктивация, n весовых сигналов от нейрона j возвращаются n нейронам в слое C. В это время, если выходные данные уровня R не все равны нулю, последнее состояние вывода уровня C зависит от результата сравнения между весовым вектором пришельцев, возвращенным уровнем R, и входным режимом сети X.Поскольку вектор весов пришельцев является типичным вектором для класса паттернов слоя R, результат сравнения отражает сходство между типичным вектором класса шаблонов первого ранга в соревновании уровня R и текущим входным шаблоном X на этапе сопоставления. Сходство Размер Доступный размер СходствоН0N_0реакция, определяемая как:N0=XTtj*=i=1ntij*xi=i=1nciN_0=X^Tt_j^*=\sum_{i=1}^n t_{ij}^* x_i=\sum_{i=1}^n c_iпотому что вводxix_iэто двоичное число,N0N_0На самом деле он представляет собой количество раз, когда канонический вектор шаблона класса нейрона-победителя имеет тот же компонент, что и образец входного шаблона, в то же время, что и 1. ненулевые цифры компонентов в образцах входного шаблонаN1N_1 N1=inxiN_1=\sum_i^n x_iПорог предупреждения для сравненияρ\rho,существует0 10~1значение между, проверьте, не ниже ли сходство между входным шаблоном и типичным вектором класса шаблона порога предупреждения, если да:N0/N1<ρN_0 / N_1 < \rhoноXXиTj*T_j^*Подобие не соответствует требованиям, сеть посылает сигнал Reset, из-за чего сопоставление на первом этапе не удается, нейрон-победитель конкурса недействителен, и сеть переходит на этап поиска. Если естьN0/N1>ρN_0 / N_1 > \rhoпоказыватьXXочень близок к паттерну категории, соответствующему нейрону-победителю, который называетсяXXиTj*T_j^*возникает резонанс, результаты сопоставления первого этапа действительны, и сеть переходит к этапу обучения.

2.2.3 Этап поиска

После того, как сеть посылает сигнал сброса, она переходит в фазу поиска.Функция сигнала сброса состоит в том, чтобы ингибировать нейроны, которые ранее выиграли соревнование, и продолжать ингибировать в последующем процессе до тех пор, пока не будет введен следующий новый паттерн. Повторное появление из-за торможения конкурирующего нейрона-победителя в слое R.R0=0R_0=0,G1=1G_1=1, поэтому сеть возвращается в исходное состояние соответствия. Поскольку нейрон, выигравший в прошлый раз, постоянно тормозится, на этот раз должен побеждать нейрон со второй по величине степенью соответствия. Затем войдите в стадию сравнения, инопланетный весовой вектор, соответствующий нейронуtj*т^*_jВычисление сходства с входным шаблоном. Если все классы паттернов слоя R не могут удовлетворить требованиям проверки подобия на этапе сравнения, это означает, что текущий входной паттерн не имеет классификации, и необходимо добавить нейрон в выходной слой сети для представления и хранения класс шаблона поместите его внутренний вектор веса звездыBj*B^∗_jразработан как текущий вектор режима ввода, вектор веса пришельцаTj*Т^*_jВсе компоненты установлены на 1.

2.2.4 Фаза обучения

На этапе обучения следует усилить класс паттернов, соответствующий нейрону-победителю с резонансом, чтобы можно было получить больший резонанс, когда в будущем появятся входные образцы, похожие на паттерн. Вектор силы пришельцевTj*Т^*_jи вектор веса внутренней звездыBj*B^∗_jКорректировки вносятся на этапе запуска для дальнейшего укрепления памяти. После обучения память отсчетов останется в двух наборах весовых векторов, даже если входные отсчеты изменятся, веса все равно будут существовать, поэтому это называетсяДолгосрочная память. Эти два набора долговременной памяти возвращают выходные данные R-слоя в состояние выборки памяти, когда более поздние входные выборки аналогичны уже запомненным образцам.

2.3 Алгоритмы сетевого обучения

Сети ART I могут быть реализованы с использованием алгоритмов обучения или аппаратного обеспечения. Обучение можно проводить следующим образом: (1) Инициализация сети От слоя C к слою R вектор веса внутренней звездыBjB_jприсвойте такое же меньшее значение, напримерbij(0)=11+nb_{ij}(0) = \frac{1}{1+n}Весовой вектор инопланетян из слоя R в слой CTjT_jКаждому компоненту присваивается значение 1 Начальный вес имеет большое влияние на весь алгоритм.Вектор веса внутренней звезды устанавливается в соответствии с приведенной выше формулой, которая может гарантировать, что входной вектор может сходиться к своей правильной категории без легкого использования неиспользуемых нейронов. Установка каждого компонента вектора весов инопланетян равным 1 гарантирует, что сходство шаблонов может быть правильно рассчитано при измерении сходства. Предупреждающий порог измерения сходства ρ устанавливается как число от 0 до 1, указывающее, насколько близко два шаблона следует считать похожими, поэтому их размер напрямую влияет на точность классификации. (2) Сеть принимает ввод Учитывая шаблон ввода,X=(x1,x2,...,xn),xiе(0,1)nX=(x_1, x_2,...,x_n), x_i \in (0,1)^n(3) Расчет степени соответствия векторы весов для всех внутренних звезд в слое RBjB_jРежим вычислительного вводаXXсовпадение:BjTX=i=1nbijxiB_j^TX=\sum_{i=1}^n b_{ij}x_i(4) Выберите наиболее подходящий нейрон Эффективно выводить ансамбль нейронов в слое RJ*J ^ *Конкуренция внутреннего отбора побеждает лучший соответствующий нейронj*j^*, так чтоrj*=1,else,rj=0r^*_j=1, else, r_j=0(5) Расчет подобия Выигравший нейрон j* слоя R отправляется обратно через инопланетянина для хранения типичного вектора T*j класса шаблонов, а выходной сигнал слоя C дает парный векторTj*Т^*_jРезультат сравнения с Xci=tij*c_i=t^∗_{ij}, исходя из этого результата, сходство двух векторов можно рассчитать как:N1=1nxi,N0=1nciN_1=\sum_1^n x_i,N_0=\sum_1^n c_i(6) Проверка порога предупреждения По установленному порогуρ\rhoПроведите тест на сходство. (7) Поиск по классу шаблона соответствия Выполните поиск класса шаблона, как описано выше. (8) Отрегулируйте веса сети Изменить нейроны слоя Rj*j^*Соответствующий вектор веса, обучение сети принимает два правила, вектор веса пришельца корректируется в соответствии со следующими правилами:tij*(t+1)=tij*xit_{ij}^*(t+1)=t_{ij}^*x_iВектор внеземного веса является типичным вектором или центром скопления, соответствующим классу шаблона, а корректировка вектора веса внутренней звезды основана на следующих правилах:bij*(t+1)=tij*(t)xi0.5+i=1ntij*(t)xi=tij*(t+1)0.5+i=1ntij*(t+1)b_{ij}^*(t+1)=\frac{t_{ij}^*(t)x_i}{0.5+\sum_{i=1}^n t_{ij}^*(t)x_i}=\frac{t_{ij}^*(t+1)}{0.5+\sum_{i=1}^n t_{ij}^*(t+1)}Видно, что если не учитывать константу 0,5 в знаменателе, приведенная выше формула эквивалентна нормализации внеземного вектора весов.

2.4 Образец программы ART I

"""
ART1 神经网络练习
author Toby
"""
import numpy as np

def ART_learn(train_data_active, weight_t_active, weight_b_active, n):
    weight_t_update =  train_data_active * weight_t_active
    weight_b_update = weight_t_update / (0.5 + np.sum(weight_t_update))
    return weight_t_update, weight_b_update

def ART_core(train_data, R_node_num, weight_b, weight_t, threshold_ro, n):
    data_length, data_num = train_data.shape
    result= np.zeros(data_num)
    for i in range(data_num):
        R_node = np.zeros(R_node_num)
        for n in range(R_node_num):
            net = []
            for j in range(R_node_num):
                net.append(np.sum(np.dot(train_data[:,i], weight_b[:,j])))
            j_max = np.where(net == np.max(net))[0][0]
            if R_node[j_max] == 1:
                net[j_max] = -n
            j_max = np.where(net == np.max(net))[0][0]
            R_node[j_max] = 1
            
            weight_t_active = weight_t[:, j_max]
            weight_b_active = weight_b[:, j_max]
            Similarity_N0 = np.sum(weight_t_active*train_data[:,i])
            Similarity_N1 = np.sum(train_data[:,1])
            flag = 1
            if threshold_ro < Similarity_N0 / Similarity_N1:
                weight_t[:,j_max], weight_b[:,j_max] = ART_learn(train_data[:,i], weight_t_active, weight_b_active, j_max)
                print('样本%d属于第%d类\n'%(i, j_max))
                result[i] = j_max                
                flag = 0
                break
            
        if flag == 1:
            R_node_num = R_node_num + 1
            if R_node_num == data_num + 1:
                print('样本%d属于第%d类\n 错误: 目前的分类类别数为%d \n'%(i, R_node_num, R_node_num))
                return R_node_num,weight_b,weight_t,result
            weight_b = np.column_stack((weight_b, train_data[:,i]))
            weight_t = np.column_stack((weight_t, np.ones(data_length)))
            print('样本%d属于第%d类\n'%(i, R_node_num))
            result[i] = R_node_num
    return R_node_num,weight_b,weight_t,result
            
            
            
train_data=np.array([[0,0,0,1,1,1,0],
                    [0,0,0,1,1,0,0], 
                    [0,0,0,1,0,1,1],  
                    [1,0,1,0,1,0,1], 
                    [1,1,1,0,1,0,0],  
                    [1,1,0,0,0,0,1]])
data_length, data_num = train_data.shape
N = 100
R_node_num = 3
weight_b = np.ones([data_length, R_node_num]) / N
weight_t = np.ones([data_length, R_node_num])
threshold_ro = 0.5
result_pre = np.zeros(data_num)
IsOver = False
for n in range(10):
    R_node_num, weight_b, weight_t, result = ART_core(train_data, R_node_num, weight_b, weight_t, threshold_ro,n)
    for i in range(min(len(result), len(result_pre))):
        IsOver = True
        if result[i] != result_pre[i]:
            IsOver = False
            break
    if IsOver:
        print('样本分类迭代完成!!!!')
        break
    if R_node_num == data_num+1:
        print('分类错误:样本类别数大于样本数')
    print("------------------------")
    result_pre = result


Выходной результат: Образец 0 принадлежит к классу 0

Образец 1 относится к классу 0

Образец 2 относится к категории 1

Образец 3 относится к категории 2

Образец 4 относится к категории 1

Образец 5 относится к категории 2

Образец 6 относится к категории 4


Образец 0 относится к классу 3

Образец 1 относится к классу 0

Образец 2 относится к категории 1

Образец 3 относится к категории 2

Образец 4 относится к категории 1

Образец 5 относится к категории 2

Образец 6 относится к категории 3


Образец 0 принадлежит к классу 0

Образец 1 относится к классу 0

Образец 2 относится к категории 1

Образец 3 относится к категории 2

Образец 4 относится к категории 1

Образец 5 относится к категории 2

Образец 6 относится к категории 3


Образец 0 принадлежит к классу 0

Образец 1 относится к классу 0

Образец 2 относится к категории 1

Образец 3 относится к категории 2

Образец 4 относится к категории 1

Образец 5 относится к категории 2

Образец 6 относится к категории 3

Итерация классификации образцов завершена! ! ! !

3. Резюме

Сеть ART характеризуется неавтономным обучением, то есть запуском ее работы не после повторного обучения входных отсчетов, а режимом работы в реальном времени при обучении.Каждый выходной нейрон можно рассматривать как представитель класса одинаковые выборки, и в каждый момент времени их может быть не более одной.Выходной нейрон 1. Когда входная выборка ближе к некоторому внутреннему вектору веса звезды, это означает, что ее выходной нейрон отвечает. Путем регулировки размера порога предупреждения можно регулировать количество паттернов. Когда ρ мало, типов паттернов мало , Есть много категорий. Когда модель ART I реализуется аппаратно, нейроны уровня C и уровня R реализуются схемами, а веса долговременной памяти реализуются схемами CMOS.