__Нейронные сети _ 3.ppt
- Количество слайдов: 79
СПб. ГУТ им. проф. М. А. Бонч-Бруевича Нейронные сети К. т. н. , доцент кафедры ИУС Феликс Васильевич Филиппов 9000096@mail. ru
Литература
Искусственный интеллект В ХХ веке было сформулировано понятие искусственного интеллекта и предложен ряд определений этого понятия. Одним из первых определений, получивших широкое признание и до сих пор остающимся популярным, является следующее: "Способ заставить компьютеры думать как люди". Истоком этого определения явился знаменитый тест, предложенный британским математиком и одним из первых исследователей в области компьютерных наук Аланом Тьюрингом. В данном тесте экспериментатор пытается определить, является ли человеком или компьютерной программой то "лицо", с которым он обменивается сообщениями с помощью дистанционной клавиатуры.
Искусственный интеллект Области искусственного интеллекта Искусственный интеллект Искусственные нейронные сети
Нейронные сети Простая задача распознавания MNIST - Mixed National Institute of Standards and Technology http: //yann. lecun. com/exdb/mnist/ 1998 год База данных MNIST включает 60, 000 тренировочных рукописных изображений цифр и 10, 000 проверочных изображений. 2010 год 0, 27% ошибки CNN https: //en. wikipedia. org/wiki/MNIST_database
MNIST в Rstudio Нейронные сети 1 -й способ
MNIST в Rstudio Нейронные сети 2 -й способ install. packages("darch") library("darch", lib. loc="/Library/Frameworks/R. framework/Versions/3. 1/Resources/libr ary") read. MNIST("/Users/felixfilippov/Desktop/mnist_fold/") [1] "Loading the MNIST data set. " [1] "Loading train set with 60000 images. " [1] "Generating randomized data set and label matrix" [1] "class 0 = 5923 images" [1] "class 1 = 6742 images" [1] "class 2 = 5958 images" [1] "class 3 = 6131 images" [1] "class 4 = 5842 images" [1] "class 5 = 5421 images" [1] "class 6 = 5918 images" [1] "class 7 = 6265 images" [1] "class 8 = 5851 images" [1] "class 9 = 5949 images" [1] "Saving the test data (filename=train)" [1] "Loading test set with 10000 images. " [1] "Generating randomized data set and label matrix" [1] "class 0 = 980 images" [1] "class 1 = 1135 images" [1] "class 2 = 1032 images" [1] "class 3 = 1010 images" [1] "class 4 = 982 images" [1] "class 5 = 892 images" [1] "class 6 = 958 images" [1] "class 7 = 1028 images" [1] "class 8 = 974 images" [1] "class 9 = 1009 images" [1] "Saving the test data (filename=test)" [1] "Finished"
Нейронные сети Простая задача распознавания В конечном итоге: распознавание с 99, 67% точностью. Только 33 тестовых изображения из 10000 классифицируется с ошибкой. Здесь показаны ошибки: значение в верхнем правом углу есть правильная классификация, по данным MNIST, в то время как значение в правом нижнем углу – ошибочная классификация.
Нейронные сети Персепртрон Розенблатта x 1 x 2 x 1 w 2 w 3 y x 3 y = x 2 w 1 w 2 w 3 b x 3 0 если Σxiwi ≤ порог 1 если Σxiwi > порог y = . 0 если X W + b ≤ 0. 1 если X W + b > 0 x 1 -2 x 2 -2 3 http: //neuralnetworksanddeeplearning. com/movies/create_step_function. mp 4 y 00 0 x(-2) + 3 = 3 > 0 y = 1 01 0 x(-2) + 1 x(-2) + 3 = 1 > 0 y = 1 10 1 x(-2) + 0 x(-2) + 3 = 1 > 0 y = 1 11 1 x(-2) + 3 = -1 < 0 y = 0 y
Мозг Нейронные сети Мозг человека состоит приблизительно из 86 миллиардов нейронов, соединенных многочисленными связями (в среднем несколько тысяч связей на один нейрон, однако это число может сильно колебаться). http: //habrahabr. ru/post/214109/ http: //habrahabr. ru/post/108483/
Нейроны: • не делятся • много входов (до 10000) • один выход Слабая и сильная синаптическая связь
Нейрон Схема искусственного нейрона синапсы аксон тело Функция активации линейная пороговая сигмоидная с=2
Нейрон Состояние нейрона Каждый синапс характеризуется величиной синаптической связи – её также называют весом Wi. По физическому смыслу, вес синаптической связи – это электрическая проводимость данного синапса. float s = 0; for(int i = 0; i < n; i++) { s += x[i]*w[i]; }
Нейрон Функция активации нейрона Значение на выходе нейрона – это функция от его состояния – функция активации: Y = f(s) Чаще всего, используется логистическая функция или функция S-образного вида (сигмоид): f(s) = 1/(1 + e-as) Одна из причин, по которой сигмоид используется в нейронных сетях, это простое выражение его производной через саму функцию (которое позволило существенно сократить вычислительную сложность метода обратного распространения ошибки, сделав его применимым на практике): f '(s) = f(s)x(1 – f(s))
Нейрон – линейный классификатор Нейрон AND OR Искусственный нейрон – является однослойным персептроном (перцептроном), т. е. моделью, в которой входные элементы напрямую соединены с выходными с помощью системы весов, и выполняет функцию линейной классификации. TRUE FALSE XOR Классический пример задачи, которая не по зубам однослойному перцептрону — исключающее ИЛИ (XOR или сумма по mod 2)
Скрытые слои (hidden layers) hidden layer 1 hidden layer 2 Выходной слой Входной (сенсорный) слой Персептрон Многослойный персептрон
Многослойный персептрон Персептрон hidden = 4 Для решения задачи XOR, многослойный персептрон будет иметь два входа, затем скрытый (hidden) слой, и один выход:
Многослойный персептрон Персептрон hidden = 20
Многослойный персептрон Персептрон hidden = 3, 2, 1
Многослойный персептрон Персептрон hidden = 2 Функция XOR, AND и OR
Работа нейронной сети Три фазы работы нейронной сети при обучении: 1 фаза) прямое распространение сигнала 2 фаза) обратное распространение ошибки 3 фаза) коррекция весовых коэффициентов
Работа нейронной сети 1 фаза) прямое распространение сигнала 1 слой 2 слой Выходной слой http: //robocraft. ru/blog/algorithm/560. html
Работа нейронной сети 2 фаза) обратное распространение ошибки Выходной слой 1 слой 2 слой http: //robocraft. ru/blog/algorithm/560. html
Работа нейронной сети 3 фаза) коррекция весовых коэффициентов 1 -го слоя 2 -го слоя Выходного слоя f '(s) = f(s)x(1 – f(s))
Факторный анализ https: //ru. wikipedia. org/wiki/Факторный_анализ Две основных цели факторного анализа: • определение взаимосвязей между переменными, классификация переменных; • сокращение числа переменных необходимых для описания данных. Методы факторного анализа: • метод главных компонент; • корреляционный анализ; • метод максимального правдоподобия.
Факторный анализ Метод главных компонент https: //ru. wikipedia. org/wiki/Метод_главных_компонент Метод главных компонент (principal component analysis, PCA) — один из основных способов уменьшить размерность данных, потеряв наименьшее количество информации. Карл Пирсон - 1901 год Даны точки Pi на плоскости, рi – расстояние от точки Pi до прямой АВ. Отыскать прямую АВ, чтобы: min http: //www. ievbras. ru/ecostat/Kiril/Library/Book 1/Content 375. htm
Факторный анализ Метод главных компонент Дано конечное множество векторов x 1, x 2, …, xm Rn. Для каждого k = 0, 1, … , n-1 ∈ среди всех k-мерных линейных многообразий в Rn, найти такое Lk Rn , что сумма ⊂ квадратов уклонений xi от Lk минимальна. Фактор L 0 Усреднение значений дает математическое ожидание случайной величины X, обозначаемое, как E(X). Если мы отцентрируем данные так, чтобы E(X)=0, то облако точек будет сконцентрировано вокруг начала координат. Главная компонента определяется единичным вектором, выходящим из начала координат и совпадающим с направлением, вдоль которого дисперсия данных будет максимальной.
Факторный анализ Анализ пиксельных компонент 1. Строим матричный образ каждой цифры. 2. Находим матрицу среднего арифмети- ческого для всех образов. 1, 2 1, 3 1, 6 3, 4 5, 2 5, 6 http: //habrahabr. ru/post/224495/ Кандидаты на главные компоненты
Факторный анализ Поиск главных компонент
Факторный анализ Главные компоненты Факторы
Факторный анализ изображений Если соотнести результат факторного анализа и образцы обучающей выборки, то можно заметить следующее: — фактор 1 — признаки данной области относятся к фону изображения (покров); и — факторы 2 и 3 — области перехода от наблюдаемого объекта к фону; — фактор 4 — критерии данной области относятся непосредственно к наблюдаемому объекту; — фактор 5 — возможные артефакты изображения. Некоторые входные образы содержали полосу снизу. http: //habrahabr. ru/post/139899/
Практика Практическое задание № 1 Построить и обучить нейронную сеть, которая должна распознавать символы цифр на матрице из 7 x 5 ячеек. X 1 = (0010001100001000010001110) Среда разработки RStudio. Пакет neuralnet. Пособие «Моделирование нейронных сетей на R» Цель: добиться надежного распознавания искаженных цифр.
Нейронные сети vs ЭВМ
Нейронные сети Классификация нейронных сетей Нейронные сети прямого действия Персептроны Сверточные сети Рекуррентные нейронные сети (с обратными связями) Сети RBF Сети Кохонена Соревновательные сети Сети Хопфильда ART сети
Моделирование нейронных сетей Нейронные сети на R (в RStudio) Пакет NEURALNET Пакет NNET Пакет RSNNS art 1() art 2() artmap() som() MLP() rbf() dlvr() jordan() elman() Пакет Neural. Net. Tools Package ‘darch’ This package is for generating neural networks with many layers (deep architectures) and train them. Package ‘deepnet’ Implement some deep learning architectures and neural network algorithms, including BP, RBM, DBN, Deep autoencoder and so on. Package ‘h 2 o’ R scripting functionality for H 2 O, the open source math engine for big data that computes parallel distributed machine learning algorithms such as generalized linear models, gradient boosting machines, random forests, and neural networks (deep learning) within various cluster environments.
Нейронные сети Пакет NEURALNET AND <- c(rep(0, 7), 1) OR <- c(0, rep(1, 7)) binary. data <- data. frame(expand. grid(c(0, 1), c(0, 1)), AND, OR) net <- neuralnet(AND+OR~Var 1+Var 2+Var 3, binary. data, hidden=0, linear. output=FALSE) Var 1 Var 2 Var 3 AND OR 1 0 0 0 0 0 2 1 0 0 0 1 3 0 1 0 0 1 4 1 1 0 0 1 5 0 0 1 0 1 6 1 0 1 0 1 7 0 1 1 0 1 8 1 1 1 1 1
Нейронные сети Пакет NEURALNET XOR <- c(0, 1, 1, 0) xor. data <- data. frame(expand. grid(c(0, 1), c(0, 1)), XOR) net. xor <- neuralnet( XOR~Var 1+Var 2, xor. data, hidden=2, rep=5) plot(net. xor, col. hidden = "red", col. intercept = "green", col. entry="dark green", col. entry. synapse = "blue", col. out. synapse="red", col. out="yellow", fontsize=16)
Нейронные сети Пакет NNET ir <- rbind(iris 3[, , 1], iris 3[, , 2], iris 3[, , 3]) targets <- class. ind( c(rep("s", 50), rep("c", 50), rep("v", 50)) ) samp <- c(sample(1: 50, 25), sample(51: 100, 25), sample(101: 150, 25)) ir 1 <- nnet(ir[samp, ], targets[samp, ], size = 2, rang = 0. 1, decay = 5 e-4, maxit = 200) plot. nnet(ir 1)
Нейронные сети Пакет Neural. Net. Tools Пакет предоставляет средства визуализации и анализа, чтобы помочь в интерпретации нейросетевых моделей. Функции пакета позволяют строить графики, давать количественную оценку важности входных переменных, проводит анализ чувствительности, а также получать простой список весов модели. Функция garson() дает количественную оценку относительной важности входных переменных нейросети используя алгоритм Гарсона. wts_in <- c(13. 12, 1. 49, 0. 16, -0. 11, -0. 19, -0. 16, 0. 56, -0. 52, 0. 81) struct <- c(2, 2, 1) #two inputs, two hidden, one output garson(wts_in, struct)
CNN Сверточная нейронная сеть Свёрточная нейронная сеть (convolutional neural network, CNN) — специальная архитектура искусственных нейронных сетей, предложенная Яном Лекуном и нацеленная на эффективное распознавание изображений, входит в состав технологий глубокого обучения (deep leaning). CNN технология построена по аналогии с принципами работы зрительной коры головного мозга, в которой были открыты так называемые простые клетки, реагирующие на прямые линии под разными углами, и сложные клетки, реакция которых связана с активацией определённого набора простых клеток. Идея CNN заключается в чередовании сверточных слоев (convolution layers) и слоев подвыборки (subsampling layers).
Сверточная нейронная сеть CNN В основу CNN положено 2 основные идеи: 1) идея: фильтрация (операция свертки) 2) идея: уплотнение (max-pooling)
Сверточная нейронная сеть 1) идея: фильтрация CNN Фильтр – это небольшая матрица, представляющая признак, который мы хотим найти на исходном изображении. Операция свертки Исходное изображение Фильтры определители признаков http: //www. kdnuggets. com/2015/04/inside-deep-learning-computer-vision-convolutional-neural-networks. html Карты признаков
Сверточная нейронная сеть CNN фильтрация Вместо входов при изучении сверточных сетей удобно рассматривать матрицу входных нейронов, значения которых соответствуют интенсивности пикселов, используемых как входы: Каждый нейрон локального рецептивного региона связывается с одним нейроном скрытого слоя. Набор весовых коэффициентов образует фильтр. Входные нейроны Скрытые нейроны Локальные рецептивные поля
Сверточная нейронная сеть сверточный слой (convolution layer) CNN Карта признаков Фильтр x 1 x 0 x 1 Исходное изображение (или карта признаков) Сверточные признаки (convolved features) На схеме слой нейронов сети представляет исходное изображение (либо карту признаков). Фильтр представляет матрицу весов соединений, которая «сканирует» весь входной слой. Нейрон на карте признаков активируется, если фильтр определил подходящий признак в соответствующей позиции на предыдущем слое.
Пример фильтрации изображения CNN 1 Фильтр признаков W 1 0 -1 2 0 -2 1 0 -1 -1 0 1 -2 0 2 Отклик фильтра W 1 -1 0 1 карта признаков 0 -1 -2 1 0 -1 2 1 0
Сверточная нейронная сеть формирование карты признаков Входные нейроны CNN Первый скрытый слой Рецептивный регион stride length Сверточный признак длина шага = 1 Входные нейроны Первый скрытый слой Карта признаков Если входное изображение 28 × 28, и локальный рецептивный регион 5 × 5 , тогда в карте признаков скрытого слоя будет 24 × 24 нейрона при длине шага равной 1. Фильтр не сканирует! Фильтр – это связи с весами рецептивного региона анализируемого слоя с нейроном сверточного признака скрытого слоя. Каждый элемент (признак) карты признаков сформирован своим единым для карты фильтром.
Сверточная нейронная сеть формирование карт признаков CNN Для распознавания изображений нужно много карт признаков: 28 х 28 входных нейронов Первый скрытый слой: 3 х 24 нейронов Здесь показаны 3 карты признаков. Каждая карта получена с помощью фильтра 5 х5. Такая сеть может распознать 3 различных признака. Каждый из них распознается по всему изображению.
Сверточная нейронная сеть CNN пример карты признаков Большое преимущество использования фиксированного набора весовых коэффициентов – существенное снижение числа параметров CNN. Например, для каждой карты признаков имеем: 5 х 5 = 25 20 х 25 = 500 параметров сверточного слоя. Сравним, полносвязный входной слой: 28 х 28 = 784 20 х 784 = 15680 число параметров больше чем в 30 раз. Здесь 20 изображений соответствуют 20 различным картам признаков (фильтрам, ядрам). Каждая карта представлена как блок 5 х5 изображений, соответствующих 5 х5 весовым коэффициентам локального рецептивного поля. Белые блоки означают малые (обычно отрицательные) веса, где карта признаков меньше соответствует входным пикселам. Темные блоки означают большие веса, где карта признаков больше соответствует входным пикселам. Очень грубо говоря, изображения выше, показывают, тип особенностей за которые отвечает сверточный слой.
Сверточная нейронная сеть CNN 2) идея: уплотнение (subsampling layer) Max-уплотнение (max pooling) карты признаков делает процесс распознавания более точным, избавляя от ненужных «ореолов» и сокращая число параметров сверточной нейронной сети
Сверточная нейронная сеть CNN метод max pooling Объединяющие слои следуют сразу после сверточных. Объединяющий слой обрабатывает карту признаков сверточного слоя и формирует более уплотненную карту. Например, каждый нейрон уплотняющего слоя суммирует регион из 2× 2 нейронов предыдущего слоя. Общая процедура объединения, известная как max-pooling, просто берет значение максимально активизированного нейрона из определенного региона, например 2× 2. Max pool с фильтром 2 х2 и шагом 2 Поскольку сверточный слой включает 24× 24 нейрона, после операции max-pooling получится 12× 12 нейронов объединяющего слоя.
Сверточная нейронная сеть CNN метод max pooling и L 2 pooling Сверточный слой включает несколько карт признаков. Метод maxpooling применяется отдельно для каждой карты. Так, если имеется три карты признаков, то комбинация сверточного и max-pooling слоев будет выглядеть следующим образом: В методе L 2 pooling вместо используется квадратный корень из суммы квадратов активностей нейронов 2× 2 региона. На практике широко используются оба метода. L 2 pool с фильтром 2 х2 и шагом 2 7. 9 11. 5 4. 2 5. 1
Простейшая CNN фильтрация + уплотнение + распознавание Фильтрация Уплотнение операция свертки max pooling, L 2 pooling MNIST 0 1 Исходное изображение входные нейроны 2 3 4 5 6 Карта признаков 7 Карта признаков 8 9 convolution layer subsampling layer выходные нейроны
CNN Архитектура типовой cверточной нейронной сети Ключевым моментом в понимании сверточных нейронных сетей является понятие так называемых «разделяемых» весов, т. е. часть нейронов некоторого рассматриваемого слоя нейронной сети может использовать одни и те же весовые коэффициенты. Нейроны, использующие одни и те же веса, объединяются в карты признаков (feature maps), а каждый нейрон карты признаков связан с частью нейронов предыдущего слоя. При вычислении сети получается, что каждый нейрон выполняет свертку (операцию конволюции) некоторой области предыдущего слоя (определяемой множеством нейронов, связанных с данным нейроном). Слои нейронной сети, построенные описанным образом, называются сверточными слоями. Помимо, сверточных слоев в CNN могут быть слои подвыборки (выполняющие функции уменьшения размерности пространства карт признаков) и полносвязные слои (выходной слой, как правило, всегда полносвязный). Все три вида слоев могут чередоваться в произвольном порядке, что позволяет составлять карты признаков из карт признаков, а это на практике означает способность распознавания сложных иерархий признаков.
CNN Примеры карт признаков
Практика CNN ILSVRC Image. Net данные 2011 года использовали 16 миллионов полноцветных изображений в 20000 категориях. Изображения были взяты из открытой сети и классифицированы работниками службы Amazon. Вот несколько Image. Net изображений: ILSVRC - Image. Net Large Scale Visual Recognition Challenge § задача распознавания (классификации) § задача обнаружения http: //www. image-net. org/challenges/LSVRC/ - 2010, 2011, 2012, 2013, 2014, 2015
Практика CNN ILSVRC задача классификации http: //cs. stanford. edu/people/karpathy/ilsvrc/
Практика CNN ILSVRC задача обнаружения http: //habrahabr. ru/company/nordavind/blog/206342/
Практика CNN ILSVRC задача обнаружения
Практика CNN ILSVRC задача обнаружения
Практика CNN ILSVRC задача обнаружения
Практика CNN ILSVRC задача обнаружения
Практика CNN ILSVRC задача обнаружения - лопаточка
Практика CNN ILSVRC задача обнаружения - ковш, черпак
Практика CNN Классификация картин при помощи CNN Коллекция Wikiart содержит более 80000 картин http: //arxiv. org/pdf/1505. 00855 v 1. pdf Ученые из Ратгерского университета (США, штат Нью-Джерси) научили нейронную сеть классифицировать произведения мирового искусства по жанрам, стилям и художникам.
Практика CNN Коллекция Wikiart
Практика CNN Классификация картин при помощи нейронных сетей Стили Жанры Художники http: //datareview. info/article/obzor-nauchnoy-publikatsii-klassifikatsiya-kartin-pri-pomoshhi-neyronnyih-setey/
Нейронные сети Классификация картин при помощи нейронных сетей
Нейронные сети Классификация картин при помощи нейронных сетей
Направления исследований Искусственный интеллект в области искусственного интеллекта Компания IBM создала модель из 530 миллиардов нейронов и 100 триллионов синапсов на суперкомпьютере "Вычисления (нейроны), память (синапсы) и сообщения (аксоны, дендриты), математически абстрагированы от биологических подробностей, для достижения максимизации функциональности (практичность, применяемость) и минимизации расходов (энергия, пространство, простой)" "Это стало воплощением нашего видения проекта DARPA Sy. NAPSE, соединившим в себе нанотехнологии, нейробиологию и суперкомпьютеры для создания основы новой когнитивной компьютерной архитектуры, которая дополнит существующие сегодня фон-Неймановские машины" http: //globalscience. ru/article/read/21348
Искусственный интеллект Нейрочипы http: //citforum. ru/hardware/neurocomp/neyrocomp_04. shtml http: //2013. nscf. ru/Tesis. All/Plenar/13_1520_Galyshkin. AI_P 13. pdf
Оценка производительности § CUPS (connections update per second) - число измененных значений весов в секунду (оценивает скорость обучения). § CPS (connections per second) - число соединений (умножений с накоплением) в секунду (оценивает производительность). § CPSPW = CPS/Nw, где Nw - число синапсов в нейроне. § CPPS - число соединений примитовов в секунду, CPPS=CPS*Bw*Bs, где Bw, Bs - разрядность весов и синапсов. § MMAC - миллионов умножений с накоплением в секунду.
True. North процессор нового поколения https: //habrahabr. ru/company/ibm/blog/232645/
True. North процессор нового поколения
Нейросемантическое ядро Compass — система симуляции новой компьютерной архитектуры True. North построен по образу и подобию мозга, на базе разработанных IBM "нейросемантических ядер" — чипов, содержащих кремниевые нейроны и синапсы. Каждый чип содержит 256 нейронов, 1024 аксона и 256 х1024 синапса. В рекордной симуляции была смоделирована работа 2084 миллиардов таких ядер. http: //habrahabr. ru/company/ibm/blog/159365/
Синаптическая сеть от DARPA Искусственный интеллект на нейрочипах Решающий модуль Модуль категоризации формы Модуль обнаружения движения возбуждение торможение возбуждающее тормозящее неуправляемое взвешенное Сетчатка http: //www. computerra. ru/98834/neyrochipyi-ot-qualcomm-ispyityivayutsya-na-robotah/
Нейронные сети Найди лицо! Вот Оно !
Нейронные сети Классификация картин при помощи нейронных сетей
Нейронные сети Классификация картин при помощи нейронных сетей
СПАСИБО ЗА ВНИМАНИЕ!
__Нейронные сети _ 3.ppt