Принятие сети ХэммингаРасстояние ХэммингаИзмеряет расстояние между двумя векторами. Поэтому сеть Хэмминга специально разработана для решения задачи распознавания бинарных образов (каждый элемент входного вектора в задаче может принимать только одно из двух возможных значений, а в данной работе принимает два значения -1 и +1) . Он использует как сеть прямой связи, так и рекуррентную сеть, а количество нейронов в двух слоях одинаково.Целью сети Хэмминга является определение того, какой вектор-прототип ближе всего к входному вектору, а результат определения представлен выходом рекурсивного слоя.. Каждый стандартный шаблон соответствует нейрону в рекурсивном слое.Когда рекурсивный слой сходится, только один нейрон в рекурсивном слое имеет ненулевое выходное значение, которое указывает, какой стандартный шаблон ближе всего к входному вектору. В этой статье подробно описан принцип работы сети Хэмминга в сочетании с проблемой классификации фруктов.
1. Вопросы
У продавца есть склад, на котором хранятся различные фрукты и овощи. При закладке фруктов на склад разные виды фруктов могут перепутаться, поэтому торговец очень хочет иметь машину, которая поможет ему автоматически сортировать и укладывать фрукты. Допустим, есть таможенная лента от места разгрузки фруктов до склада. Конвейерная лента проходит через определенный набор датчиков, которые измеряют три характеристики фруктов: форму, текстуру и вес. Как показано ниже:Функции этих датчиков относительно просты. Если фрукт в основном круглый, выход датчика формы будет равен 1. Если фрукт более эллиптический, выход датчика формы будет -1.Если поверхность плода гладкая, выход датчика текстуры будет быть 1, если поверхность плода шероховатая, то выход датчика качества равен -1, когда плод весит более 1 фунта, выход датчика веса равен 1, когда фрукт весит менее 1 фунта, выход датчика веса -1.
Сеть Хэмминга, представленная в этой статье, может очень хорошо решить эту проблему. Конечный результат: выходные данные трех датчиков передаются в нейронную сеть Хэмминга. Затем сеть выводит тип фруктов, а затем отправляет разные типы фруктов в соответствующие бункеры для хранения.
2. Уровень прямой связи
Уровень прямой связи используется для реализации обнаружения корреляции или внутреннего продукта между каждым режимом критерия и режимом ввода. Для того, чтобы упреждающий слой выполнял свою функцию, строки его весовой матрицы можно задать в стандартном режиме с помощью матрицы связиВыражать. Для яблочно-оранжевых экземпляров есть
Слой прямой связи использует линейную передаточную функцию, и каждый элемент в векторе смещения равен. в,- количество элементов во входном векторе. Соответственно, вектор значения смещения в этом случае может быть установлен как
При таком выборе весовой матрицы и вектора смещения выходной сигнал слоя прямой связи равен
Примечание. Выходной сигнал слоя прямой связи равен сумме внутреннего произведения входных данных и каждого стандартного режима.. Для этих двух векторов одинаковой длины (нормы) скалярное произведение является наибольшим, когда два вектора указывают в одном направлении, и наименьшим, когда они указывают в противоположных направлениях. добавить внутренний продуктЭто делается для того, чтобы на выходе уровня прямой связи не были все отрицательные значения, что необходимо для нормальной работы рекурсивного уровня.
3. Рекурсивный слой
Рекурсивный слой сети Хэмминга — это так называемый «конкурентный» слой. Нейроны этого слоя инициализируются выходными данными слоя прямой связи, что указывает на взаимосвязь между шаблоном-прототипом и входным вектором. Затем нейроны в рекуррентном слое соревнуются друг с другом, чтобы определить победителя. После соревнования только одно выходное значение нейрона не равно 0. Нейрон, выигравший соревнование, представляет категорию входных данных, предоставленных сети (например, в нашем примере это две категории яблок и апельсинов). Уравнение, описывающее конкуренцию, имеет видив,Передаточная функция представляет собой линейную функцию для положительных значений и 0 для отрицательных значений.Матрица весовв виде (для обеих категорий)
(для трех категорий)
Поэтому можно увидетьВсе диагональные элементы равны 1, а все остальные элементы равны. здесь,меньше чемколичество ,число нейронов в рекуррентном слое.
Каждая итерация рекурсивного слоя может быть выражена как:
Из приведенной выше формулы видно, что каждый элемент вектора вычитает часть другого элемента, а коэффициент редукции одинаков, то есть. Видно, что величина вычитания облака из элемента с большим значением меньше, а сумма вычитания из элемента с меньшим значением больше, что приведет к дальнейшему расширению разности размеров значения элемента , и, наконец, сделайте элемент с наибольшим начальным значением, кроме элемента с наибольшим значением, Значения других элементов постепенно станут равными 0, за исключением того, что значение продолжает оставаться больше. Нейрон, соответствующий элементу, выходное значение которого больше 0, соответствует стандартному образцу, ближайшему к входному образцу по расстоянию Хэмминга.
4. Пример
В этой части объясняется использование сети Хэмминга для решения проблемы классификации фруктов в начале. Чтобы упростить задачу, предположим, что на конвейерной ленте есть только два вида фруктов: яблоки и апельсины. Мы можем использовать трехмерный векторизображать фрукт:
Итак, стандартный апельсин можно выразить как:Стандартное яблоко можно представить в виде:
Для фруктов на конвейерной ленте сеть Хэмминга может получить трехмерный входной вектор и должна решить, что это апельсин () или яблоко ().
В этот момент предположим, что овальный апельсинОтправляясь на конвейерную ленту, мы проходим ее, чтобы посмотреть, как работает сеть Хэмминга.
- Инициализировать веса слоя прямой связи
2. Инициализировать веса рекурсивного слоя3. Рассчитайте выходное значение слоя прямой связи4. Итеративно вычисляйте выходные данные рекурсивного слоя до сходимости
так как, поэтому рекурсивный слой сходится. Первое измерение не равно нулю, поэтому фрукт считается апельсином.
Процедура приведена ниже:
import numpy as np
import copy
class HammingNet:
def __init__(self, W1, outputs):
self.outputs = outputs
self.W1 = W1
self.b1 = len(self.W1[0])*np.ones((len(self.W1), 1))
self.W2 = np.eye(len(self.W1))
self.W2[self.W2==0] = -(1.0/(len(self.W1)))
self.max_iters = 100
def fit(self, x):
a1 = self.purelin(x)
a2 = copy.deepcopy(a1)
for i in range(self.max_iters):
new_a2 = self.poslin(a1)
if new_a2.tolist() == a2.tolist():
a2 = copy.deepcopy(new_a2)
break
a2 = copy.deepcopy(new_a2)
a2 = a2.reshape(-1)
a2[a2>0] = 1
output_type = self.outputs[a2.tolist().index(1)]
print("This is an "+output_type)
def purelin(self, x):
return np.dot(self.W1, x)+self.b1
def poslin(self, x):
a2 = np.dot(self.W2, x)
a2[a2<0] = 0
return a2
outputs = ["orange", "apple"]
W1 = np.array([[1, -1, -1] # the prototype of orange
,[1, 1, -1] # the prototype of apple
])
hammingnet = HammingNet(W1, outputs)
x = np.array([-1, -1, -1] # a ellipsoidal orange
).reshape(-1, 1)
hammingnet.fit(x)
6. Резюме
В этой статье представлены цель, принцип работы и метод сети Хэмминга, и, наконец, приводится пример и программа, иллюстрирующие рабочий процесс сети Хэмминга. Сеть Хемминга состоит из двухслойной нейронной сети, состоящей из слоя прямой связи и слоя рекурсии, веса двух слоев необходимо проектировать заранее, то есть структура и параметры сети Хэмминга задаются искусственно. По сравнению с другими нейронными сетями (можно изучить хотя бы один из параметров и структуру) сеть Хэмминга является очень простой нейронной сетью. Тем не менее, основные игроки сети ХэммингаПринцип работы:在内积操作层(前馈层)之后紧跟一个动态竞争层(递归层)
, который был заимствован многими более поздними искусственными нейронными сетями, получившими названиесамоорганизующаяся сеть. Но в отличие от статической природы сетей Хэмминга, эти сети могут обучаться и корректировать векторы-прототипы на основе предоставленных входных векторов.
Слой динамической конкуренции сети Хэмминга имеет две характеристики: 1) боковое торможение; 2) победитель получает все.Боковое торможение: выход каждого нейрона будет оказывать тормозящее действие на все остальные нейроны;победитель получает все: только один нейрон имеет ненулевой выход, это называется соревнованием «победитель получает все».
7. Ссылки
[1] Хаган М., Хаган, Дай Куи, Проектирование нейронных сетей [М], Machinery Industry Press, 2002.