Студопедия — Детали имплементации и терминология
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Детали имплементации и терминология






В данном разделе мы остановимся на некоторых деталях нашей имплементации темпорального группировщика и используемой при этом терминологии. Каждая наша клетка индексируется с помощью двух чисел: индекса колонки c, и индекса клетки в ней i. Клетки содержат в себе списки дендритных сегментов, а каждый из этих сегментов содержит список синапсов плюс значение перманентности для каждого из них. Изменения в синапсах клетки маркируются как отложенные до тех пор пока она опять не станет активной от прямого входа. Эти отложенные изменения в синапсах содержатся в списке segmentUpdateList. Каждый сегмент кроме того содержит в себе логическую переменную (флаг) sequenceSegment, которая показывает предсказывает ли данный сегмент активацию своей клетки от прямого входа в следующий момент времени.

Имплементация работы потенциальных синапсов здесь несколько отличается от их имплементации в пространственном группировщике. Там полный список потенциальных синапсов представляется явным списком. В темпоральном же группировщике каждый сегмент может иметь свой собственный (возможно большой) список потенциальных синапсов. Однако, на практике поддержание большого списка для каждого сегмента весьма накладно в плане производительности и требует много памяти. Поэтому, в темпоральном группировщике мы просто случайно добавляем активные синапсы к каждому сегменту во время обучения (что контролируется параметром newSynapseCount). Такая оптимизация этого процесса дает эффект сходный с поддержанием полного списка потенциальных синапсов, но списки для каждого сегмента становятся гораздо короче при сохранении возможности обучению новым временным паттернам.

В нашем псевдокоде также используется небольшой математический автомат, чтобы следить за состояниями клеток в различные моменты времени. Для каждой клетки мы вводим три различных состояния. Массивы activeState и predictiveState хранят в себе записи о активных состояниях и состояниях предсказания (предчувствия) для каждой из клеток, в каждый из моментов времени. Массив learnState определяет какие клетки используется во время обучения. Если данный прямой вход оказался неожиданным, все клетки в соответствующей колонке становятся активными на этот момент времени. Но только одна из этих клеток (которая лучше всего соответствует данному входу) включает свое состояние обучения learnState. И мы добавляем синапсы только клеткам с таким включенным параметром (что исключает излишнее использование дендритных сегментов для полностью активной колонки).

 

Следующие структуры данных используются в нашем псевдокоде темпорального группировщика.

 

cell(c,i) Список всех клеток с индексами по i и c.

 

cellsPerColumn Число клеток в каждой из колонок.

 

activeColumns(t) Список индексов колонок – победителей в активации благодаря прямому входу (выход пространственного группировщика).

 

activeState(c, i, t) Логический вектор с одним значением на каждую клетку. Он представляет активные состояния клеток колонки c с номером i в момент времени t при текущем прямом входе и временном контексте. activeState(c, i, t) это вклад от клетки колонки c с номером i во время t. Если это 1, то клетка активна при данном прямом входе и временном контексте.

 

predictiveState(c, i, t) Логический вектор с одним значением на каждую клетку. Он представляет активные состояния клеток колонки c с номером i в момент времени t при текущей активности других колонок и временном контексте. predictiveState(c, i, t) это вклад от клетки колонки c с номером i во время t. Если это 1, то клетка предсказывает активацию от прямого входа при данном временном контексте.

 

learnState(c, i, t) Логическое значение показывающее была ли клетка колонки c с номером i выбрана для обучения.

 

activationThreshold Порог активации для сегмента. Если число активных подключенных синапсов в сегменте больше чем activationThreshold, данный сегмент считается активным.

 

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

 

initialPerm Начальное значение перманентности для синапсов.

 

connectedPerm Если значение перманентности синапса больше данного значения, то он считается подключенным.

 

minThreshold Минимальная активность в сегменте для обучения.

 

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

 

permanenceInc Количество значений перманентности синапсов, которое увеличивается при обучении.

 

permanenceDec Количество значений перманентности синапсов, которое уменьшается при обучении.

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

 

segmentUpdateList Список структур segmentUpdate. segmentUpdateList(c,i) это список изменений для клетки i в колонке c.

 

Следующие внутренние процедуры используются в нашем псевдокоде:

 

segmentActive(s, t, state)

Эта процедура возвращает trueесли число подключенных синапсов сегмента s, которые активны благодаря заданным состояниям в момент t больше чем activationThreshold. Вид состояний state может быть activeState, или learnState.

 

 

getActiveSegment(c, i, t, state)

