Ну где же винтики мои

May 26, 2024 09:59


#ИИ #AI #искусственный_нейрон #нейрон

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

при упоминании искусственного нейрона принято рисовать что-то типа такого:



как видно все довольно просто: на входе мы имеем некоторое количество сигналов. после чего вычисляется их некоторая линейная комбинация и подается на вход функции активации. если функция активации возвращает значение «истина» выходной сигнал распространяется дальше. все довольно несложно.

на деле это может оказаться еще проще.

пусть у нас нейрон определяет является ли объект вороной. пусть приходит 3 сигнала:

  1. птица
  2. серая
  3. каркает

веса будем расставлять от 1 до 100. функция активации тоже будет простейшая: если набрали больше 50 функция равна 1 меньше 50 - 0

каждому сигналу сопоставим вес:

  1. птица w1 = 40
  2. серая w2 = 20
  3. каркает w3 = 30

тогда получаем варианты, когда функция активации равна 1:

птица =1, серая=1, каркает=0

1*40 + 1*20 + 0 * 30 = 60 ;   60>50  f = 1

птица =1, серая =0, каркает =1

1*40 + 0 * 20 + 1* 30 = 70;    70>50 f = 1

птица =1, серая =1, каркает =1

1*40 + 1 * 20 + 1* 30 = 90;   90>50 f = 1

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

впрочем нам не нужна арифметика - у нас фиксированное число входных сигналов принимающие значение либо 0 либо 1. можно просто написать те случаи в которых функция активации равна 1.

птица =1, серая=1, каркает=0

1 1 0 => f = 1

птица =1, серая =0, каркает =1

1 0 1 => f = 1

птица =1, серая =1, каркает =1

1 1 1 => = 1

т.е если обозначить аргументы функции начальными буквами слов, наша таблица истинности нашей булевой функции будет выглядеть как-то так:

П С К

0  0  0 => 0

0  0  1  => 0

0  1  0  => 0

0  1  1  => 0

1  0  1  => 1

1  1  0  => 1

1  1  1  => 1

проблема мне видится в том, что число комбинаций катастрофически быстро растет. например для 8 входов можно составить 256 комбинаций.

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

тем не менее веса играют важное значение. изменяя веса мы можем очень сильно влиять на логику нейрона. например в нашем примере «основной» сигнал был выбран «птица» ни что не мешает выбрать иной например «каркает». изначально веса «выбираются от фанаря» и в процессе пассивного обучения настраиваются.

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

  • вы слыша карканье и думаете: ну кто же может какать кроме вороны? и представляете себе образ вороны.
  • вы слыша карканье начинаете искать ворону и убеждаетесь, что каркает именно ворона.
  • вы слыша карканье начинаете искать ворону и с удивлением обнаруживаете, что каркает попугай.

как к этому можно приблизится?

ну вообще существуют разные типы сетей. можно выделить два основных: сети прямого распространения и сети с обратной связью. а что если создать мутанта? мутировать будет наш нейрон.

что если у нейрона будет такая логика работы.

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

для нашего примера это будет выглядеть так:

  1. в наш нейрон определитель вороны пришел сигнал «каркает»
  2. нейрон оправляет запрос на определение сигналов «серая» и «птица»
  3. если в него приходит сигнал «птица» - нейрон активируется
  4. нейрон распространяет сигнал в обратном направлении, только это интерпретируется как запрос на поучение сигналов.

если вам подумается, что я сам это придумал, то нет - творчески переаботал описание возбуждения нейрона ЦНС:

Возбуждение, возникшее в виде нервного импульса на каком-либо участке мембраны нейрона, пробегает по всей его мембране и по всем его отросткам: как по аксону, так и по дендритам. Передаётся возбуждение от одной нервной клетки к другой только в одном направлении - с аксона передающего нейрона на воспринимающий нейрон через синапсы, находящиеся на его дендритах, теле или аксоне. Одностороннюю передачу возбуждения обеспечивают синапсы.

кстати это «быстрый ответ» яндекса, который насколько я понимаю сгенерирован нейросетью. не претендую на истину в последней инстанции - я хоть когда-то и занимался ИКТ, но был далек от программирования и в тем более нейронных сетей.

#ai, #нейрон, #искусственный_нейрон, Мысли в слух, #ИИ

Previous post Next post
Up