- •Архитектуры вычислительных систем
- •Нейрокомпьютерные системы
- •2 Нейронные сети обратного распространения с непрерывной функцией активации: архитектура, алгоритмы обучения, применение.
- •3 Конструируемые нейронные сети с конкурирующими нейронами: архитектура, применение.
- •4. Обучаемые нейронные сети с конкурирующими нейронами: архитектура, алгоритмы обучения, применение.
- •Базы данных
- •1 Понятие «базы данных». Основные компоненты базы данных.
- •2 Архитектура системы баз данных.
- •3 Нормальные формы БД. Нормализация данных.
- •4 Язык SQL для работы с реляционными базами данных.
- •5 Хранимые процедуры, триггеры, транзакции.
- •Системы поддержки принятия решений
- •1 Сравнительный анализ парадигм исследования операций и принятия решений. Классификация типов проблем по Г. Саймону.
- •2 Основные элементы многокритериальной задачи принятия решения. Выявление цели и определение типа задачи. Формирование множества альтернатив, критериев, шкал.
- •Структуры данных
- •1 Временная сложность алгоритма. Сравнительный анализ алгоритмов поиска.
- •Алгоритмы поиска в неупорядоченных массивах
- •Алгоритмы поиска в упорядоченных массивах
- •Анализ алгоритма блочного поиска
- •Сортировка Шелла
- •Пирамидальная сортировка
- •Анализ пирамидальной сортировки
- •Улучшенная сортировка обменом 1
- •Анализ улучшенной сортировки обменом 1
- •Улучшенная сортировка обменом 2
- •Анализ улучшенной сортировки обменом 2
- •Анализ улучшенной сортировки обменом 2 аналогичен анали-зу улучшенной сортировки обменом 1. Порядок функций ВС этих алгоритмов в лучшем и худшем случаях одинаковый.
- •Алгоритм быстрой обменной сортировки
- •7 Структуры данных типа граф. Представление графов в памяти. Алгоритмы прохождения в «глубину» и в «ширину». Топологическая сортировка. Матрица достижимости.
- •Технология разработки программного обеспечения
- •1 Технология разработки программного обеспечения. Основные этапы на примере классического жизненного цикла.
- •2 Описание технического задания по ГОСТ.
- •3 Паттерны проектирования. Формат описания.
- •Описание паттернов.
- •Результаты применения паттернов:
- •4 Кодирование. Стандарты на кодирование. Кодирование и проектирование. Исходный код как главный проектный документ.
- •5 Рефакторинг. Цели, описание, примеры.
- •6 Системы управления версиями. Использование в проектах.
- •7 Тестирование. Виды тестирования. Разработка через тестирование.
- •Человеко-машинное взаимодействие
- •2 Применение метафор, идиом, аффордансов и стандартов в пользовательском интерфейсе. Основные принципы. Примеры.
- •4 Основные элементы пользовательского интерфейса и удобство их использования. Особенности. Рекомендации.
- •Теория языков программирования
- •3 Регулярные языки и конечные распознаватели. Использование конечных распознавателей в трансляторах.
- •4 Лексические анализаторы. Основные функции, проектирование и методы программной реализации.
- •5 Нисходящий анализ методом рекурсивного спуска.
- •6 Транслирующие грамматики. Построение нисходящих МП-трансляторов.
- •7 Грамматики польского перевода. Построение восходящих МП-трансляторов.
- •Теория вычислительных процессов
- •1 Автоматы Мили и Мура. Трансформация автоматов. Эквивалентность и минимизация.
- •2 Функциональная эквивалентность, логико-термальная эквивалентность и изоморфизм стандартных схем программ.
- •3 Стандартные и рекурсивные схемы программ. Алгоритмы трансляции.
- •4 Анализ сетей Петри с использованием дерева достижимости и матричных уравнений.
- •Объектно-ориентированное программирование
- •5 Общая характеристика классов в объектно-ориентированном программировании. Особенности реализации классов в различных объектно-ориентированных языках программирования.
- •Сети ЭВМ и телекоммуникации
- •1 Каналы передачи данных. Физический канал. Логический канал. Понятие блока данных. Пример формата блока данных любого протокола.
- •2 Структуризация сетей. Понятие и характеристики основных сетевых топологий. Структурообразующие аппаратные средства и программное обеспечение.
- •4 Характеристика протоколов IP, TCP, ARP, ICMP, POP3, SMTP.
первого слоя. В задачу же второго слоя входит выделение этого класса путем обнуления выходов всех нейронов, соответствующих другим классам. В результате после успешного завершения работы сети на одном из выходов будет ненулевое значение; номер этого выхода соответствует номеру эталонного изображения, к которому было отнесено тестовое изображение.
4. Обучаемые нейронные сети с конкурирующими нейронами: архитектура, алгоритмы обучения, применение.
Сеть Кохонена
Если для классификации применять нейронные сети, необходимо формализовать задачу. Самый очевидный способ: выберем в качестве входных данных вектор параметров единственного объекта. Результатом работы сети будет код класса, к которому принадлежит предъявленный на входе объект. В нейросетях принято кодирование номером канала. Поэтому сеть будет иметь M выходов, по числу классов, и чем большее значение принимает выход номер m0, тем больше "уверенность" сети в том, что входной объект принадлежит к классу m0. Полезно применить функцию активации SOFTMAX, тогда сумма выходов всегда будет равна единице. Каждый выход можно будет трактовать как вероятность того, что объект принадлежит данному классу. Все выходы образуют полную группу, т.к. сумма выходов равна единице, и объект заведомо относится к одному из классов.
Выберем евклидову меру близости (). В этом случае ядро класса, минимизирующее сумму мер близости для объектов этого класса, совпадает с центром тяжести объектов:
Сумма очень напоминает взвешенную сумму ,
рассчитываемую формальным нейроном. Выберем в качестве входных сигналов и компоненты ядер в качестве весовых коэффициентов . Тогда каждый формальный
нейрон с числом входов, равным числу компонент во входном векторе, будет давать на выходе одну из сумм .
Чтобы определить класс, к которому относится объект, нужно выбрать среди всех нейронов данного слоя один с максимальным выходом - это осуществляет интерпретатор. Интерпретатор - или программа, выбирающая нейрон с максимальным выходом, или слой нейронов с латеральным торможением (например, сеть MAXNET, - второй слой сети Хемминга), состоящий из нейронов с обратными связями.
Рассмотренная сеть нейронов, использующая евклидову меру близости для классификации объектов, называется сетью Кохонена.
Обучение слоя Кохонена
Задача обучения - научить сеть активировать один и тот же нейрон для похожих векторов на входе. Не важно, какой конкретно нейрон будет активирован.
Обычно начальные значения в нейронных сетях выбираются малыми случайными числами. Для слоя Кохонена такой выбор возможен, но имеет недостатки. Разумеется, если ядра классов нормированы, то и начальные значения нужно нормировать.
Если веса инициализируются случайными значениями с равномерным распределением, то возникает проблема. Когда ядра распределяются равномерно, то в
областях пространства X, где мало входных векторов, ядра будут использоваться редко, т.к. мало будет похожих векторов. В тех областях, где входных векторов много, плотность ядер окажется недостаточной, и непохожие объекты будут активировать один и тот же нейрон, т.к. более похожего ядра не найдется. Для устранения проблемы можно выделять ядра в соответствии с плотностью входных векторов. Но распределение входных векторов часто бывает заранее неизвестно. В этом случае помогает метод выпуклой комбинации, рассмотренный ниже.
Если число входных векторов равно числу ядер (т.е. нейронов), то обучение не нужно. Достаточно присвоить ядрам значения входных векторов, и каждый вектор будет активировать свой нейрон Кохонена. Но чаще всего количество классов меньше числа входных векторов. В этом случае веса сети настраиваются итеративным алгоритмом.
Алгоритм аналогичен исходному алгоритму классификации, но коррекции весов проводятся после предъявления каждого входного вектора, а не после предъявления всех, как требует исходный алгоритм. Сходимость при этом сохраняется.
1.Присваиваем начальные значения весовым коэффициентам.
2.Подаем на вход один из векторов .
3.Рассчитываем выход слоя Кохонена, , и определяем номер выигравшего нейрона
, выход которого максимален, .
4. Корректируем веса только выигравшего нейрона m0:
- коррекция записана в виде векторного выражения (вектор весов нейрона m0 имеет столько компонент, сколько их у входного вектора ). a - скорость обучения, малая положительная величина. Часто используют расписание с обучением, когда a = a(t) монотонно убывает.
Веса корректируются так, что вектор весов приближается к текущему входному вектору. Скорость обучения управляет быстротой приближения ядра класса (вектора весов) ко входному вектору
Алгоритм выполняется до тех пор, пока веса не перестанут меняться.
Метод выпуклой комбинации
Этот метод полезен при обучении, чтобы правильно распределить плотность ядер классов (векторов весов) в соответствии с плотностью входных векторов в пространстве X.
1.Присваиваем всем весам одно и то же начальное значение: , n – размерность X. Вектора весов получают длину, равную единице, как требует нормировка. Все вектора весов одинаковы.
2.Задаем обучающее множество и проводим обучение, но не с векторами , а с
векторами |
, где t - |
время обучения, |
- монотонно возрастающая |
||
функция, меняющаяся от 0 до 1 по мере обучения. |
|
|
|
||
В начале |
обучения |
и все обучающие |
вектора |
одинаковы и |
равны |
начальному значению весов. По мере обучения |
растет и |
обучающие |
вектора |
||
расходятся из точки с координатами |
и приближаются к своим конечным значениям |
которые достигаются при . Каждый вектор весов "захватывает" группу или один обучающий вектор и отслеживает его по мере роста b.
Метод выпуклой комбинации дает правильное распределение плотности ядер. При этом в сети не остается "ненужных" необученных нейронов, которые бывают при обычном обучении. Когда вектор весов нейрона находится далеко от всех обучающих векторов, этот нейрон никогда не будет "выигрывать", и его веса не будут корректироваться при обучении. Выпуклая комбинация не оставляет в сети таких нейронов.