Для данной клетки i колонки c, возвращает индекс сегмента такого, что segmentActive(s,t, state) равно true. Если активны несколько сегментов, то сегментам последовательностей отдается предпочтение. В противном случае предпочтение отдается сегментам с наибольшей активностью.

 

 

getBestMatchingSegment(c, i, t)

Для данной клетки i колонки c в момент t, находит сегмент с самым большим числом активных синапсов. Т.е. она ищет наилучшее соответствие. При этом значения перманентности синапсов допускаются и ниже порога connectedPerm. Число активных синапсов допускается ниже порога activationThreshold, но должно быть выше minThreshold. Данная процедура возвращает индекс сегмента. А если такого не обнаружено, то возвращается -1.

 

getBestMatchingCell(c)

Для данной колонки возвращает клетку с самым соответствующим входу сегментом (как это определено выше). Если такой клетки нет, то возвращается клетка с минимальным числом сегментов.

getSegmentActiveSynapses(c, i, t, s, newSynapses= false)

Возвращает структуру данных segmentUpdate содержащую список предлагаемых изменений для сегмента s. Пусть activeSynapses список активных синапсов у исходных клеток которых activeState равно 1 в момент времени t. (Этот список будет пустым если s равно -1 при не существующем сегменте.) newSynapses это опциональный параметр, по умолчанию равный false. А если newSynapses равно true, тогда число синапсов равное newSynapseCount - count(activeSynapses) добавляется к активным синапсам activeSynapses. Такие синапсы случайно выбираются из числа клеток у которых learnState равно 1 в момент времени t.

 

adaptSegments(segmentList, positiveReinforcement)

Эта функция проходит по всему списку segmentUpdate и усиливает каждый сегмент. Для каждого элемента segmentUpdate делаются следующие изменения. Если positiveReinforcement равно trueтогда синапсы из списка activelist увеличивают значения своих перманентностей на величину permanenceInc. Все остальные синапсы уменьшают свои перманентности на величину permanenceDec. Если же positiveReinforcement равно false, тогда синапсы из списка активных уменьшают свою перманентность на величину permanenceDec. После этого шага любым синапсам из segmentUpdate которые только что появились добавляется значение initialPerm.


Приложение А. Сравнение между биологическими
 
 

нейронами и НТМ клетками

 

 

На этой картинке показано: слева схематическое изображение биологического нейрона (пирамидального), посередине – изображение простого искусственного нейрона и справа - нейрона НТМ. В данном приложении нам хотелось бы еще раз, более подробно, объяснить работу клеток НТМ путем их сравнения с биологическими нейронами и простыми искусственными нейронами.

Реальные нейроны мозга ужасно разнообразны и сложны. Поэтому, мы сфокусируемся только на самых основных принципах их работы, которые приложимы к нашей модели. И хотя мы тем самым опустим множество деталей работы биологических нейронов, все же клетки, используемые в алгоритмах обучения НТМ гораздо более реалистичны, чем искусственные нейроны, используемые ныне в большинстве т.н. нейронных сетей. Все рабочие элементы, включенные нами в состав НТМ клеток, необходимы нам для выполнения тех или иных операций в НТМ.







Дата добавления: 2015-08-12; просмотров: 453. Нарушение авторских прав; Мы поможем в написании вашей работы!



Вычисление основной дактилоскопической формулы Вычислением основной дактоформулы обычно занимается следователь. Для этого все десять пальцев разбиваются на пять пар...

Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...

Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...

Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...

Шрифт зодчего Шрифт зодчего состоит из прописных (заглавных), строчных букв и цифр...

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

РЕВМАТИЧЕСКИЕ БОЛЕЗНИ Ревматические болезни(или диффузные болезни соединительно ткани(ДБСТ))— это группа заболеваний, характеризующихся первичным системным поражением соединительной ткани в связи с нарушением иммунного гомеостаза...

Постинъекционные осложнения, оказать необходимую помощь пациенту I.ОСЛОЖНЕНИЕ: Инфильтрат (уплотнение). II.ПРИЗНАКИ ОСЛОЖНЕНИЯ: Уплотнение...

Приготовление дезинфицирующего рабочего раствора хлорамина Задача: рассчитать необходимое количество порошка хлорамина для приготовления 5-ти литров 3% раствора...

Дезинфекция предметов ухода, инструментов однократного и многократного использования   Дезинфекция изделий медицинского назначения проводится с целью уничтожения патогенных и условно-патогенных микроорганизмов - вирусов (в т...

Studopedia.info - Студопедия - 2014-2024 год . (0.008 сек.) русская версия | украинская версия