http://neerc.ifmo.ru/wiki/api.php?action=feedcontributions&user=80.76.244.114&feedformat=atomВикиконспекты - Вклад участника [ru]2024-03-29T01:08:53ZВклад участникаMediaWiki 1.30.0http://neerc.ifmo.ru/wiki/index.php?title=%D0%98%D0%B7%D0%B2%D0%B5%D1%81%D1%82%D0%BD%D1%8B%D0%B5_%D0%BD%D0%B0%D0%B1%D0%BE%D1%80%D1%8B_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85&diff=72518Известные наборы данных2020-01-29T13:30:51Z<p>80.76.244.114: Добавил Fashion-MNIST</p>
<hr />
<div>==Обзор==<br />
<br />
Для многих алгоритмов машинного обучения требуется большое количество данных. Кроме того, что моделям нужны данные для обучения, нужно сравнивать эффективность разных моделей. Поскольку поиск хороших наборов данных и их разметка {{---}} трудная задача, на помощь приходят уже собранные и размеченные наборы данных, для которых зачастую уже опубликованы результаты каких-то алгоритмов, и можно оценить, насколько хорошо работает исследуемая модель. <br />
<br />
В этой статье рассмотрены с примерами несколько популярных наборов данных. Другие классические наборы можно посмотреть, например, на википедии<ref>https://en.wikipedia.org/wiki/List_of_datasets_for_machine-learning_research[https://en.wikipedia.org/wiki/List_of_datasets_for_machine-learning_research]</ref>.<br />
<br />
<br />
{| class="wikitable"<br />
|-<br />
! Набор данных<br />
! Какие объекты<br />
! Число объектов<br />
! Число классов<br />
! Доля ошибок лучшего публикованного алгоритма<br />
|-<br />
| Iris<br />
| Данные измерений четырех параметров цветков ириса<br />
| 150<br />
| 3<br />
| N/A, малый размер датасета<br />
|-<br />
| MNIST<br />
| Рукописные цифры, черно-белые изображения 32х32 пикселя<br />
| 70 000<br />
| 10<br />
| 0.18% <ref>https://arxiv.org/pdf/1805.01890.pdf[https://arxiv.org/pdf/1805.01890.pdf]</ref><br />
|-<br />
| CIFAR-10<br />
| Фотографии объектов разных классов, цветные изображения 32х32 пикселя<br />
| 60 000<br />
| 10<br />
| 1.23% <ref>https://arxiv.org/pdf/1805.09501.pdf[https://arxiv.org/pdf/1805.09501.pdf]</ref><br />
|-<br />
| ImageNet<br />
| Фотографии с указанием классов объектов на изображении и их позиций<br />
| Больше 14 миллионов<br />
| Больше 21 тысячи<br />
| Большое количество различных метрик, см. ImageNet Competition. 1-5% на классификацию<br />
|-<br />
| Coco<br />
| Фотографии сложных повседневных сцен, содержащих объекты в их естественном окружении.<br />
| 328 000 изображений (более 2.5 миллионов вхождений объектов)<br />
| 91<br />
| Много метрик. Зависит, в частности, от площади, занимаемой объектом на изображении. <ref>http://cocodataset.org/#detection-leaderboard[http://cocodataset.org/#detection-leaderboard]</ref><br />
|-<br />
| Fashion-MNIST<br />
| Черно-белые фотографии различных видов одежды, 28x28 пикселей.<br />
| 60000 изображений + 10000 тестовых изображений<br />
| 10<br />
| 3.3% (WRN40-4 8.9M params) <ref>https://github.com/zalandoresearch/fashion-mnist[https://github.com/zalandoresearch/fashion-mnist]</ref><br />
|-<br />
|}<br />
<br />
==Iris==<br />
<br />
===Описание===<br />
<br />
Iris {{---}} небольшой набор данных для задачи классификации, опубликованный еще в 1936 году Робертом Фишером, используя данные биолога Эдгара Андерсона. В этом наборе данных представлены по 50 описаний цветков одного из трех типов {{---}} Ирис щетинистый (Iris setosa), Ирис виргинский (Iris virginica) и Ирис разноцветный (Iris versicolor). <br />
<br />
Для каждого цветка измерены четыре величины {{---}} длина чашелистника (англ. sepal length), ширина чашелистника (sepal width), длина лепестка (англ. petal length), ширина лепестка (англ. petal width). Все цветки промаркированы одним из трех типов, что позволяет тестировать на нем алгоритмы классификации. Интересное наблюдение {{---}} один из классов цветков линейно отделим от двух других.<br />
<br />
===Пример===<br />
<br />
{| class="wikitable"<br />
|-<br />
! Длина чашелистника<br />
! Ширина чашелистника<br />
! Длина лепестка<br />
! Ширина лепестка<br />
! Класс<br />
|-<br />
| 5.1<br />
| 3.5<br />
| 1.4<br />
| 0.2<br />
| setosa<br />
|-<br />
| 7.0<br />
| 3.2<br />
| 4.7<br />
| 1.4<br />
| versicolor<br />
|-<br />
| 6.3<br />
| 3.3<br />
| 6.0<br />
| 2.5<br />
| virginica<br />
|-<br />
|}<br />
<br />
===Код===<br />
from sklearn.datasets import load_iris<br />
from sklearn.ensemble import RandomForestClassifier<br />
<br />
iris=load_iris()<br />
X = iris.data<br />
Y = iris.target<br />
X, Y = shuffle(X, Y)<br />
n = len(iris.data)<br />
train = n // 2<br />
clf = RandomForestClassifier(n_estimators=100, max_depth=2, random_state=0)<br />
clf.fit(X[:train], Y[:train])<br />
expected = Y[train:]<br />
predicted = clf.predict(X[train:])<br />
print("Classification report for classifier %s:\n%s\n"<br />
% (clf, metrics.classification_report(expected, predicted)))<br />
<br />
type precision recall f1-score support<br />
0 1.00 1.00 1.00 28<br />
1 0.95 0.88 0.91 24<br />
2 0.88 0.96 0.92 23<br />
avg / total 0.95 0.95 0.95 75<br />
<br />
<br />
==MNIST==<br />
===Описание===<br />
<br />
[[Файл:MnistExamples.png|мини|[https://en.wikipedia.org/wiki/MNIST_database#/media/File:MnistExamples.png Оригинал]]]<br />
<br />
Датасет MNIST {{---}} большой (порядка 60 000 тренировочных и 10 000 проверочных объектов помеченных на принадлежность одному из десяти классов {{---}} какая цифра изображена на картинке) набор картинок с рукописными цифрами, часто используемый для тестирования различных алгоритмов распознавания образов. Он содержит черно-белые картинки размера 28x28 пикселей, исходно взятые из набора образцов из бюро переписи населения США, к которым были добавлены тестовые образцы, написанные студентами американских университетов.<br />
<br />
===Результаты===<br />
<br />
На сайте<ref>http://yann.lecun.com/exdb/mnist/[http://yann.lecun.com/exdb/mnist/]</ref> датасета можно найти список лучших результатов, достигнутых алгоритмами на это наборе данных. Так, худший из записанных результатов достигнут простым линейным классификатором (12% ошибок), а подавляющее большинство лучших результатов получены алгоритмами на основе нейронных сетей. Так, ансамбль из 35 сверточных нейронных сетей в 2012 году сумел получить всего 0.23% ошибок на датасете, что является очень хорошим результатом, вполне сравнимым с человеком.<br />
<br />
===Код===<br />
Простой пример, скачивающий набор данных и запускающий на нем один из классификаторов. Даже с уменьшением датасета в сто раз и не самым подходящим классификатором точность выше половины угаданных цифр {{---}} заметно лучше, чем случайная разметка.<br />
<br />
<br />
from sklearn.datasets import fetch_mldata<br />
from numpy import arange<br />
import random<br />
from sklearn.tree import DecisionTreeClassifier<br />
from sklearn import datasets, svm, metrics<br />
<br />
[[Файл:Mnist-predict.png|мини]]<br />
<br />
mnist = fetch_mldata('MNIST original')<br />
indices = arange(len(mnist.data))<br />
randidx = random.sample(list(indices), 500)<br />
mnist.data = mnist.data[randidx]<br />
mnist.target = mnist.target[randidx]<br />
X = mnist.data<br />
Y = mnist.target<br />
train = len(X)//2<br />
clf = DecisionTreeClassifier(criterion="entropy", max_depth=5)<br />
clf.fit(X[:train], Y[:train])<br />
expected = Y[train:]<br />
predicted = clf.predict(X[train:])<br />
print("Classification report for classifier %s:\n%s\n"<br />
% (clf, metrics.classification_report(expected, predicted)))<br />
<br />
digit precision recall f1-score support<br />
0 0.68 0.58 0.62 26<br />
1 0.71 0.87 0.78 23<br />
2 0.29 0.24 0.26 25<br />
3 0.64 0.28 0.39 25<br />
4 0.50 0.54 0.52 28<br />
5 0.46 0.46 0.46 24<br />
6 0.47 0.62 0.54 24<br />
7 0.66 0.78 0.71 27<br />
8 0.32 0.60 0.42 15<br />
9 0.59 0.39 0.47 33<br />
avg/total 0.54 0.53 0.52 250 <br />
<br />
==CIFAR-10==<br />
<br />
===Описание===<br />
[[Файл:Cifar-10.png|мини|[https://medium.com/@jannik.zuern/training-a-cifar-10-classifier-in-the-cloud-using-tensorflow-and-google-colab-f3a5fbdfe24d Источник]]]<br />
CIFAR-10 (Canadian Institute For Advanced Research) {{---}} еще один большой набор изображений, который обычно используется для тестирования алгоритмов машинного обучения. Он содержит 60 000 цветных картинок размером 32х32 пикселя, размеченных в один из десяти классов: самолеты, автомобили, коты, олени, собаки, лягушки, лошади, корабли и грузовики. В датасете по 6000 картинок каждого класса. CIFAR-10 является размеченным подмножеством заметно большего набора данных, состоящего примерно из восьмидесяти миллионов изображений.<br />
<br />
===Результаты===<br />
<br />
С момента публикации CIFAR-10 вышло много статей, авторы которых пытаются добиться максимальной точности на этом датасете. В среднем более хорошии результаты показывают различные сверточные нейронные сети с различными вариантами настройки и дополнительной предобработки данных.<br />
<br />
На википедии<ref>https://en.wikipedia.org/wiki/CIFAR-10#Research_Papers_Claiming_State-of-the-Art_Results_on_CIFAR-10[https://en.wikipedia.org/wiki/CIFAR-10#Research_Papers_Claiming_State-of-the-Art_Results_on_CIFAR-10]</ref> можно найти таблицу лучших публикаций с процентами ошибки на этом датасете. Так, лучший на сегодняшний момент алгоритм, опубликованный в мае 2018 года, допускает ошибку всего порядка 1.48%.<br />
<br />
<br />
===Код===<br />
Простой код, скачивающий CIFAR-10 из интернета и запускающий на нем стандартный классификатор.<br />
<br />
from keras.datasets import cifar10<br />
from sklearn.utils import shuffle <br />
<br />
(x_train, y_train), (x_test, y_test) = cifar10.load_data()<br />
X, Y = shuffle(x_train, y_train)<br />
n = 1000<br />
X, Y = X[:n], Y[:n]<br />
X, Y = X.reshape((n, -1)), Y.reshape((n,))<br />
train = n // 2<br />
clf = DecisionTreeClassifier(criterion="entropy", max_depth=5)<br />
clf.fit(X[:train], Y[:train])<br />
expected = Y[train:]<br />
predicted = clf.predict(X[train:])<br />
print("Classification report for classifier %s:\n%s\n"<br />
% (clf, metrics.classification_report(expected, predicted)))<br />
<br />
<br />
==ImageNet==<br />
<br />
===Описание===<br />
[[Файл:Imagenet.png|мини|[http://www.image-net.org/challenges/LSVRC/2014/ Источник]]]<br />
<br />
База данных Imagenet {{---}} проект по созданию и сопровождению массивной базы данных аннотированных изображений. Аннотация изображений происходит путем краудсорсинга сообществом. Из-за этого достигается большое количество размеченных данных.<br />
<br />
Особенность датасета {{---}} про каждую картинку известно несколько фактов вида "в этом прямоугольнике есть автомобиль", что в совокупности с индексом по типам объектов, которые есть на изображениях, позволяет обучить алгоритм для распознавания объектов какой-то конкретной категории. На август 2017 года в ImageNet 14 197 122 изображения, разбитых на 21 841 категорию.<br />
<br />
===Imagenet Challenge===<br />
<br />
[[Файл:Imagenet-contest.png|мини|[https://en.wikipedia.org/wiki/File:ImageNet_error_rate_history_(just_systems).svg Оригинал]]]<br />
<br />
Вместе с публикацией набора данных стартовал конкурс ImageNet Large Scale Visual Recognition Challenge (ILSVRC<ref>http://www.image-net.org/challenges/LSVRC/[http://www.image-net.org/challenges/LSVRC/]</ref>). В его рамках участникам предлагается достигнуть наибольшей точности при классификации набора изображений. Организаторы использовали около тысячи различных категорий объектов, которые нужно классифицировать. На примере этого конкурса хорошо видно, как в 2010-е годы люди научились заметно лучше распознавать образы на изображениях, уже в 2017 году большинство участвующих команд преодолели порог в 95% правильных ответов. Эта задача, проблема компьютерного зрения, имеет огромное практическое значение во многих прикладных областях.<br />
<br />
<br />
==COCO==<br />
<br />
===Описание===<br />
<br />
[[Файл:Coco-examples.jpg|мини|Пример изображений из MS Coco [http://cocodataset.org/images/coco-examples.jpg Оригинал]]]<br />
<br />
MS COCO (англ. ''Common Objects in Context'') {{---}} большой набор изображений. Состоит из более чем 330000 изображений (220000 {{---}} размеченных), с более чем 1.5 милионов объектов на них. Все объекты находятся в их естественном окружении (контексте). Изображения, как правило, содержат объекты разных классов (только 10% имеют единственный класс). Все изображения сопровождаются аннотациями, хранящихся в json формате. Подробнее о структуре аннотаций можно прочитать [http://cocodataset.org/#format-data здесь].<br />
<br />
COCO имеет пять типов аннотаций для разных задач:<br />
* [[Задача нахождения объектов на изображении]]<tex>^\star</tex><br />
* Обнаружение ключевых точек. Обнаружение объектов и локализация их ключевых точек.<br />
* Сегментация окружения (англ. ''Stuff Segmentation''). В отличии от задачи обнаружения объектов (человек, кот, машина), здесь внимание фокусируется на том, что его окружает (трава, стена, небо). Метки классов организованы в иерархическом порядке (напр., ''stuff → outdoor-stuff → sky → clouds''). Чтобы добиться совместимости с задачей обнаружения объектов, используются следующие идентификаторы категорий:<br />
<br />
{| class="wikitable"<br />
|-<br />
! Идентификатор<br />
! Соответсвтвие<br />
|-<br />
|1-91 || категории объектов (не используются в сегментации окружения)<br />
|-<br />
|92-182 || категории окружения<br />
|-<br />
|183 || категория "другое" (выбирается для "объектов")<br />
|}<br />
* Паноптическая сегментация (англ. ''Panoptic Segmentation'') {{---}} обединение задач семантической сегментации ([[Сегментация изображений]]) и обнаружения объектов. Задача состоит в том, чтобы классифицировать все пиксели изображения на принадлежность к некоторому классу, а также определить, к какому из экземпляров данного класса они относятся. <br />
* Аннотирование изображения (англ. ''Caption Evaluation''). Генерация сопроводительной подписи к изображению.<br />
<br />
===Результаты===<br />
Результат задачи зависит от многих факторов. Например, для задачи обнаружения объекта, наилучшие результаты алгоритмы показывают на крупных объектах. <br />
Более подробно с метриками можно ознакомиться [http://cocodataset.org/#detection-leaderboard здесь].<br />
Приведем лишь результаты детектора [https://arxiv.org/abs/1512.03385 ResNet] (bbox) - победителя 2015 Detection Challenge.<br />
Графики представляют из себя семейтво кривых Pressision Recall для различных метрик.<br />
<br />
{|align="center"<br />
|-valign="top"<br />
|[[Файл:Detection-analysis-person.jpg|мини|PR кривые для класса "Person" [http://cocodataset.org/images/detection-analysis-person.jpg оригинал]]]<br />
|[[Файл:Detection-analysis-all.jpg|мини|Усредненные значения для всех классов [http://cocodataset.org/images/detection-analysis-all.jpg оригинал]]]<br />
|}<br />
<br />
<br><br />
<br />
===Код===<br />
<br />
Пример использования [https://github.com/cocodataset COCO API] на python:<br />
<br />
%matplotlib inline<br />
from pycocotools.coco import COCO<br />
import numpy as np<br />
import skimage.io as io<br />
import matplotlib.pyplot as plt<br />
import pylab<br />
pylab.rcParams['figure.figsize'] = (8.0, 10.0)<br />
<br />
<br />
dataDir='..'<br />
dataType='val2017'<br />
annFile='{}/annotations/instances_{}.json'.format(dataDir,dataType)<br />
<br />
coco=COCO(annFile)<br />
<br />
cats = coco.loadCats(coco.getCatIds())<br />
nms=[cat['name'] for cat in cats]<br />
print('COCO categories: \n{}\n'.format(' '.join(nms)))<br />
<br />
nms = set([cat['supercategory'] for cat in cats])<br />
print('COCO supercategories: \n{}'.format(' '.join(nms)))<br />
<br />
# get all images containing given categories, select one at random<br />
catIds = coco.getCatIds(catNms=['person','dog','skateboard']);<br />
imgIds = coco.getImgIds(catIds=catIds );<br />
imgIds = coco.getImgIds(imgIds = [324158])<br />
img = coco.loadImgs(imgIds[np.random.randint(0,len(imgIds))])[0]<br />
<br />
# load and display image<br />
# I = io.imread('%s/images/%s/%s'%(dataDir,dataType,img['file_name']))<br />
# use url to load image<br />
I = io.imread(img['coco_url'])<br />
plt.axis('off')<br />
plt.imshow(I)<br />
plt.show()<br />
<br />
[[Файл:Coco-1.png |мини| center| [https://github.com/cocodataset/cocoapi/blob/master/PythonAPI/pycocoDemo.ipynb оригинал]]]<br />
<br />
# load and display instance annotations<br />
plt.imshow(I); plt.axis('off')<br />
annIds = coco.getAnnIds(imgIds=img['id'], catIds=catIds, iscrowd=None)<br />
anns = coco.loadAnns(annIds)<br />
coco.showAnns(anns)<br />
<br />
[[Файл:Coco-2.png|мини|center| [https://github.com/cocodataset/cocoapi/blob/master/PythonAPI/pycocoDemo.ipynb оригинал]]]<br />
<br />
==См.также==<br />
* [[Общие понятия]]<br />
* [[Сегментация изображений]]<br />
* [[Задача нахождения объектов на изображении]]<tex>^\star</tex><br />
<br />
==Примечания==<br />
[[Категория: Машинное обучение]]<br />
[[Категория: Компьютерное зрение]]<br />
[[Категория: Классификация и регрессия]]</div>80.76.244.114http://neerc.ifmo.ru/wiki/index.php?title=%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0&diff=69915Заглавная страница2019-02-23T08:55:19Z<p>80.76.244.114: Добавил явную ссылку "Другие темы", так как на главной странице представлено лишь небольшое их подмножество</p>
<hr />
<div>Добро пожаловать на сайт [[Вики-конспекты|вики-конспектов]]!<br />
<br />
= Проверяемые конспекты =<br />
<br />
== [[Дискретная математика | Дискретная математика]]==<br />
* [[Дискретная математика#Отношения| Отношения]]<br />
* [[Дискретная математика#Булевы функции| Булевы функции]]<br />
* [[Дискретная математика#Схемы из функциональных элементов| Схемы из функциональных элементов]]<br />
* [[Дискретная математика#Представление информации| Представление информации]]<br />
* [[Дискретная математика#Алгоритмы сжатия| Алгоритмы сжатия данных]]<br />
* [[Дискретная математика#Комбинаторика| Комбинаторика]]<br />
* [[Дискретная математика#Производящая функция|Производящая функция]]<br />
<br />
==[[Теория вероятностей | Теория вероятностей]]==<br />
* [[Теория вероятностей # Теория вероятностей| Базовые определения и формулы расчета вероятности]]<br />
* [[Теория вероятностей #Марковские цепи| Марковские цепи]]<br />
<br />
==[[Теория формальных языков|Теория формальных языков]]==<br />
* [[Теория формальных языков#Автоматы и регулярные языки|Автоматы и регулярные языки]]<br />
* [[Теория формальных языков#Контекстно-свободные грамматики|Контекстно-свободные грамматики]]<br />
<br />
== [[Теория матроидов | Теория матроидов]]==<br />
<br />
* [[Теория матроидов#Основные факты теории матроидов | Основные факты]]<br />
* [[Теория матроидов#Пересечение матроидов | Пересечение матроидов]]<br />
* [[Теория матроидов#Объединение матроидов | Объединение матроидов]]<br />
<br />
== [[Теория расписаний | Теория расписаний]]==<br />
<br />
*[[Теория расписаний#Задачи с одним станком | Задачи с одним станком]]<br />
*[[Теория расписаний#Специальные случаи задач для двух станков | Специальные случаи задач для двух станков]]<br />
*[[Теория расписаний#Задачи для произвольного числа станков | Задачи для произвольного числа станков]]<br />
<br />
== [[Теория вычислимости | Теория вычислимости]]==<br />
* [[Теория вычислимости#Разрешимые и перечислимые языки | Разрешимые и перечислимые языки]]<br />
* [[Теория вычислимости#Вычислительные формализмы | Вычислительные формализмы]]<br />
* [[Теория вычислимости#Примеры неразрешимых задач | Примеры неразрешимых задач]]<br />
<br />
==[[Теория сложности | Теория сложности]]==<br />
* [[Теория сложности#Детерминированные и недетерминированные вычисления, сложность по времени и по памяти | Детерминированные и недетерминированные вычисления, сложность по времени и по памяти]]<br />
* [[Теория сложности#Схемная сложность | Схемная сложность]]<br />
* [[Теория сложности#Вероятностные сложностные классы | Вероятностные сложностные классы]]<br />
<br />
== [[Алгоритмы и структуры данных | Алгоритмы и структуры данных]]==<br />
* [[Алгоритмы и структуры данных#Амортизационный анализ | Амортизационный анализ]]<br />
* [[Алгоритмы и структуры данных#Персистентные структуры данных | Персистентные структуры данных]]<br />
* [[Алгоритмы и структуры данных#Приоритетные очереди | Приоритетные очереди]]<br />
* [[Алгоритмы и структуры данных#Система непересекающихся множеств | Система непересекающихся множеств]]<br />
* [[Алгоритмы и структуры данных#Поисковые структуры данных | Поисковые структуры данных]]<br />
* [[Алгоритмы и структуры данных#Запросы на отрезках | Запросы на отрезках]]<br />
* [[Алгоритмы и структуры данных#Дерево Фенвика | Дерево Фенвика]]<br />
* [[Алгоритмы и структуры данных#Задача о наименьшем общем предке | Задача о наименьшем общем предке]]<br />
* [[Алгоритмы и структуры данных#Хеширование | Хеширование]]<br />
* [[Алгоритмы и структуры данных#Сортировки | Сортировки]]<br />
* [[Алгоритмы и структуры данных#Сортирующие сети | Сортирующие сети]]<br />
* [[Алгоритмы и структуры данных#Алгоритмы поиска | Алгоритмы поиска]]<br />
* [[Алгоритмы и структуры данных#Динамическое программирование | Динамическое программирование]]<br />
<br />
== [[Теория графов | Теория графов]]==<br />
* [[Теория графов#Основные определения теории графов | Основные определения теории графов]]<br />
* [[Теория графов#Связность в графах | Связность в графах]]<br />
* [[Теория графов#Остовные деревья | Остовные деревья]]<br />
* [[Теория графов#Обходы графов | Обходы графов]]<br />
* [[Теория графов# Укладки графов | Укладки графов]]<br />
* [[Теория графов#Раскраски графов | Раскраски графов]]<br />
* [[Теория графов#Обход в глубину | Обход в глубину]]<br />
* [[Теория графов#Кратчайшие пути в графах | Кратчайшие пути в графах]]<br />
* [[Теория графов#Задача о паросочетании | Задача о паросочетании]]<br />
* [[Теория графов#Задача о максимальном потоке | Задача о максимальном потоке]]<br />
* [[Теория графов#Задача о потоке минимальной стоимости | Задача о потоке минимальной стоимости]]<br />
== [[Алгоритмы на строках | Алгоритмы на строках]]==<br />
* [[Алгоритмы на строках# Поиск подстроки в строке | Поиск подстроки в строке]]<br />
* [[Алгоритмы на строках#Суффиксное дерево |Суффиксное дерево]]<br />
* [[Алгоритмы на строках#Суффиксный массив | Суффиксный массив]]<br />
<br />
== [[Методы трансляции | Методы трансляции]] ==<br />
* [[Методы трансляции#Нисходящий разбор|Нисходящий разбор]]<br />
* [[Методы трансляции#Восходящий разбор | Восходящий разбор]]<br />
<br />
== [[Вычислительная геометрия|Вычислительная геометрия ]]==<br />
* [[Вычислительная геометрия#Основание вычислительной геометрии|Основание вычислительной геометрии]]<br />
* [[Вычислительная геометрия#Вычисление геометрических предикатов|Вычисление геометрических предикатов]]<br />
* [[Вычислительная геометрия#Пересечение отрезков|Пересечение отрезков]]<br />
* [[Вычислительная геометрия#Выпуклые оболочки|Выпуклые оболочки]]<br />
* [[Вычислительная геометрия#Поиск|Поиск]]<br />
* [[Вычислительная геометрия#Триангуляция|Триангуляция]]<br />
* [[Вычислительная геометрия#ППЛГ и РСДС|ППЛГ и РСДС]]<br />
* [[Вычислительная геометрия#Алгоритмы локализации|Алгоритмы локализации]]<br />
* [[Вычислительная геометрия#Триангуляция Делоне и диаграмма Вороного|Триангуляция Делоне и диаграмма Вороного]]<br />
* [[Вычислительная геометрия#Планирование движения (Motion planning)|Планирование движения (Motion planning)]]<br />
<br />
== [[Язык программирования Java|Язык программирования Java]]==<br />
*[[Основная информация о языкe]]<br />
*[[Программирование по контракту]]<br />
*[[Обработка ошибок и исключения]]<br />
*[[Generics]]<br />
*[[Перечисления]]<br />
<br />
== [[Параллельное программирование|Параллельное программирование]]==<br />
*[[Очередь Майкла и Скотта]]<br />
<br />
== [[Машинное обучение|Машинное обучение]]==<br />
<br />
*[[Модель алгоритма и ее выбор]]<br />
*[[Переобучение]]<br />
*[[Кросс-валидация]]<br />
*[[Выброс]]<br />
*[[Машинное обучение|Другие темы]]<br />
<br />
= Непроверяемые конспекты =<br />
<br />
*[[Алгебра и геометрия 1 курс | Алгебра и геометрия — 1, 2 семестр]]<br />
*[[Математический анализ 1 курс | Математический анализ — 1, 2 семестр]]<br />
*[[Математический анализ 2 курс | Математический анализ — 3, 4 семестр]]<br />
*[[Математическая логика|Математическая логика — 3 семестр]]<br />
*[[Участник:Qwerty787788/плюсы3сем | С++ — 2, 3 семестр]]<br />
*[[Дифференциальные уравнения | Дифференциальные уравнения — 3 семестр]]<br />
*[[Assembler|Assembler — 4 семестр]]<br />
*[[Алгоритмы алгебры и теории чисел|Алгоритмы алгебры и теории чисел — 4 семестр]]<br />
*[[Функциональный_анализ_3_курс | Функциональный анализ — 5, 6 семестр]]<br />
*[[Параллельное программирование|Параллельное программирование — 6 семестр]]<br />
*[[Базы данных|Базы данных — 7 семестр]]<br />
*[[Компьютерные сети|Компьютерные сети — 7, 8 семестр]]<br />
*[[Эволюционные алгоритмы|Эволюционные алгоритмы — 10 семестр]]<br />
<br />
[[Категория:Всё]]</div>80.76.244.114http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D1%80%D0%BE%D1%81%D1%81-%D0%B2%D0%B0%D0%BB%D0%B8%D0%B4%D0%B0%D1%86%D0%B8%D1%8F&diff=68778Кросс-валидация2019-01-22T10:48:46Z<p>80.76.244.114: /* Полная кросс-валидация (Complete cross-validation) */</p>
<hr />
<div>'''Кросс-валидация''' или '''скользящий контроль''' это процедура оценивания обобщающей способности алгоритмов. <br />
С помощью кросс-валидации эмулируется наличие тестовой выборки, которая не участвует в обучении, но для которой известны правильные ответы. <br />
<br />
<br />
== Разновидности Кросс-валидации ==<br />
<br />
=== Валидация на отложенных данных (Hold-Out Validation) ===<br />
<br />
Обучающая выборка один раз случайным образом разбивается на две части <tex> T^l = T^t \cup T^{l-t} </tex><br />
<br />
После чего решается задача оптимизации: <br />
<br />
<tex>HO(\mu, T^t, T^{l-t}) = Q(\mu(T^t), T^{l-t}) \to min </tex><br />
<br />
Метод Hold-out применяется в случаях больших датасетов, т.к. требует меньше вычислительных мощностей по сравнению с другими методами кросс-валидации. <br />
Недостатком метода является то, что оценка существенно зависит от разбиения, тогда как желательно, чтобы она характеризовала только алгоритм обучения.<br />
<br />
=== Полная кросс-валидация (Complete cross-validation) ===<br />
# Выбирается значение <tex>t</tex><br />
# Выборка разбивается всеми возможными способами на две части <tex> T^l = T^t \cup T^{l-t} </tex><br />
<br />
<br />
<tex>CVV_t = \frac{1}{C_l^{l-t}} <br />
\displaystyle\sum_{T^l = T^t \cup T^{l-t}} Q(\mu(T^t), T^{l-t}) \to min </tex><br />
<br />
=== k-fold кросс-валидация ===<br />
<br />
# Обучающая выборка разбивается на <tex> k </tex> непересекающихся одинаковых по объему частей<br />
# Производится <tex> k </tex> итераций. На каждой итерации происходит следующее:<br />
## Модель обучается на <tex> k - 1 </tex> части обучающей выборки;<br />
## Модель тестируется на части обучающей выборки, которая не участвовала в обучении;<br />
<br />
<tex>T^l = F_1 \cup \dots \cup F_k, |F_i| \approx \frac{l}{k} <br />
\\ CV_k = \frac{1}{k} \sum_{i=1}^{k} Q(\mu(T^l \setminus F_i),F_i) \to min </tex><br />
<br />
Каждая из <tex>k</tex> частей единожды используется для тестирования. <br />
Как правило <tex>k = 10</tex> (5 в случае малого размера выборки)<br />
<br />
В результате можно посчитать различные метрики, показывающие, насколько модель удачная, например, среднюю ошибку на частях, которые не участвовали в обучающей выборке.<br />
<br />
=== t×k-fold кросс-валидация === <br />
# Процедура выполняется <tex>t</tex> раз: <br />
## Обучающая выборка случайным образом разбивается на <tex>k</tex> непересекающихся одинаковых по объему частей<br />
## Производится <tex> k </tex> итераций. На каждой итерации происходит следующее:<br />
### Модель обучается на <tex> k - 1 </tex> части обучающей выборки;<br />
### Модель тестируется на части обучающей выборки, которая не участвовала в обучении;<br />
<br />
<br />
<tex>T^l = F_{(1,1)} \cup \dots \cup F_{(k,1)} = \dots = F_{(1,t)} \cup \dots \cup F_{(k,t)}, |F_{(i,j)}| \approx \frac{l}{k} </tex> <br />
<br />
<tex> CV_{t \times k} = \frac{1}{tk} \sum_{j=1}^t \sum_{i=1}^{k} Q(\mu(T^l \setminus F_{(i,j)}),F_{(i,j)}) \to min </tex><br />
<br />
=== Кросс-валидация по отдельным объектам (leave-one-out) === <br />
Выборка разбивается на <tex>l-1</tex> и 1 объект <tex>l</tex> раз.<br />
<br />
<tex>LOO = \frac{1}{l} \sum_{i=1}^{l} Q(\mu(T^l \setminus p_i),p_i) \to min </tex>, где <tex>p_i = (x_i, y_i)</tex><br />
<br />
=== Случайные разбиения (Random subsampling) === <br />
Выборка разбивается в случайной пропорции. Процедура повторяется несколько раз. <br />
<br />
=== Критерий целостности модели (Model consistency criterion) === <br />
Не переобученый алгоритм должен показывать одинаковую эффективность на каждой части<br />
<br />
<tex> D_1 = (\mu, T^{l-t}) = \frac{1}{l} \sum_{i=1}^l (\mu(T^t)(x_i)-\mu(T^{l-t})(x_i)) </tex><br />
Метод может быть обобщен как аналог <tex> CV_{t \times 2} </tex>.<br />
<br />
== См. также ==<br />
* [[Общие понятия]]<sup>[на 17.01.19 не создан]</sup><br />
* [[Модель алгоритма и ее выбор]]<br />
* [[Мета-обучение]]<sup>[на 17.01.19 не создан]</sup><br />
<br />
== Примечания ==<br />
# [https://en.wikipedia.org/wiki/Cross-validation_(statistics) Кросс-валидация]<br />
# [https://www.ml4aad.org/wp-content/uploads/2018/07/automl_book_draft_auto-weka.pdf Автоматизированный выбор модели в библиотеке WEKA для Java]<br />
# [https://epistasislab.github.io/tpot/ Автоматизированный выбор модели в библиотеке TPOT для Python]<br />
# [https://automl.github.io/auto-sklearn/stable/ Автоматизированный выбор модели в библиотеке sklearn для Python]<br />
== Источники информации ==<br />
# [http://www.machinelearning.ru/wiki/index.php?title=%D0%A1%D0%BA%D0%BE%D0%BB%D1%8C%D0%B7%D1%8F%D1%89%D0%B8%D0%B9_%D0%BA%D0%BE%D0%BD%D1%82%D1%80%D0%BE%D0%BB%D1%8C Скользящий контроль] - статья на MachineLearning.ru<br />
# [https://drive.google.com/open?id=1p9CTAa1_gJpj94RXBEcQ09aVOa-KTlrd Model assessment and selection]<br />
<br />
[[Категория: Машинное обучение]]<br />
<br />
[[Категория: Автоматическое машинное обучение]]</div>80.76.244.114http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D1%80%D0%BE%D1%81%D1%81-%D0%B2%D0%B0%D0%BB%D0%B8%D0%B4%D0%B0%D1%86%D0%B8%D1%8F&diff=68463Кросс-валидация2019-01-17T18:53:55Z<p>80.76.244.114: /* См. также */</p>
<hr />
<div>'''Кросс-валидация''' или '''скользящий контроль''' это процедура оценивания обобщающей способности алгоритмов. <br />
С помощью кросс-валидации эмулируется наличие тестовой выборки, которая не участвует в обучении, но для которой известны правильные ответы. <br />
<br />
<br />
== Разновидности Кросс-валидации ==<br />
<br />
=== Валидация на отложенных данных (Hold-Out Validation) ===<br />
<br />
Обучающая выборка один раз случайным образом разбивается на две части <tex> T^l = T^t \cup T^{l-t} </tex><br />
<br />
После чего решается задача оптимизации: <br />
<br />
<tex>HO(\mu, T^t, T^{l-t}) = Q(\mu(T^t), T^{l-t}) \to min </tex><br />
<br />
Метод Hold-out применяется в случаях больших датасетов, т.к. требует меньше вычислительных мощностей по сравнению с другими методами кросс-валидации. <br />
Недостатком метода является то, что оценка существенно зависит от разбиения, тогда как желательно, чтобы она характеризовала только алгоритм обучения.<br />
<br />
=== Полная кросс-валидация (Complete cross-validation) ===<br />
# Выбирается значение <tex>t</tex><br />
# Выборка разбивается всеми возможными способами на две части <tex> T^l = T^t \cup T^{l-t} </tex><br />
<br />
После чего решается задача оптимизации:<br />
<br />
<tex>CVV_t = \frac{1}{C_l^{l-t}} <br />
\displaystyle\sum_{T^l = T^t \cup T^{l-t}} Q(\mu(T^t), T^{l-t}) \to min </tex><br />
<br />
=== k-fold кросс-валидация ===<br />
<br />
# Обучающая выборка разбивается на <tex> k </tex> непересекающихся одинаковых по объему частей<br />
# Производится <tex> k </tex> итераций. На каждой итерации происходит следующее:<br />
## Модель обучается на <tex> k - 1 </tex> части обучающей выборки;<br />
## Модель тестируется на части обучающей выборки, которая не участвовала в обучении;<br />
<br />
<tex>T^l = F_1 \cup \dots \cup F_k, |F_i| \approx \frac{l}{k} <br />
\\ CV_k = \frac{1}{k} \sum_{i=1}^{k} Q(\mu(T^l \setminus F_i),F_i) \to min </tex><br />
<br />
Каждая из <tex>k</tex> частей единожды используется для тестирования. <br />
Как правило <tex>k = 10</tex> (5 в случае малого размера выборки)<br />
<br />
В результате можно посчитать различные метрики, показывающие, насколько модель удачная, например, среднюю ошибку на частях, которые не участвовали в обучающей выборке.<br />
<br />
=== t×k-fold кросс-валидация === <br />
# Процедура выполняется <tex>t</tex> раз: <br />
## Обучающая выборка случайным образом разбивается на <tex>k</tex> непересекающихся одинаковых по объему частей<br />
## Производится <tex> k </tex> итераций. На каждой итерации происходит следующее:<br />
### Модель обучается на <tex> k - 1 </tex> части обучающей выборки;<br />
### Модель тестируется на части обучающей выборки, которая не участвовала в обучении;<br />
<br />
<br />
<tex>T^l = F_{(1,1)} \cup \dots \cup F_{(k,1)} = \dots = F_{(1,t)} \cup \dots \cup F_{(k,t)}, |F_{(i,j)}| \approx \frac{l}{k} </tex> <br />
<br />
<tex> CV_{t \times k} = \frac{1}{tk} \sum_{j=1}^t \sum_{i=1}^{k} Q(\mu(T^l \setminus F_{(i,j)}),F_{(i,j)}) \to min </tex><br />
<br />
=== Кросс-валидация по отдельным объектам (leave-one-out) === <br />
Выборка разбивается на <tex>l-1</tex> и 1 объект <tex>l</tex> раз.<br />
<br />
<tex>LOO = \frac{1}{l} \sum_{i=1}^{l} Q(\mu(T^l \setminus p_i),p_i) \to min </tex>, где <tex>p_i = (x_i, y_i)</tex><br />
<br />
=== Случайные разбиения (Random subsampling) === <br />
Выборка разбивается в случайной пропорции. Процедура повторяется несколько раз. <br />
<br />
=== Критерий целостности модели (Model consistency criterion) === <br />
Не переобученый алгоритм должен показывать одинаковую эффективность на каждой части<br />
<br />
<tex> D_1 = (\mu, T^{l-t}) = \frac{1}{l} \sum_{i=1}^l (\mu(T^t)(x_i)-\mu(T^{l-t})(x_i)) </tex><br />
Метод может быть обобщен как аналог <tex> CV_{t \times 2} </tex>.<br />
<br />
== См. также ==<br />
* [[Общие понятия]]<sup>[на 17.01.19 не создан]</sup><br />
* [[Модель алгоритма и ее выбор]]<br />
* [[Мета-обучение]]<sup>[на 17.01.19 не создан]</sup><br />
<br />
== Примечания ==<br />
# [https://en.wikipedia.org/wiki/Cross-validation_(statistics) Кросс-валидация]<br />
# [https://www.ml4aad.org/wp-content/uploads/2018/07/automl_book_draft_auto-weka.pdf Автоматизированный выбор модели в библиотеке WEKA для Java]<br />
# [https://epistasislab.github.io/tpot/ Автоматизированный выбор модели в библиотеке TPOT для Python]<br />
# [https://automl.github.io/auto-sklearn/stable/ Автоматизированный выбор модели в библиотеке sklearn для Python]<br />
== Источники информации ==<br />
# [http://www.machinelearning.ru/wiki/index.php?title=%D0%A1%D0%BA%D0%BE%D0%BB%D1%8C%D0%B7%D1%8F%D1%89%D0%B8%D0%B9_%D0%BA%D0%BE%D0%BD%D1%82%D1%80%D0%BE%D0%BB%D1%8C Скользящий контроль] - статья на MachineLearning.ru<br />
# [http://jmlda.org/papers/doc/2016/no2/Efimova2016Reinforcement.pdf Применение обучения с подкреплением для одновременного выбора модели алгоритма классификации и ее структурных параметров]<br />
<br />
[[Категория: Машинное обучение]]<br />
<br />
[[Категория: Автоматическое машинное обучение]]</div>80.76.244.114http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D1%80%D0%BE%D1%81%D1%81-%D0%B2%D0%B0%D0%BB%D0%B8%D0%B4%D0%B0%D1%86%D0%B8%D1%8F&diff=68462Кросс-валидация2019-01-17T18:46:02Z<p>80.76.244.114: /* Разновидности Кросс-валидации */</p>
<hr />
<div>'''Кросс-валидация''' или '''скользящий контроль''' это процедура оценивания обобщающей способности алгоритмов. <br />
С помощью кросс-валидации эмулируется наличие тестовой выборки, которая не участвует в обучении, но для которой известны правильные ответы. <br />
<br />
<br />
== Разновидности Кросс-валидации ==<br />
<br />
=== Валидация на отложенных данных (Hold-Out Validation) ===<br />
<br />
Обучающая выборка один раз случайным образом разбивается на две части <tex> T^l = T^t \cup T^{l-t} </tex><br />
<br />
После чего решается задача оптимизации: <br />
<br />
<tex>HO(\mu, T^t, T^{l-t}) = Q(\mu(T^t), T^{l-t}) \to min </tex><br />
<br />
Метод Hold-out применяется в случаях больших датасетов, т.к. требует меньше вычислительных мощностей по сравнению с другими методами кросс-валидации. <br />
Недостатком метода является то, что оценка существенно зависит от разбиения, тогда как желательно, чтобы она характеризовала только алгоритм обучения.<br />
<br />
=== Полная кросс-валидация (Complete cross-validation) ===<br />
# Выбирается значение <tex>t</tex><br />
# Выборка разбивается всеми возможными способами на две части <tex> T^l = T^t \cup T^{l-t} </tex><br />
<br />
После чего решается задача оптимизации:<br />
<br />
<tex>CVV_t = \frac{1}{C_l^{l-t}} <br />
\displaystyle\sum_{T^l = T^t \cup T^{l-t}} Q(\mu(T^t), T^{l-t}) \to min </tex><br />
<br />
=== k-fold кросс-валидация ===<br />
<br />
# Обучающая выборка разбивается на <tex> k </tex> непересекающихся одинаковых по объему частей<br />
# Производится <tex> k </tex> итераций. На каждой итерации происходит следующее:<br />
## Модель обучается на <tex> k - 1 </tex> части обучающей выборки;<br />
## Модель тестируется на части обучающей выборки, которая не участвовала в обучении;<br />
<br />
<tex>T^l = F_1 \cup \dots \cup F_k, |F_i| \approx \frac{l}{k} <br />
\\ CV_k = \frac{1}{k} \sum_{i=1}^{k} Q(\mu(T^l \setminus F_i),F_i) \to min </tex><br />
<br />
Каждая из <tex>k</tex> частей единожды используется для тестирования. <br />
Как правило <tex>k = 10</tex> (5 в случае малого размера выборки)<br />
<br />
В результате можно посчитать различные метрики, показывающие, насколько модель удачная, например, среднюю ошибку на частях, которые не участвовали в обучающей выборке.<br />
<br />
=== t×k-fold кросс-валидация === <br />
# Процедура выполняется <tex>t</tex> раз: <br />
## Обучающая выборка случайным образом разбивается на <tex>k</tex> непересекающихся одинаковых по объему частей<br />
## Производится <tex> k </tex> итераций. На каждой итерации происходит следующее:<br />
### Модель обучается на <tex> k - 1 </tex> части обучающей выборки;<br />
### Модель тестируется на части обучающей выборки, которая не участвовала в обучении;<br />
<br />
<br />
<tex>T^l = F_{(1,1)} \cup \dots \cup F_{(k,1)} = \dots = F_{(1,t)} \cup \dots \cup F_{(k,t)}, |F_{(i,j)}| \approx \frac{l}{k} </tex> <br />
<br />
<tex> CV_{t \times k} = \frac{1}{tk} \sum_{j=1}^t \sum_{i=1}^{k} Q(\mu(T^l \setminus F_{(i,j)}),F_{(i,j)}) \to min </tex><br />
<br />
=== Кросс-валидация по отдельным объектам (leave-one-out) === <br />
Выборка разбивается на <tex>l-1</tex> и 1 объект <tex>l</tex> раз.<br />
<br />
<tex>LOO = \frac{1}{l} \sum_{i=1}^{l} Q(\mu(T^l \setminus p_i),p_i) \to min </tex>, где <tex>p_i = (x_i, y_i)</tex><br />
<br />
=== Случайные разбиения (Random subsampling) === <br />
Выборка разбивается в случайной пропорции. Процедура повторяется несколько раз. <br />
<br />
=== Критерий целостности модели (Model consistency criterion) === <br />
Не переобученый алгоритм должен показывать одинаковую эффективность на каждой части<br />
<br />
<tex> D_1 = (\mu, T^{l-t}) = \frac{1}{l} \sum_{i=1}^l (\mu(T^t)(x_i)-\mu(T^{l-t})(x_i)) </tex><br />
Метод может быть обобщен как аналог <tex> CV_{t \times 2} </tex>.<br />
<br />
== См. также ==<br />
* [[Общие понятия]]<br />
* [[Модель алгоритма и ее выбор]]<br />
* [[Мета-обучение]]<br />
<br />
== Примечания ==<br />
# [https://en.wikipedia.org/wiki/Cross-validation_(statistics) Кросс-валидация]<br />
# [https://www.ml4aad.org/wp-content/uploads/2018/07/automl_book_draft_auto-weka.pdf Автоматизированный выбор модели в библиотеке WEKA для Java]<br />
# [https://epistasislab.github.io/tpot/ Автоматизированный выбор модели в библиотеке TPOT для Python]<br />
# [https://automl.github.io/auto-sklearn/stable/ Автоматизированный выбор модели в библиотеке sklearn для Python]<br />
== Источники информации ==<br />
# [http://www.machinelearning.ru/wiki/index.php?title=%D0%A1%D0%BA%D0%BE%D0%BB%D1%8C%D0%B7%D1%8F%D1%89%D0%B8%D0%B9_%D0%BA%D0%BE%D0%BD%D1%82%D1%80%D0%BE%D0%BB%D1%8C Скользящий контроль] - статья на MachineLearning.ru<br />
# [http://jmlda.org/papers/doc/2016/no2/Efimova2016Reinforcement.pdf Применение обучения с подкреплением для одновременного выбора модели алгоритма классификации и ее структурных параметров]<br />
<br />
[[Категория: Машинное обучение]]<br />
<br />
[[Категория: Автоматическое машинное обучение]]</div>80.76.244.114http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D1%80%D0%BE%D1%81%D1%81-%D0%B2%D0%B0%D0%BB%D0%B8%D0%B4%D0%B0%D1%86%D0%B8%D1%8F&diff=68461Кросс-валидация2019-01-17T18:44:02Z<p>80.76.244.114: /* Разновидности Кросс-валидации */</p>
<hr />
<div>'''Кросс-валидация''' или '''скользящий контроль''' это процедура оценивания обобщающей способности алгоритмов. <br />
С помощью кросс-валидации эмулируется наличие тестовой выборки, которая не участвует в обучении, но для которой известны правильные ответы. <br />
<br />
<br />
== Разновидности Кросс-валидации ==<br />
<br />
=== Контроль на отложенных данных (Hold-Out Validation) ===<br />
<br />
Обучающая выборка один раз случайным образом разбивается на две части <tex> T^l = T^t \cup T^{l-t} </tex><br />
<br />
После чего решается задача оптимизации: <br />
<br />
<tex>HO(\mu, T^t, T^{l-t}) = Q(\mu(T^t), T^{l-t}) \to min </tex><br />
<br />
Метод Hold-out применяется в случаях больших датасетов, т.к. требует меньше вычислительных мощностей по сравнению с другими методами кросс-валидации. <br />
Недостатком метода является то, что оценка существенно зависит от разбиения, тогда как желательно, чтобы она характеризовала только алгоритм обучения.<br />
<br />
=== Полная кросс-валидация (CVV) ===<br />
# Выбирается значение <tex>t</tex><br />
# Выборка разбивается всеми возможными способами на две части <tex> T^l = T^t \cup T^{l-t} </tex><br />
<br />
После чего решается задача оптимизации:<br />
<br />
<tex>CVV_t = \frac{1}{C_l^{l-t}} <br />
\displaystyle\sum_{T^l = T^t \cup T^{l-t}} Q(\mu(T^t), T^{l-t}) \to min </tex><br />
<br />
=== k-fold кросс-валидация ===<br />
<br />
# Обучающая выборка разбивается на <tex> k </tex> непересекающихся одинаковых по объему частей<br />
# Производится <tex> k </tex> итераций. На каждой итерации происходит следующее:<br />
## Модель обучается на <tex> k - 1 </tex> части обучающей выборки;<br />
## Модель тестируется на части обучающей выборки, которая не участвовала в обучении;<br />
<br />
<tex>T^l = F_1 \cup \dots \cup F_k, |F_i| \approx \frac{l}{k} <br />
\\ CV_k = \frac{1}{k} \sum_{i=1}^{k} Q(\mu(T^l \setminus F_i),F_i) \to min </tex><br />
<br />
Каждая из <tex>k</tex> частей единожды используется для тестирования. <br />
Как правило <tex>k = 10</tex> (5 в случае малого размера выборки)<br />
<br />
В результате можно посчитать различные метрики, показывающие, насколько модель удачная, например, среднюю ошибку на частях, которые не участвовали в обучающей выборке.<br />
<br />
=== t×k-fold кросс-валидация === <br />
# Процедура выполняется <tex>t</tex> раз: <br />
## Обучающая выборка случайным образом разбивается на <tex>k</tex> непересекающихся одинаковых по объему частей<br />
## Производится <tex> k </tex> итераций. На каждой итерации происходит следующее:<br />
### Модель обучается на <tex> k - 1 </tex> части обучающей выборки;<br />
### Модель тестируется на части обучающей выборки, которая не участвовала в обучении;<br />
<br />
<br />
<tex>T^l = F_{(1,1)} \cup \dots \cup F_{(k,1)} = \dots = F_{(1,t)} \cup \dots \cup F_{(k,t)}, |F_{(i,j)}| \approx \frac{l}{k} </tex> <br />
<br />
<tex> CV_{t \times k} = \frac{1}{tk} \sum_{j=1}^t \sum_{i=1}^{k} Q(\mu(T^l \setminus F_{(i,j)}),F_{(i,j)}) \to min </tex><br />
<br />
=== Кросс-валидация по отдельным объектам (leave-one-out) === <br />
Выборка разбивается на <tex>l-1</tex> и 1 объект <tex>l</tex> раз.<br />
<br />
<tex>LOO = \frac{1}{l} \sum_{i=1}^{l} Q(\mu(T^l \setminus p_i),p_i) \to min </tex>, где <tex>p_i = (x_i, y_i)</tex><br />
<br />
=== Случайные разбиения (Random subsampling) === <br />
Выборка разбивается в случайной пропорции. Процедура повторяется несколько раз. <br />
<br />
=== Критерий целостности модели (Model consistency criterion) === <br />
Не переобученый алгоритм должен показывать одинаковую эффективность на каждой части<br />
<br />
<tex> D_1 = (\mu, T^{l-t}) = \frac{1}{l} \sum_{i=1}^l (\mu(T^t)(x_i)-\mu(T^{l-t})(x_i)) </tex><br />
Метод может быть обобщен как аналог <tex> CV_{t \times 2} </tex>.<br />
<br />
== См. также ==<br />
* [[Общие понятия]]<br />
* [[Модель алгоритма и ее выбор]]<br />
* [[Мета-обучение]]<br />
<br />
== Примечания ==<br />
# [https://en.wikipedia.org/wiki/Cross-validation_(statistics) Кросс-валидация]<br />
# [https://www.ml4aad.org/wp-content/uploads/2018/07/automl_book_draft_auto-weka.pdf Автоматизированный выбор модели в библиотеке WEKA для Java]<br />
# [https://epistasislab.github.io/tpot/ Автоматизированный выбор модели в библиотеке TPOT для Python]<br />
# [https://automl.github.io/auto-sklearn/stable/ Автоматизированный выбор модели в библиотеке sklearn для Python]<br />
== Источники информации ==<br />
# [http://www.machinelearning.ru/wiki/index.php?title=%D0%A1%D0%BA%D0%BE%D0%BB%D1%8C%D0%B7%D1%8F%D1%89%D0%B8%D0%B9_%D0%BA%D0%BE%D0%BD%D1%82%D1%80%D0%BE%D0%BB%D1%8C Скользящий контроль] - статья на MachineLearning.ru<br />
# [http://jmlda.org/papers/doc/2016/no2/Efimova2016Reinforcement.pdf Применение обучения с подкреплением для одновременного выбора модели алгоритма классификации и ее структурных параметров]<br />
<br />
[[Категория: Машинное обучение]]<br />
<br />
[[Категория: Автоматическое машинное обучение]]</div>80.76.244.114http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D1%80%D0%BE%D1%81%D1%81-%D0%B2%D0%B0%D0%BB%D0%B8%D0%B4%D0%B0%D1%86%D0%B8%D1%8F&diff=68453Кросс-валидация2019-01-17T18:02:24Z<p>80.76.244.114: /* k-fold Кросс-валидация */</p>
<hr />
<div>'''Кросс-валидация''' или '''скользящий контроль''' это процедура оценивания обобщающей способности алгоритмов. <br />
С помощью кросс-валидации эмулируется наличие тестовой выборки, которая не участвует в обучении, но для которой известны правильные ответы. <br />
<br />
<br />
== Разновидности Кросс-валидации ==<br />
<br />
=== Контроль на отложенных данных (Hold-Out Validation) ===<br />
<br />
Обучающая выборка один раз случайным образом разбивается на две части <tex> T^l = T^t \cup T^{l-t} </tex><br />
<br />
После чего решается задача оптимизации: <br />
<br />
<tex>HO(\mu, T^t, T^{l-t}) = Q(\mu(T^t), T^{l-t}) \to min </tex><br />
<br />
Метод Hold-out применяется в случаях больших датасетов, т.к. требует меньше вычислительных мощностей по сравнению с другими методами кросс-валидации. <br />
Недостатком метода является то, что оценка существенно зависит от разбиения, тогда как желательно, чтобы она характеризовала только алгоритм обучения.<br />
<br />
=== Полная кросс-валидация (CVV) ===<br />
# Выбирается значение <tex>t</tex><br />
# Выборка разбивается всеми возможными способами на две части <tex> T^l = T^t \cup T^{l-t} </tex><br />
<br />
После чего решается задача оптимизации:<br />
<br />
<tex>CVV_t = \frac{1}{C_l^{l-t}} <br />
\displaystyle\sum_{T^l = T^t \cup T^{l-t}} Q(\mu(T^t), T^{l-t}) \to min </tex><br />
<br />
=== k-fold Кросс-валидация ===<br />
<br />
# Обучающая выборка разбивается на <tex> k </tex> непересекающихся одинаковых по объему частей <tex>T^l = F_1 \cup \dots \cup F_k, |F_i| \approx \frac{l}{k} </tex> <br />
# Производится <tex> k </tex> итераций. На каждой итерации происходит следующее:<br />
## Модель обучается на <tex> k - 1 </tex> части обучающей выборки;<br />
## Модель тестируется на части обучающей выборки, которая не участвовала в обучении;<br />
<br />
<tex> CV_k = \frac{1}{k} \sum_{i=1}^{k} Q(\mu(T^l \setminus F_i),F_i) \to min </tex><br />
<br />
Каждая из <tex>k</tex> частей единожды используется для тестирования. <br />
Как правило <tex>k = 10</tex> (5 в случае малого размера выборки)<br />
<br />
В результате можно посчитать различные метрики, показывающие, насколько модель удачная, например, среднюю ошибку на частях, которые не участвовали в обучающей выборке.<br />
<br />
== См. также ==<br />
* [[Общие понятия]]<sup>[на 17.01.19 не создан]</sup<br />
* [[Модель алгоритма и ее выбор]]<br />
* [[Мета-обучение]]<sup>[на 17.01.19 не создан]</sup><br />
<br />
== Примечания ==<br />
# [https://en.wikipedia.org/wiki/Cross-validation_(statistics) Кросс-валидация]<br />
# [https://www.ml4aad.org/wp-content/uploads/2018/07/automl_book_draft_auto-weka.pdf Автоматизированный выбор модели в библиотеке WEKA для Java]<br />
# [https://epistasislab.github.io/tpot/ Автоматизированный выбор модели в библиотеке TPOT для Python]<br />
# [https://automl.github.io/auto-sklearn/stable/ Автоматизированный выбор модели в библиотеке sklearn для Python]<br />
== Источники информации ==<br />
# [http://www.machinelearning.ru/wiki/index.php?title=%D0%A1%D0%BA%D0%BE%D0%BB%D1%8C%D0%B7%D1%8F%D1%89%D0%B8%D0%B9_%D0%BA%D0%BE%D0%BD%D1%82%D1%80%D0%BE%D0%BB%D1%8C Скользящий контроль] - статья на MachineLearning.ru<br />
# [http://jmlda.org/papers/doc/2016/no2/Efimova2016Reinforcement.pdf Применение обучения с подкреплением для одновременного выбора модели алгоритма классификации и ее структурных параметров]<br />
<br />
[[Категория: Машинное обучение]]<br />
<br />
[[Категория: Автоматическое машинное обучение]]</div>80.76.244.114http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D1%80%D0%BE%D1%81%D1%81-%D0%B2%D0%B0%D0%BB%D0%B8%D0%B4%D0%B0%D1%86%D0%B8%D1%8F&diff=68439Кросс-валидация2019-01-17T16:14:17Z<p>80.76.244.114: </p>
<hr />
<div>'''Кросс-валидация''' или '''скользящий контроль''' это процедура оценивания обобщающей способности алгоритмов. <br />
С помощью кросс-валидации эмулируется наличие тестовой выборки, которая не участвует в обучении, но для которой известны правильные ответы. <br />
<br />
== Разновидности Кросс-валидации ==<br />
<br />
=== Hold-out Validation ===<br />
Обучающая выборка разбивается на две части <tex> T^l = T^t \cup T^{l-t} </tex><br />
<br />
<tex> HO(\mu, T^t, T^{l-t}) = Q(\mu(T^t), T^{l-t}) \to min </tex><br />
<br />
== Алгоритм кросс-валидации ==<br />
# Обучающая выборка разбивается на <tex> k </tex> непересекающихся одинаковых по объему частей;<br />
# Производится <tex> k </tex> итераций. На каждой итерации происходит следующее:<br />
## Модель обучается на <tex> k - 1 </tex> части обучающей выборки;<br />
## Модель тестируется на части обучающей выборки, которая не участвовала в обучении;<br />
# В результате можно посчитать различные метрики, показывающие, насколько модель удачная, например, среднюю ошибку на частях, которые не участвовали в обучающей выборке.<br />
<br />
== См. также ==<br />
* [[Модель алгоритма и ее выбор]]<br />
* [[Мета-обучение]]<sup>[на 16.01.19 не создан]</sup><br />
<br />
== Примечания ==<br />
# [https://en.wikipedia.org/wiki/Cross-validation_(statistics) Кросс-валидация]<br />
# [https://www.ml4aad.org/wp-content/uploads/2018/07/automl_book_draft_auto-weka.pdf Автоматизированный выбор модели в библиотеке WEKA для Java]<br />
# [https://epistasislab.github.io/tpot/ Автоматизированный выбор модели в библиотеке TPOT для Python]<br />
# [https://automl.github.io/auto-sklearn/stable/ Автоматизированный выбор модели в библиотеке sklearn для Python]<br />
== Источники информации ==<br />
# [http://www.machinelearning.ru/wiki/index.php?title=%D0%A1%D0%BA%D0%BE%D0%BB%D1%8C%D0%B7%D1%8F%D1%89%D0%B8%D0%B9_%D0%BA%D0%BE%D0%BD%D1%82%D1%80%D0%BE%D0%BB%D1%8C Скользящий контроль] - статья на MachineLearning.ru<br />
# [http://jmlda.org/papers/doc/2016/no2/Efimova2016Reinforcement.pdf Применение обучения с подкреплением для одновременного выбора модели алгоритма классификации и ее структурных параметров]<br />
<br />
[[Категория: Машинное обучение]]<br />
<br />
[[Категория: Автоматическое машинное обучение]]</div>80.76.244.114http://neerc.ifmo.ru/wiki/index.php?title=%D0%93%D0%BB%D1%83%D0%B1%D0%BE%D0%BA%D0%BE%D0%B5_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5&diff=68025Глубокое обучение2018-12-25T12:00:15Z<p>80.76.244.114: </p>
<hr />
<div>[[Файл:Ml_areas.jpg|thumb|250px|Глубокое обучение как часть машинного обучения.]]<br />
<br />
'''Глубокое обучение''' (англ. deep learning) {{---}} совокупность широкого семейства методов машинного обучения, основанных на имитации работы человеческого мозга в процессе обработки данных и создания паттернов, используемых для принятия решений<ref>[https://www.investopedia.com/terms/d/deep-learning.asp Deep Learning, Investopedia]</ref>. Как правило, глубокое обучение предназначено для работы с большими объемами данных и использует сложные алгоритмы для обучения модели<ref>[https://www.quora.com/What-is-the-difference-between-Neural-Networks-and-Deep-Learning The difference between neural networks and deep learning]</ref>. На больших датасетах глубокое обучение показывает более высокую точность результатов в сравнении с традиционным машинным обучением. Зависимость производительности (качества результатов) от объема данных представлена на рисунке ниже.<br />
<br />
{|align="center"<br />
|-valign="top"<br />
|[[Файл:Perfm_data.jpg|border|450px|thumb|left|Зависимость производительности от объема данных.]]<br />
|}<br />
<br />
Несмотря на то, что данный раздел машинного обучения появился еще в 1980-х, до недавнего времени его применение было сильно ограничено из-за недостака вычислительных мощностей существовавших компьютеров. Ситуация изменилась только в середине 2000-х.<br />
<br />
На создание моделей глубокого обучения оказали влияние некоторые процессы и паттерны, происходящие в биологических нейронных системах. Несмотря на это, данные модели во многом отличаются от биологического мозга (и в структуре и в функциях), что делает невозможным использование теорем и доказательств, применяющихся в нейробиологии.<br />
<br />
== История ==<br />
* 1943 {{---}} Искусственный нейрон Маккаллока — Питтса<ref>[https://en.wikipedia.org/wiki/Artificial_neuron Artificial neuron, Wikipedia]</ref> {{---}} узел искусственной нейронной сети, являющийся упрощённой моделью естественного нейрона.<br />
* 1949 {{---}} Принцип обучения нейронов Хебба<ref>[https://en.wikipedia.org/wiki/Hebbian_theory Hebbian theory, Wikipedia]</ref> {{---}} изначально наблюдаемая причинно-следственная связь между активациями пре- и постсинаптического нейрона имеет тенденцию к усилению.<br />
* 1957 {{---}} Модель перцептрона предложена Фрэнком Розенблаттом<ref>[https://en.wikipedia.org/wiki/Perceptron Perceptron, Wikipedia]</ref> {{---}} математическая или компьютерная модель восприятия информации мозгом.<br />
* 1960 {{---}} Дельта-правило обучения перцептрона<ref>[https://en.wikipedia.org/wiki/Delta_rule Delta rule, Wikipedia]</ref> {{---}} метод обучения перцептрона по принципу градиентного спуска по поверхности ошибки.<br />
* 1969 {{---}} Выход книги Марвина Минска и Сеймура Паперта "Перцептроны"<ref>[https://en.wikipedia.org/wiki/Perceptrons_(book) Perceptrons book, WIkipedia]</ref>. В данной книге математически показаны ограничения перцептронов.<br />
* 1974 {{---}} Метод обратного распространения ошибки впервые предложен А. И. Галушкиным и Дж. Вербосом<ref>[https://en.wikipedia.org/wiki/Backpropagation Backpropagation, Wikipedia]</ref> {{---}} метод вычисления градиента, который используется при обновлении весов многослойного перцептрона.<br />
* 1980 {{---}} Первая свёрточная нейронная сеть предложена Кунихико Фукусимой<ref>[https://en.wikipedia.org/wiki/Convolutional_neural_network Convolutional_neural_network, Wikipedia]</ref> {{---}} специальная архитектура искусственных нейронных сетей использующая некоторые особенности зрительной коры.<br />
* 1982 {{---}} Рекуррентные нейронные сети предложены Д. Хопфилдом {{---}} вид нейронных сетей, где связи между элементами образуют направленную последовательность.<br />
* 1991 {{---}} Проблема "исчезающего" градиента была сформулирована С. Хочрейтом. Проблема "исчезающего" градиента заключается в быстрой потере информации с течением времени.<br />
* 1997 {{---}} Долгая краткосрочная память предложена С. Хочрейтом и Ю. Шмидхубером<ref>[https://en.wikipedia.org/wiki/Long_short-term_memory Long short-term memory, Wikipedia]</ref>. В отличие от традиционных рекуррентных нейронных сетей, LSTM-сеть хорошо приспособлена к обучению на задачах классификации, обработки и прогнозирования временных рядов в случаях, когда важные события разделены временными промежутками с неопределённой продолжительностью и границами.<br />
* 1998 {{---}} Градиентный спуск для сверточных нейронных сетей предложен Я. Лекуном.<br />
* 2006 {{---}} Публикации Г. Хинтона, С. Осиндера и Я. Теха об обучении сетей глубокого доверия. Данные публикации, а также их активное освещение в средствах массовой информации смогли привлечь внимание ученых и разработчиков со всего мира к глубоким сетям.<br />
* 2012 {{---}} Предложение дропаута Г. Хинтоном, А. Крижевски и И. Шутковичем<ref>[https://en.wikipedia.org/wiki/Dropout_(neural_networks) Dropout, Wikipedia]</ref>. Дропаут (от англ. dropout) {{---}} метод регуляризации искусственных нейронных сетей, предназначен для предотвращения переобучения сети.<br />
* 2012 {{---}} Нейронные сети побеждают в ImageNet Challenge<ref>[https://en.wikipedia.org/wiki/ImageNet#ImageNet_Challenge ImageNet Challenge, Wikipedia]</ref>. Данное событие ознаменовало начало эры нейронных сетей и глубокого обучения.<br />
* 2014 {{---}} Группа исследователей под руководством Зеппа Хохрейтера использовала глубокое обучение для определения токсичного воздействия лекарств и бытовых средств на окружающую среду. Данна работа была отмечена первым местом на соревновании "Tox21 Data Challenge"<ref>[https://tripod.nih.gov/tox21/challenge/leaderboard.jsp Tox21 Data Challenge Winners]</ref>.<br />
* 2016 {{---}} Программа для игры в го Google AlphaGo выиграла со счётом 4:1 у Ли Седоля, лучшего международного игрока в эту игру. AlphaGo, разработанная DeepMind, использует глубокое обучение с помощью многоуровневых нейронных сетей.<br />
* 2018 {{---}} Глубокое обучение впервые используется для планирования лучевой терапии<ref>[https://aapm.onlinelibrary.wiley.com/doi/abs/10.1002/mp.13271 Automatic treatment planning based on three‐dimensional dose distribution predicted from deep learning technique]</ref>.<br />
<br />
В настоящее время глубокое обучение используется [[Глубокое обучение#Применения | во многих сферах]].<br />
<br />
== Определение == <br />
'''Глубокое обучение''' {{---}} это класс алгоритмов машинного обучения, который:<br />
<br />
* Использует многослойную систему нелинейных фильтров для извлечения признаков с преобразованиями. Каждый последующий слой получает на входе выходные данные предыдущего слоя. <br />
* Может сочетать алгоритмы [[Обучение с учителем | обучения с учителем]]<sup>[на 12.12.18 не создан]</sup> (пример {{---}} классификация) и [[Обучение без учителя | без учителя ]]<sup>[на 12.12.18 не создан]</sup> (пример {{---}} анализ образца).<br />
* Формирует в процессе обучения слои выявления признаков на нескольких уровнях представлений, которые соответствуют различным уровням абстракции; при этом признаки организованы иерархически {{---}} признаки более высокого уровня являются производными от признаков более низкого уровня.<br />
{|align="center"<br />
|-valign="top"<br />
|[[Файл:Network_dif.png|border|550px|thumb|left|Глубокие и неглубокие нейронные сети.]]<br />
|}<br />
<br />
== Применения ==<br />
* Распознавание речи<ref>[https://en.wikipedia.org/wiki/Speech_recognition Speech recognition, Wikipedia]</ref>. Все основные коммерческие системы распознавания речи (например, Microsoft Cortana, Xbox, Skype Translator, Amazon Alexa, Google Now, Apple Siri, Baidu и iFlyTek) основаны на глубоком обучении.<br />
* [[:Задача нахождения объектов на изображении | Компьютерное зрение]]<sup>[на 06.12.18 не создан]</sup>. На сегодняшний день системы распознавания образов основанные на глубоком обучении уже умеют давать более точные результаты, чем человеческий глаз<ref>[https://www.sciencedirect.com/science/article/pii/S0893608012000524 Multi-column deep neural network for traffic sign classification]</ref>.<br />
* Обработка естественного языка<ref>[https://en.wikipedia.org/wiki/Natural_language_processing Natural language processing, Wikipedia]</ref>. Нейронные сети использовались для реализации языковых моделей еще с начала 2000-х годов. Изобретение LSTM помогло улучшить машинный перевод и языковое моделирование<ref>[https://papers.nips.cc/paper/5346-sequence-to-sequence-learning-with-neural-networks.pdf Sequence to Sequence Learning with Neural Networks]</ref>.<br />
* Обнаружение новых лекарственных препаратов. К примеру, нейронная сеть AtomNet использовалась для прогнозирования новых биомолекул {{---}} кандидатов для лечения таких заболевания, как вирус Эбола и рассеянный склероз.<br />
* Рекомендательные системы<ref>[https://en.wikipedia.org/wiki/Recommender_system Recommender system, Wikipedia]</ref>. На сегодняшний день глубокое обучение применяется для изучения пользовательских предпочтений во многих доменах.<br />
* Предсказание генномных онтологий в биоинформатике<ref>[https://en.wikipedia.org/wiki/Deep_learning#Bioinformatics Deep learning in bioinformatics, Wikipedia]</ref>.<br />
<br />
Полный список возможных применений глубокого обучения<ref>[https://en.wikipedia.org/wiki/Deep_learning#Applications Applications of deep learning, Wikipedia]</ref>.<br />
<br />
== Transfer learning ==<br />
[[Файл:Transfer.jpeg|border|450px|thumb|Transfer learning.]]<br />
'''Transfer learning''' - это применение к решению задачи знаний, извлеченных нейронной сетью при решении другой задачи. <br />
<br />
Глубокие нейронные сети требуют больших объемов данных для сходимости обучения. Поэтому часто встречается ситуация, когда для решаемой задачи недостаточно данных для того, чтобы хорошо натренировать все слои нейросети. Для решения этой проблемы и используется '''transfer learning'''<ref>[https://habr.com/company/binarydistrict/blog/428255/ Transfer Learning: как быстро обучить нейросеть на своих данных, habr.com]</ref>. <br />
<br />
Чаще всего '''transfer learning''' выглядит следующим образом: к натренированной на определенную задачу нейросети добавляется еще несколько скрытый слоев, которые позволяют использовать уже полученные знания для решения более конкретной задачи. Например, знания, полученные при обучении распознаванию различных предметов, могут применяться при решении задачи распознавания еды.<br />
<div style="clear:{{{1|both}}};"></div><br />
== Фреймворки для глубокого обучения ==<br />
* TensorFlow<ref>[https://en.wikipedia.org/wiki/TensorFlow TensorFlow, Wikipedia]</ref><br />
* Microsoft Cognitive Toolkit<ref>[https://en.wikipedia.org/wiki/Microsoft_Cognitive_Toolkit Microsoft Cognitive Toolkit, Wikipedia]</ref><br />
* Wolfram Mathematica<ref>[https://en.wikipedia.org/wiki/Wolfram_Mathematica Wolfram Mathematica, Wikipedia]</ref><br />
* Keras<ref>[https://en.wikipedia.org/wiki/Keras Keras, Wikipedia]</ref><br />
* Deeplearning4j<ref>[https://en.wikipedia.org/wiki/Deeplearning4j Deeplearning4j, Wikipedia]</ref><br />
* Caffe<ref>[https://en.wikipedia.org/wiki/Caffe_(software) Caffe, Wikipedia]</ref><br />
* Torch/PyTorch<ref>[https://habr.com/post/334380 PyTorch — ваш новый фреймворк глубокого обучения, habr]</ref><br />
* MXNet<ref>[https://mxnet.apache.org MXNet, official site]</ref><br />
* Chainer<ref>[https://chainer.org Chainer, official site]</ref><br />
Сопоставление фреймворков, библиотек и отдельных программ для глубокого обучения<ref>[https://en.wikipedia.org/wiki/Comparison_of_deep_learning_software Comparison of deep learning software, Wikipedia]</ref>.<br />
<br />
== См. также ==<br />
* [[:Нейронные сети, перцептрон]]<sup>[на 06.12.18 не создан]</sup><br />
* [[:Сверточные нейронные сети]]<sup>[на 06.12.18 не создан]</sup><br />
* [[:Рекуррентные нейронные сети]]<sup>[на 06.12.18 не создан]</sup><br />
* [[:Обучение с подкреплением]]<sup>[на 06.12.18 не создан]</sup><br />
<br />
== Примечания ==<br />
<references/><br />
<br />
== Источники информации ==<br />
* [https://en.wikipedia.org/wiki/Deep_learning Deep learning, Wikipedia]<br />
* [https://ru.wikipedia.org/wiki/Глубокое_обучение Глубокое обучение, Wikipedia]<br />
* [http://www.deeplearningbook.org/ Deep Learning Book, MIT]<br />
* [https://towardsdatascience.com/multi-layer-neural-networks-with-sigmoid-function-deep-learning-for-rookies-2-bf464f09eb7f Multi-Layer Neural Networks with Sigmoid Function, Towards Data Science]<br />
* [https://www.kaggle.com/dansbecker/rectified-linear-units-relu-in-deep-learning Rectified Linear Units (ReLU) in Deep Learning, Kaggle]</div>80.76.244.114http://neerc.ifmo.ru/wiki/index.php?title=%D0%93%D0%BB%D1%83%D0%B1%D0%BE%D0%BA%D0%BE%D0%B5_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5&diff=68024Глубокое обучение2018-12-25T11:57:01Z<p>80.76.244.114: /* Transfer learning */</p>
<hr />
<div>[[Файл:Ml_areas.jpg|thumb|250px|Глубокое обучение как часть машинного обучения.]]<br />
<br />
'''Глубокое обучение''' (англ. deep learning) {{---}} совокупность широкого семейства методов машинного обучения, основанных на имитации работы человеческого мозга в процессе обработки данных и создания паттернов, используемых для принятия решений<ref>[https://www.investopedia.com/terms/d/deep-learning.asp Deep Learning, Investopedia]</ref>. Как правило, глубокое обучение предназначено для работы с большими объемами данных и использует сложные алгоритмы для обучения модели<ref>[https://www.quora.com/What-is-the-difference-between-Neural-Networks-and-Deep-Learning The difference between neural networks and deep learning]</ref>. На больших датасетах глубокое обучение показывает более высокую точность результатов в сравнении с традиционным машинным обучением. Зависимость производительности (качества результатов) от объема данных представлена на рисунке ниже.<br />
<br />
{|align="center"<br />
|-valign="top"<br />
|[[Файл:Perfm_data.jpg|border|450px|thumb|left|Зависимость производительности от объема данных.]]<br />
|}<br />
<br />
Несмотря на то, что данный раздел машинного обучения появился еще в 1980-х, до недавнего времени его применение было сильно ограничено из-за недостака вычислительных мощностей существовавших компьютеров. Ситуация изменилась только в середине 2000-х.<br />
<br />
На создание моделей глубокого обучения оказали влияние некоторые процессы и паттерны, происходящие в биологических нейронных системах. Несмотря на это, данные модели во многом отличаются от биологического мозга (и в структуре и в функциях), что делает невозможным использование теорем и доказательств, применяющихся в нейробиологии.<br />
<br />
== История ==<br />
* 1943 {{---}} Искусственный нейрон Маккаллока — Питтса<ref>[https://en.wikipedia.org/wiki/Artificial_neuron Artificial neuron, Wikipedia]</ref> {{---}} узел искусственной нейронной сети, являющийся упрощённой моделью естественного нейрона.<br />
* 1949 {{---}} Принцип обучения нейронов Хебба<ref>[https://en.wikipedia.org/wiki/Hebbian_theory Hebbian theory, Wikipedia]</ref> {{---}} изначально наблюдаемая причинно-следственная связь между активациями пре- и постсинаптического нейрона имеет тенденцию к усилению.<br />
* 1957 {{---}} Модель перцептрона предложена Фрэнком Розенблаттом<ref>[https://en.wikipedia.org/wiki/Perceptron Perceptron, Wikipedia]</ref> {{---}} математическая или компьютерная модель восприятия информации мозгом.<br />
* 1960 {{---}} Дельта-правило обучения перцептрона<ref>[https://en.wikipedia.org/wiki/Delta_rule Delta rule, Wikipedia]</ref> {{---}} метод обучения перцептрона по принципу градиентного спуска по поверхности ошибки.<br />
* 1969 {{---}} Выход книги Марвина Минска и Сеймура Паперта "Перцептроны"<ref>[https://en.wikipedia.org/wiki/Perceptrons_(book) Perceptrons book, WIkipedia]</ref>. В данной книге математически показаны ограничения перцептронов.<br />
* 1974 {{---}} Метод обратного распространения ошибки впервые предложен А. И. Галушкиным и Дж. Вербосом<ref>[https://en.wikipedia.org/wiki/Backpropagation Backpropagation, Wikipedia]</ref> {{---}} метод вычисления градиента, который используется при обновлении весов многослойного перцептрона.<br />
* 1980 {{---}} Первая свёрточная нейронная сеть предложена Кунихико Фукусимой<ref>[https://en.wikipedia.org/wiki/Convolutional_neural_network Convolutional_neural_network, Wikipedia]</ref> {{---}} специальная архитектура искусственных нейронных сетей использующая некоторые особенности зрительной коры.<br />
* 1982 {{---}} Рекуррентные нейронные сети предложены Д. Хопфилдом {{---}} вид нейронных сетей, где связи между элементами образуют направленную последовательность.<br />
* 1991 {{---}} Проблема "исчезающего" градиента была сформулирована С. Хочрейтом. Проблема "исчезающего" градиента заключается в быстрой потере информации с течением времени.<br />
* 1997 {{---}} Долгая краткосрочная память предложена С. Хочрейтом и Ю. Шмидхубером<ref>[https://en.wikipedia.org/wiki/Long_short-term_memory Long short-term memory, Wikipedia]</ref>. В отличие от традиционных рекуррентных нейронных сетей, LSTM-сеть хорошо приспособлена к обучению на задачах классификации, обработки и прогнозирования временных рядов в случаях, когда важные события разделены временными промежутками с неопределённой продолжительностью и границами.<br />
* 1998 {{---}} Градиентный спуск для сверточных нейронных сетей предложен Я. Лекуном.<br />
* 2006 {{---}} Публикации Г. Хинтона, С. Осиндера и Я. Теха об обучении сетей глубокого доверия. Данные публикации, а также их активное освещение в средствах массовой информации смогли привлечь внимание ученых и разработчиков со всего мира к глубоким сетям.<br />
* 2012 {{---}} Предложение дропаута Г. Хинтоном, А. Крижевски и И. Шутковичем<ref>[https://en.wikipedia.org/wiki/Dropout_(neural_networks) Dropout, Wikipedia]</ref>. Дропаут (от англ. dropout) {{---}} метод регуляризации искусственных нейронных сетей, предназначен для предотвращения переобучения сети.<br />
* 2012 {{---}} Нейронные сети побеждают в ImageNet Challenge<ref>[https://en.wikipedia.org/wiki/ImageNet#ImageNet_Challenge ImageNet Challenge, Wikipedia]</ref>. Данное событие ознаменовало начало эры нейронных сетей и глубокого обучения.<br />
* 2014 {{---}} Группа исследователей под руководством Зеппа Хохрейтера использовала глубокое обучение для определения токсичного воздействия лекарств и бытовых средств на окружающую среду. Данна работа была отмечена первым местом на соревновании "Tox21 Data Challenge"<ref>[https://tripod.nih.gov/tox21/challenge/leaderboard.jsp Tox21 Data Challenge Winners]</ref>.<br />
* 2016 {{---}} Программа для игры в го Google AlphaGo выиграла со счётом 4:1 у Ли Седоля, лучшего международного игрока в эту игру. AlphaGo, разработанная DeepMind, использует глубокое обучение с помощью многоуровневых нейронных сетей.<br />
* 2018 {{---}} Глубокое обучение впервые используется для планирования лучевой терапии<ref>[https://aapm.onlinelibrary.wiley.com/doi/abs/10.1002/mp.13271 Automatic treatment planning based on three‐dimensional dose distribution predicted from deep learning technique]</ref>.<br />
<br />
В настоящее время глубокое обучение используется [[Глубокое обучение#Применения | во многих сферах]].<br />
<br />
== Определение == <br />
'''Глубокое обучение''' {{---}} это класс алгоритмов машинного обучения, который:<br />
<br />
* Использует многослойную систему нелинейных фильтров для извлечения признаков с преобразованиями. Каждый последующий слой получает на входе выходные данные предыдущего слоя. <br />
* Может сочетать алгоритмы [[Обучение с учителем | обучения с учителем]]<sup>[на 12.12.18 не создан]</sup> (пример {{---}} классификация) и [[Обучение без учителя | без учителя ]]<sup>[на 12.12.18 не создан]</sup> (пример {{---}} анализ образца).<br />
* Формирует в процессе обучения слои выявления признаков на нескольких уровнях представлений, которые соответствуют различным уровням абстракции; при этом признаки организованы иерархически {{---}} признаки более высокого уровня являются производными от признаков более низкого уровня.<br />
{|align="center"<br />
|-valign="top"<br />
|[[Файл:Network_dif.png|border|550px|thumb|left|Глубокие и неглубокие нейронные сети.]]<br />
|}<br />
<br />
== Применения ==<br />
* Распознавание речи<ref>[https://en.wikipedia.org/wiki/Speech_recognition Speech recognition, Wikipedia]</ref>. Все основные коммерческие системы распознавания речи (например, Microsoft Cortana, Xbox, Skype Translator, Amazon Alexa, Google Now, Apple Siri, Baidu и iFlyTek) основаны на глубоком обучении.<br />
* [[:Задача нахождения объектов на изображении | Компьютерное зрение]]<sup>[на 06.12.18 не создан]</sup>. На сегодняшний день системы распознавания образов основанные на глубоком обучении уже умеют давать более точные результаты, чем человеческий глаз<ref>[https://www.sciencedirect.com/science/article/pii/S0893608012000524 Multi-column deep neural network for traffic sign classification]</ref>.<br />
* Обработка естественного языка<ref>[https://en.wikipedia.org/wiki/Natural_language_processing Natural language processing, Wikipedia]</ref>. Нейронные сети использовались для реализации языковых моделей еще с начала 2000-х годов. Изобретение LSTM помогло улучшить машинный перевод и языковое моделирование<ref>[https://papers.nips.cc/paper/5346-sequence-to-sequence-learning-with-neural-networks.pdf Sequence to Sequence Learning with Neural Networks]</ref>.<br />
* Обнаружение новых лекарственных препаратов. К примеру, нейронная сеть AtomNet использовалась для прогнозирования новых биомолекул {{---}} кандидатов для лечения таких заболевания, как вирус Эбола и рассеянный склероз.<br />
* Рекомендательные системы<ref>[https://en.wikipedia.org/wiki/Recommender_system Recommender system, Wikipedia]</ref>. На сегодняшний день глубокое обучение применяется для изучения пользовательских предпочтений во многих доменах.<br />
* Предсказание генномных онтологий в биоинформатике<ref>[https://en.wikipedia.org/wiki/Deep_learning#Bioinformatics Deep learning in bioinformatics, Wikipedia]</ref>.<br />
<br />
Полный список возможных применений глубокого обучения<ref>[https://en.wikipedia.org/wiki/Deep_learning#Applications Applications of deep learning, Wikipedia]</ref>.<br />
<br />
== Transfer learning ==<br />
'''Transfer learning''' - это применение к решению задачи знаний, извлеченных нейронной сетью при решении другой задачи. <br />
<br />
Глубокие нейронные сети требуют больших объемов данных для сходимости обучения. Поэтому часто встречается ситуация, когда для решаемой задачи недостаточно данных для того, чтобы хорошо натренировать все слои нейросети. Для решения этой проблемы и используется '''transfer learning'''<ref>[https://habr.com/company/binarydistrict/blog/428255/ Transfer Learning: как быстро обучить нейросеть на своих данных, habr.com]</ref>. <br />
<br />
{|align="center"<br />
|-valign="top"<br />
|[[Файл:Transfer.jpeg|border|450px|thumb|left|Transfer learning.]]<br />
|}<br />
Чаще всего '''transfer learning''' выглядит следующим образом: к натренированной на определенную задачу нейросети добавляется еще несколько скрытый слоев, которые позволяют использовать уже полученные знания для решения более конкретной задачи. Например, знания, полученные при обучении распознаванию различных предметов, могут применяться при решении задачи распознавания еды.<br />
<br />
== Фреймворки для глубокого обучения ==<br />
* TensorFlow<ref>[https://en.wikipedia.org/wiki/TensorFlow TensorFlow, Wikipedia]</ref><br />
* Microsoft Cognitive Toolkit<ref>[https://en.wikipedia.org/wiki/Microsoft_Cognitive_Toolkit Microsoft Cognitive Toolkit, Wikipedia]</ref><br />
* Wolfram Mathematica<ref>[https://en.wikipedia.org/wiki/Wolfram_Mathematica Wolfram Mathematica, Wikipedia]</ref><br />
* Keras<ref>[https://en.wikipedia.org/wiki/Keras Keras, Wikipedia]</ref><br />
* Deeplearning4j<ref>[https://en.wikipedia.org/wiki/Deeplearning4j Deeplearning4j, Wikipedia]</ref><br />
* Caffe<ref>[https://en.wikipedia.org/wiki/Caffe_(software) Caffe, Wikipedia]</ref><br />
* Torch/PyTorch<ref>[https://habr.com/post/334380 PyTorch — ваш новый фреймворк глубокого обучения, habr]</ref><br />
* MXNet<ref>[https://mxnet.apache.org MXNet, official site]</ref><br />
* Chainer<ref>[https://chainer.org Chainer, official site]</ref><br />
Сопоставление фреймворков, библиотек и отдельных программ для глубокого обучения<ref>[https://en.wikipedia.org/wiki/Comparison_of_deep_learning_software Comparison of deep learning software, Wikipedia]</ref>.<br />
<br />
== См. также ==<br />
* [[:Нейронные сети, перцептрон]]<sup>[на 06.12.18 не создан]</sup><br />
* [[:Сверточные нейронные сети]]<sup>[на 06.12.18 не создан]</sup><br />
* [[:Рекуррентные нейронные сети]]<sup>[на 06.12.18 не создан]</sup><br />
* [[:Обучение с подкреплением]]<sup>[на 06.12.18 не создан]</sup><br />
<br />
== Примечания ==<br />
<references/><br />
<br />
== Источники информации ==<br />
* [https://en.wikipedia.org/wiki/Deep_learning Deep learning, Wikipedia]<br />
* [https://ru.wikipedia.org/wiki/Глубокое_обучение Глубокое обучение, Wikipedia]<br />
* [http://www.deeplearningbook.org/ Deep Learning Book, MIT]<br />
* [https://towardsdatascience.com/multi-layer-neural-networks-with-sigmoid-function-deep-learning-for-rookies-2-bf464f09eb7f Multi-Layer Neural Networks with Sigmoid Function, Towards Data Science]<br />
* [https://www.kaggle.com/dansbecker/rectified-linear-units-relu-in-deep-learning Rectified Linear Units (ReLU) in Deep Learning, Kaggle]</div>80.76.244.114http://neerc.ifmo.ru/wiki/index.php?title=%D0%93%D0%BB%D1%83%D0%B1%D0%BE%D0%BA%D0%BE%D0%B5_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5&diff=68023Глубокое обучение2018-12-25T11:56:08Z<p>80.76.244.114: /* Transfer learning */</p>
<hr />
<div>[[Файл:Ml_areas.jpg|thumb|250px|Глубокое обучение как часть машинного обучения.]]<br />
<br />
'''Глубокое обучение''' (англ. deep learning) {{---}} совокупность широкого семейства методов машинного обучения, основанных на имитации работы человеческого мозга в процессе обработки данных и создания паттернов, используемых для принятия решений<ref>[https://www.investopedia.com/terms/d/deep-learning.asp Deep Learning, Investopedia]</ref>. Как правило, глубокое обучение предназначено для работы с большими объемами данных и использует сложные алгоритмы для обучения модели<ref>[https://www.quora.com/What-is-the-difference-between-Neural-Networks-and-Deep-Learning The difference between neural networks and deep learning]</ref>. На больших датасетах глубокое обучение показывает более высокую точность результатов в сравнении с традиционным машинным обучением. Зависимость производительности (качества результатов) от объема данных представлена на рисунке ниже.<br />
<br />
{|align="center"<br />
|-valign="top"<br />
|[[Файл:Perfm_data.jpg|border|450px|thumb|left|Зависимость производительности от объема данных.]]<br />
|}<br />
<br />
Несмотря на то, что данный раздел машинного обучения появился еще в 1980-х, до недавнего времени его применение было сильно ограничено из-за недостака вычислительных мощностей существовавших компьютеров. Ситуация изменилась только в середине 2000-х.<br />
<br />
На создание моделей глубокого обучения оказали влияние некоторые процессы и паттерны, происходящие в биологических нейронных системах. Несмотря на это, данные модели во многом отличаются от биологического мозга (и в структуре и в функциях), что делает невозможным использование теорем и доказательств, применяющихся в нейробиологии.<br />
<br />
== История ==<br />
* 1943 {{---}} Искусственный нейрон Маккаллока — Питтса<ref>[https://en.wikipedia.org/wiki/Artificial_neuron Artificial neuron, Wikipedia]</ref> {{---}} узел искусственной нейронной сети, являющийся упрощённой моделью естественного нейрона.<br />
* 1949 {{---}} Принцип обучения нейронов Хебба<ref>[https://en.wikipedia.org/wiki/Hebbian_theory Hebbian theory, Wikipedia]</ref> {{---}} изначально наблюдаемая причинно-следственная связь между активациями пре- и постсинаптического нейрона имеет тенденцию к усилению.<br />
* 1957 {{---}} Модель перцептрона предложена Фрэнком Розенблаттом<ref>[https://en.wikipedia.org/wiki/Perceptron Perceptron, Wikipedia]</ref> {{---}} математическая или компьютерная модель восприятия информации мозгом.<br />
* 1960 {{---}} Дельта-правило обучения перцептрона<ref>[https://en.wikipedia.org/wiki/Delta_rule Delta rule, Wikipedia]</ref> {{---}} метод обучения перцептрона по принципу градиентного спуска по поверхности ошибки.<br />
* 1969 {{---}} Выход книги Марвина Минска и Сеймура Паперта "Перцептроны"<ref>[https://en.wikipedia.org/wiki/Perceptrons_(book) Perceptrons book, WIkipedia]</ref>. В данной книге математически показаны ограничения перцептронов.<br />
* 1974 {{---}} Метод обратного распространения ошибки впервые предложен А. И. Галушкиным и Дж. Вербосом<ref>[https://en.wikipedia.org/wiki/Backpropagation Backpropagation, Wikipedia]</ref> {{---}} метод вычисления градиента, который используется при обновлении весов многослойного перцептрона.<br />
* 1980 {{---}} Первая свёрточная нейронная сеть предложена Кунихико Фукусимой<ref>[https://en.wikipedia.org/wiki/Convolutional_neural_network Convolutional_neural_network, Wikipedia]</ref> {{---}} специальная архитектура искусственных нейронных сетей использующая некоторые особенности зрительной коры.<br />
* 1982 {{---}} Рекуррентные нейронные сети предложены Д. Хопфилдом {{---}} вид нейронных сетей, где связи между элементами образуют направленную последовательность.<br />
* 1991 {{---}} Проблема "исчезающего" градиента была сформулирована С. Хочрейтом. Проблема "исчезающего" градиента заключается в быстрой потере информации с течением времени.<br />
* 1997 {{---}} Долгая краткосрочная память предложена С. Хочрейтом и Ю. Шмидхубером<ref>[https://en.wikipedia.org/wiki/Long_short-term_memory Long short-term memory, Wikipedia]</ref>. В отличие от традиционных рекуррентных нейронных сетей, LSTM-сеть хорошо приспособлена к обучению на задачах классификации, обработки и прогнозирования временных рядов в случаях, когда важные события разделены временными промежутками с неопределённой продолжительностью и границами.<br />
* 1998 {{---}} Градиентный спуск для сверточных нейронных сетей предложен Я. Лекуном.<br />
* 2006 {{---}} Публикации Г. Хинтона, С. Осиндера и Я. Теха об обучении сетей глубокого доверия. Данные публикации, а также их активное освещение в средствах массовой информации смогли привлечь внимание ученых и разработчиков со всего мира к глубоким сетям.<br />
* 2012 {{---}} Предложение дропаута Г. Хинтоном, А. Крижевски и И. Шутковичем<ref>[https://en.wikipedia.org/wiki/Dropout_(neural_networks) Dropout, Wikipedia]</ref>. Дропаут (от англ. dropout) {{---}} метод регуляризации искусственных нейронных сетей, предназначен для предотвращения переобучения сети.<br />
* 2012 {{---}} Нейронные сети побеждают в ImageNet Challenge<ref>[https://en.wikipedia.org/wiki/ImageNet#ImageNet_Challenge ImageNet Challenge, Wikipedia]</ref>. Данное событие ознаменовало начало эры нейронных сетей и глубокого обучения.<br />
* 2014 {{---}} Группа исследователей под руководством Зеппа Хохрейтера использовала глубокое обучение для определения токсичного воздействия лекарств и бытовых средств на окружающую среду. Данна работа была отмечена первым местом на соревновании "Tox21 Data Challenge"<ref>[https://tripod.nih.gov/tox21/challenge/leaderboard.jsp Tox21 Data Challenge Winners]</ref>.<br />
* 2016 {{---}} Программа для игры в го Google AlphaGo выиграла со счётом 4:1 у Ли Седоля, лучшего международного игрока в эту игру. AlphaGo, разработанная DeepMind, использует глубокое обучение с помощью многоуровневых нейронных сетей.<br />
* 2018 {{---}} Глубокое обучение впервые используется для планирования лучевой терапии<ref>[https://aapm.onlinelibrary.wiley.com/doi/abs/10.1002/mp.13271 Automatic treatment planning based on three‐dimensional dose distribution predicted from deep learning technique]</ref>.<br />
<br />
В настоящее время глубокое обучение используется [[Глубокое обучение#Применения | во многих сферах]].<br />
<br />
== Определение == <br />
'''Глубокое обучение''' {{---}} это класс алгоритмов машинного обучения, который:<br />
<br />
* Использует многослойную систему нелинейных фильтров для извлечения признаков с преобразованиями. Каждый последующий слой получает на входе выходные данные предыдущего слоя. <br />
* Может сочетать алгоритмы [[Обучение с учителем | обучения с учителем]]<sup>[на 12.12.18 не создан]</sup> (пример {{---}} классификация) и [[Обучение без учителя | без учителя ]]<sup>[на 12.12.18 не создан]</sup> (пример {{---}} анализ образца).<br />
* Формирует в процессе обучения слои выявления признаков на нескольких уровнях представлений, которые соответствуют различным уровням абстракции; при этом признаки организованы иерархически {{---}} признаки более высокого уровня являются производными от признаков более низкого уровня.<br />
{|align="center"<br />
|-valign="top"<br />
|[[Файл:Network_dif.png|border|550px|thumb|left|Глубокие и неглубокие нейронные сети.]]<br />
|}<br />
<br />
== Применения ==<br />
* Распознавание речи<ref>[https://en.wikipedia.org/wiki/Speech_recognition Speech recognition, Wikipedia]</ref>. Все основные коммерческие системы распознавания речи (например, Microsoft Cortana, Xbox, Skype Translator, Amazon Alexa, Google Now, Apple Siri, Baidu и iFlyTek) основаны на глубоком обучении.<br />
* [[:Задача нахождения объектов на изображении | Компьютерное зрение]]<sup>[на 06.12.18 не создан]</sup>. На сегодняшний день системы распознавания образов основанные на глубоком обучении уже умеют давать более точные результаты, чем человеческий глаз<ref>[https://www.sciencedirect.com/science/article/pii/S0893608012000524 Multi-column deep neural network for traffic sign classification]</ref>.<br />
* Обработка естественного языка<ref>[https://en.wikipedia.org/wiki/Natural_language_processing Natural language processing, Wikipedia]</ref>. Нейронные сети использовались для реализации языковых моделей еще с начала 2000-х годов. Изобретение LSTM помогло улучшить машинный перевод и языковое моделирование<ref>[https://papers.nips.cc/paper/5346-sequence-to-sequence-learning-with-neural-networks.pdf Sequence to Sequence Learning with Neural Networks]</ref>.<br />
* Обнаружение новых лекарственных препаратов. К примеру, нейронная сеть AtomNet использовалась для прогнозирования новых биомолекул {{---}} кандидатов для лечения таких заболевания, как вирус Эбола и рассеянный склероз.<br />
* Рекомендательные системы<ref>[https://en.wikipedia.org/wiki/Recommender_system Recommender system, Wikipedia]</ref>. На сегодняшний день глубокое обучение применяется для изучения пользовательских предпочтений во многих доменах.<br />
* Предсказание генномных онтологий в биоинформатике<ref>[https://en.wikipedia.org/wiki/Deep_learning#Bioinformatics Deep learning in bioinformatics, Wikipedia]</ref>.<br />
<br />
Полный список возможных применений глубокого обучения<ref>[https://en.wikipedia.org/wiki/Deep_learning#Applications Applications of deep learning, Wikipedia]</ref>.<br />
<br />
== Transfer learning ==<br />
'''Transfer learning''' - это применение к решению задачи знаний, извлеченных нейронной сетью при решении другой задачи. <br />
<br />
Глубокие нейронные сети требуют больших объемов данных для сходимости обучения. Поэтому часто встречается ситуация, когда для решаемой задачи недостаточно данных для того, чтобы хорошо натренировать все слои нейросети. Для решения этой проблемы и используется '''transfer learning'''<ref>[https://habr.com/company/binarydistrict/blog/428255/ Transfer Learning: как быстро обучить нейросеть на своих данных, habr.com]</ref>. <br />
<br />
{|align="center"<br />
|-valign="top"<br />
|[[Файл:Transfer.jpeg|border|450px|thumb|left|Transfer learning.]]<br />
|}<br />
Чаще всего '''transfer learning''' выглядит следующим образом: к натренированной на определенную задачу нейросети добавляется еще несколько скрытый слоев, которые позволяют использовать уже полученные знания для решения более конкретной задачи. Например, знания, полученные при обучении распознаванию различных предметов, могут применяться при попытке распознавания еды.<br />
<br />
== Фреймворки для глубокого обучения ==<br />
* TensorFlow<ref>[https://en.wikipedia.org/wiki/TensorFlow TensorFlow, Wikipedia]</ref><br />
* Microsoft Cognitive Toolkit<ref>[https://en.wikipedia.org/wiki/Microsoft_Cognitive_Toolkit Microsoft Cognitive Toolkit, Wikipedia]</ref><br />
* Wolfram Mathematica<ref>[https://en.wikipedia.org/wiki/Wolfram_Mathematica Wolfram Mathematica, Wikipedia]</ref><br />
* Keras<ref>[https://en.wikipedia.org/wiki/Keras Keras, Wikipedia]</ref><br />
* Deeplearning4j<ref>[https://en.wikipedia.org/wiki/Deeplearning4j Deeplearning4j, Wikipedia]</ref><br />
* Caffe<ref>[https://en.wikipedia.org/wiki/Caffe_(software) Caffe, Wikipedia]</ref><br />
* Torch/PyTorch<ref>[https://habr.com/post/334380 PyTorch — ваш новый фреймворк глубокого обучения, habr]</ref><br />
* MXNet<ref>[https://mxnet.apache.org MXNet, official site]</ref><br />
* Chainer<ref>[https://chainer.org Chainer, official site]</ref><br />
Сопоставление фреймворков, библиотек и отдельных программ для глубокого обучения<ref>[https://en.wikipedia.org/wiki/Comparison_of_deep_learning_software Comparison of deep learning software, Wikipedia]</ref>.<br />
<br />
== См. также ==<br />
* [[:Нейронные сети, перцептрон]]<sup>[на 06.12.18 не создан]</sup><br />
* [[:Сверточные нейронные сети]]<sup>[на 06.12.18 не создан]</sup><br />
* [[:Рекуррентные нейронные сети]]<sup>[на 06.12.18 не создан]</sup><br />
* [[:Обучение с подкреплением]]<sup>[на 06.12.18 не создан]</sup><br />
<br />
== Примечания ==<br />
<references/><br />
<br />
== Источники информации ==<br />
* [https://en.wikipedia.org/wiki/Deep_learning Deep learning, Wikipedia]<br />
* [https://ru.wikipedia.org/wiki/Глубокое_обучение Глубокое обучение, Wikipedia]<br />
* [http://www.deeplearningbook.org/ Deep Learning Book, MIT]<br />
* [https://towardsdatascience.com/multi-layer-neural-networks-with-sigmoid-function-deep-learning-for-rookies-2-bf464f09eb7f Multi-Layer Neural Networks with Sigmoid Function, Towards Data Science]<br />
* [https://www.kaggle.com/dansbecker/rectified-linear-units-relu-in-deep-learning Rectified Linear Units (ReLU) in Deep Learning, Kaggle]</div>80.76.244.114http://neerc.ifmo.ru/wiki/index.php?title=%D0%93%D0%BB%D1%83%D0%B1%D0%BE%D0%BA%D0%BE%D0%B5_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5&diff=68022Глубокое обучение2018-12-25T11:54:20Z<p>80.76.244.114: </p>
<hr />
<div>[[Файл:Ml_areas.jpg|thumb|250px|Глубокое обучение как часть машинного обучения.]]<br />
<br />
'''Глубокое обучение''' (англ. deep learning) {{---}} совокупность широкого семейства методов машинного обучения, основанных на имитации работы человеческого мозга в процессе обработки данных и создания паттернов, используемых для принятия решений<ref>[https://www.investopedia.com/terms/d/deep-learning.asp Deep Learning, Investopedia]</ref>. Как правило, глубокое обучение предназначено для работы с большими объемами данных и использует сложные алгоритмы для обучения модели<ref>[https://www.quora.com/What-is-the-difference-between-Neural-Networks-and-Deep-Learning The difference between neural networks and deep learning]</ref>. На больших датасетах глубокое обучение показывает более высокую точность результатов в сравнении с традиционным машинным обучением. Зависимость производительности (качества результатов) от объема данных представлена на рисунке ниже.<br />
<br />
{|align="center"<br />
|-valign="top"<br />
|[[Файл:Perfm_data.jpg|border|450px|thumb|left|Зависимость производительности от объема данных.]]<br />
|}<br />
<br />
Несмотря на то, что данный раздел машинного обучения появился еще в 1980-х, до недавнего времени его применение было сильно ограничено из-за недостака вычислительных мощностей существовавших компьютеров. Ситуация изменилась только в середине 2000-х.<br />
<br />
На создание моделей глубокого обучения оказали влияние некоторые процессы и паттерны, происходящие в биологических нейронных системах. Несмотря на это, данные модели во многом отличаются от биологического мозга (и в структуре и в функциях), что делает невозможным использование теорем и доказательств, применяющихся в нейробиологии.<br />
<br />
== История ==<br />
* 1943 {{---}} Искусственный нейрон Маккаллока — Питтса<ref>[https://en.wikipedia.org/wiki/Artificial_neuron Artificial neuron, Wikipedia]</ref> {{---}} узел искусственной нейронной сети, являющийся упрощённой моделью естественного нейрона.<br />
* 1949 {{---}} Принцип обучения нейронов Хебба<ref>[https://en.wikipedia.org/wiki/Hebbian_theory Hebbian theory, Wikipedia]</ref> {{---}} изначально наблюдаемая причинно-следственная связь между активациями пре- и постсинаптического нейрона имеет тенденцию к усилению.<br />
* 1957 {{---}} Модель перцептрона предложена Фрэнком Розенблаттом<ref>[https://en.wikipedia.org/wiki/Perceptron Perceptron, Wikipedia]</ref> {{---}} математическая или компьютерная модель восприятия информации мозгом.<br />
* 1960 {{---}} Дельта-правило обучения перцептрона<ref>[https://en.wikipedia.org/wiki/Delta_rule Delta rule, Wikipedia]</ref> {{---}} метод обучения перцептрона по принципу градиентного спуска по поверхности ошибки.<br />
* 1969 {{---}} Выход книги Марвина Минска и Сеймура Паперта "Перцептроны"<ref>[https://en.wikipedia.org/wiki/Perceptrons_(book) Perceptrons book, WIkipedia]</ref>. В данной книге математически показаны ограничения перцептронов.<br />
* 1974 {{---}} Метод обратного распространения ошибки впервые предложен А. И. Галушкиным и Дж. Вербосом<ref>[https://en.wikipedia.org/wiki/Backpropagation Backpropagation, Wikipedia]</ref> {{---}} метод вычисления градиента, который используется при обновлении весов многослойного перцептрона.<br />
* 1980 {{---}} Первая свёрточная нейронная сеть предложена Кунихико Фукусимой<ref>[https://en.wikipedia.org/wiki/Convolutional_neural_network Convolutional_neural_network, Wikipedia]</ref> {{---}} специальная архитектура искусственных нейронных сетей использующая некоторые особенности зрительной коры.<br />
* 1982 {{---}} Рекуррентные нейронные сети предложены Д. Хопфилдом {{---}} вид нейронных сетей, где связи между элементами образуют направленную последовательность.<br />
* 1991 {{---}} Проблема "исчезающего" градиента была сформулирована С. Хочрейтом. Проблема "исчезающего" градиента заключается в быстрой потере информации с течением времени.<br />
* 1997 {{---}} Долгая краткосрочная память предложена С. Хочрейтом и Ю. Шмидхубером<ref>[https://en.wikipedia.org/wiki/Long_short-term_memory Long short-term memory, Wikipedia]</ref>. В отличие от традиционных рекуррентных нейронных сетей, LSTM-сеть хорошо приспособлена к обучению на задачах классификации, обработки и прогнозирования временных рядов в случаях, когда важные события разделены временными промежутками с неопределённой продолжительностью и границами.<br />
* 1998 {{---}} Градиентный спуск для сверточных нейронных сетей предложен Я. Лекуном.<br />
* 2006 {{---}} Публикации Г. Хинтона, С. Осиндера и Я. Теха об обучении сетей глубокого доверия. Данные публикации, а также их активное освещение в средствах массовой информации смогли привлечь внимание ученых и разработчиков со всего мира к глубоким сетям.<br />
* 2012 {{---}} Предложение дропаута Г. Хинтоном, А. Крижевски и И. Шутковичем<ref>[https://en.wikipedia.org/wiki/Dropout_(neural_networks) Dropout, Wikipedia]</ref>. Дропаут (от англ. dropout) {{---}} метод регуляризации искусственных нейронных сетей, предназначен для предотвращения переобучения сети.<br />
* 2012 {{---}} Нейронные сети побеждают в ImageNet Challenge<ref>[https://en.wikipedia.org/wiki/ImageNet#ImageNet_Challenge ImageNet Challenge, Wikipedia]</ref>. Данное событие ознаменовало начало эры нейронных сетей и глубокого обучения.<br />
* 2014 {{---}} Группа исследователей под руководством Зеппа Хохрейтера использовала глубокое обучение для определения токсичного воздействия лекарств и бытовых средств на окружающую среду. Данна работа была отмечена первым местом на соревновании "Tox21 Data Challenge"<ref>[https://tripod.nih.gov/tox21/challenge/leaderboard.jsp Tox21 Data Challenge Winners]</ref>.<br />
* 2016 {{---}} Программа для игры в го Google AlphaGo выиграла со счётом 4:1 у Ли Седоля, лучшего международного игрока в эту игру. AlphaGo, разработанная DeepMind, использует глубокое обучение с помощью многоуровневых нейронных сетей.<br />
* 2018 {{---}} Глубокое обучение впервые используется для планирования лучевой терапии<ref>[https://aapm.onlinelibrary.wiley.com/doi/abs/10.1002/mp.13271 Automatic treatment planning based on three‐dimensional dose distribution predicted from deep learning technique]</ref>.<br />
<br />
В настоящее время глубокое обучение используется [[Глубокое обучение#Применения | во многих сферах]].<br />
<br />
== Определение == <br />
'''Глубокое обучение''' {{---}} это класс алгоритмов машинного обучения, который:<br />
<br />
* Использует многослойную систему нелинейных фильтров для извлечения признаков с преобразованиями. Каждый последующий слой получает на входе выходные данные предыдущего слоя. <br />
* Может сочетать алгоритмы [[Обучение с учителем | обучения с учителем]]<sup>[на 12.12.18 не создан]</sup> (пример {{---}} классификация) и [[Обучение без учителя | без учителя ]]<sup>[на 12.12.18 не создан]</sup> (пример {{---}} анализ образца).<br />
* Формирует в процессе обучения слои выявления признаков на нескольких уровнях представлений, которые соответствуют различным уровням абстракции; при этом признаки организованы иерархически {{---}} признаки более высокого уровня являются производными от признаков более низкого уровня.<br />
{|align="center"<br />
|-valign="top"<br />
|[[Файл:Network_dif.png|border|550px|thumb|left|Глубокие и неглубокие нейронные сети.]]<br />
|}<br />
<br />
== Применения ==<br />
* Распознавание речи<ref>[https://en.wikipedia.org/wiki/Speech_recognition Speech recognition, Wikipedia]</ref>. Все основные коммерческие системы распознавания речи (например, Microsoft Cortana, Xbox, Skype Translator, Amazon Alexa, Google Now, Apple Siri, Baidu и iFlyTek) основаны на глубоком обучении.<br />
* [[:Задача нахождения объектов на изображении | Компьютерное зрение]]<sup>[на 06.12.18 не создан]</sup>. На сегодняшний день системы распознавания образов основанные на глубоком обучении уже умеют давать более точные результаты, чем человеческий глаз<ref>[https://www.sciencedirect.com/science/article/pii/S0893608012000524 Multi-column deep neural network for traffic sign classification]</ref>.<br />
* Обработка естественного языка<ref>[https://en.wikipedia.org/wiki/Natural_language_processing Natural language processing, Wikipedia]</ref>. Нейронные сети использовались для реализации языковых моделей еще с начала 2000-х годов. Изобретение LSTM помогло улучшить машинный перевод и языковое моделирование<ref>[https://papers.nips.cc/paper/5346-sequence-to-sequence-learning-with-neural-networks.pdf Sequence to Sequence Learning with Neural Networks]</ref>.<br />
* Обнаружение новых лекарственных препаратов. К примеру, нейронная сеть AtomNet использовалась для прогнозирования новых биомолекул {{---}} кандидатов для лечения таких заболевания, как вирус Эбола и рассеянный склероз.<br />
* Рекомендательные системы<ref>[https://en.wikipedia.org/wiki/Recommender_system Recommender system, Wikipedia]</ref>. На сегодняшний день глубокое обучение применяется для изучения пользовательских предпочтений во многих доменах.<br />
* Предсказание генномных онтологий в биоинформатике<ref>[https://en.wikipedia.org/wiki/Deep_learning#Bioinformatics Deep learning in bioinformatics, Wikipedia]</ref>.<br />
<br />
Полный список возможных применений глубокого обучения<ref>[https://en.wikipedia.org/wiki/Deep_learning#Applications Applications of deep learning, Wikipedia]</ref>.<br />
<br />
== Transfer learning ==<br />
'''Transfer learning''' - это применение к решению задачи знаний, извлеченных нейронной сетью при решении другой задачи. <br />
<br />
Глубокие нейронные сети требуют больших объемов данных для сходимости обучения. Поэтому часто встречается ситуация, когда для решаемой задачи недостаточно данных для того, чтобы хорошо натренировать все слои нейросети. Для решения этой проблемы и используется '''transfer learning'''<ref>[https://habr.com/company/binarydistrict/blog/428255/ Transfer Learning: как быстро обучить нейросеть на своих данных, habr.com]</ref>. <br />
<br />
{|align="center"<br />
|-valign="top"<br />
|[[Файл:Transfer.jpeg|border|450px|thumb|left|Transfer learning.]]<br />
|}<br />
Чаще всего '''transfer learning''' выглядит следующим образом: к натренированной на определенную задачу нейросети добавляется еще несколько скрытый слоев, которые позволяют использовать уже полученные знания для решения более конкретной задачи. Например, знания, полученные при обучении распознаванию деревьев, могут применяться при попытке распознавания новогодних ёлок.<br />
<br />
== Фреймворки для глубокого обучения ==<br />
* TensorFlow<ref>[https://en.wikipedia.org/wiki/TensorFlow TensorFlow, Wikipedia]</ref><br />
* Microsoft Cognitive Toolkit<ref>[https://en.wikipedia.org/wiki/Microsoft_Cognitive_Toolkit Microsoft Cognitive Toolkit, Wikipedia]</ref><br />
* Wolfram Mathematica<ref>[https://en.wikipedia.org/wiki/Wolfram_Mathematica Wolfram Mathematica, Wikipedia]</ref><br />
* Keras<ref>[https://en.wikipedia.org/wiki/Keras Keras, Wikipedia]</ref><br />
* Deeplearning4j<ref>[https://en.wikipedia.org/wiki/Deeplearning4j Deeplearning4j, Wikipedia]</ref><br />
* Caffe<ref>[https://en.wikipedia.org/wiki/Caffe_(software) Caffe, Wikipedia]</ref><br />
* Torch/PyTorch<ref>[https://habr.com/post/334380 PyTorch — ваш новый фреймворк глубокого обучения, habr]</ref><br />
* MXNet<ref>[https://mxnet.apache.org MXNet, official site]</ref><br />
* Chainer<ref>[https://chainer.org Chainer, official site]</ref><br />
Сопоставление фреймворков, библиотек и отдельных программ для глубокого обучения<ref>[https://en.wikipedia.org/wiki/Comparison_of_deep_learning_software Comparison of deep learning software, Wikipedia]</ref>.<br />
<br />
== См. также ==<br />
* [[:Нейронные сети, перцептрон]]<sup>[на 06.12.18 не создан]</sup><br />
* [[:Сверточные нейронные сети]]<sup>[на 06.12.18 не создан]</sup><br />
* [[:Рекуррентные нейронные сети]]<sup>[на 06.12.18 не создан]</sup><br />
* [[:Обучение с подкреплением]]<sup>[на 06.12.18 не создан]</sup><br />
<br />
== Примечания ==<br />
<references/><br />
<br />
== Источники информации ==<br />
* [https://en.wikipedia.org/wiki/Deep_learning Deep learning, Wikipedia]<br />
* [https://ru.wikipedia.org/wiki/Глубокое_обучение Глубокое обучение, Wikipedia]<br />
* [http://www.deeplearningbook.org/ Deep Learning Book, MIT]<br />
* [https://towardsdatascience.com/multi-layer-neural-networks-with-sigmoid-function-deep-learning-for-rookies-2-bf464f09eb7f Multi-Layer Neural Networks with Sigmoid Function, Towards Data Science]<br />
* [https://www.kaggle.com/dansbecker/rectified-linear-units-relu-in-deep-learning Rectified Linear Units (ReLU) in Deep Learning, Kaggle]</div>80.76.244.114http://neerc.ifmo.ru/wiki/index.php?title=%D0%93%D0%BB%D1%83%D0%B1%D0%BE%D0%BA%D0%BE%D0%B5_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5&diff=68019Глубокое обучение2018-12-24T17:45:44Z<p>80.76.244.114: /* Transfer learning */</p>
<hr />
<div>'''Глубокое обучение''' (англ. deep learning) {{---}} совокупность широкого семейства методов машинного обучения, основанных на имитации работы человеческого мозга в процессе обработки данных и создания паттернов, используемых для принятия решений<ref>[https://www.investopedia.com/terms/d/deep-learning.asp Deep Learning, Investopedia]</ref>. Как правило, глубокое обучение предназначено для работы с большими объемами данных и использует сложные алгоритмы для обучения модели<ref>[https://www.quora.com/What-is-the-difference-between-Neural-Networks-and-Deep-Learning The difference between neural networks and deep learning]</ref>. На больших датасетах глубокое обучение показывает более высокую точность результатов в сравнении с традиционным машинным обучением. Зависимость производительности (качества результатов) от объема данных представлена на рисунке ниже.<br />
<br />
{|align="center"<br />
|-valign="top"<br />
|[[Файл:Perfm_data.jpg|border|450px|thumb|left|Зависимость производительности от объема данных.]]<br />
|}<br />
<br />
Несмотря на то, что данный раздел машинного обучения появился еще в 1980-х, до недавнего времени его применение было сильно ограничено из-за недостака вычислительных мощностей существовавших компьютеров. Ситуация изменилась только в середине 2000-х.<br />
<br />
На создание моделей глубокого обучения оказали влияние некоторые процессы и паттерны, происходящие в биологических нейронных системах. Несмотря на это, данные модели во многом отличаются от биологического мозга (и в структуре и в функциях), что делает невозможным использование теорем и доказательств, применяющихся в нейробиологии.<br />
<br />
Соотношение машинного обучения и глубокого обучения представлено на рисунке ниже.<br />
{|align="center"<br />
|-valign="top"<br />
|[[Файл:Ml_areas.jpg|border|450px|thumb|left|Глубокое обучение как часть машинного обучения.]]<br />
|}<br />
<br />
== История ==<br />
* 1943 {{---}} Искусственный нейрон Маккаллока — Питтса<ref>[https://en.wikipedia.org/wiki/Artificial_neuron Artificial neuron, Wikipedia]</ref> {{---}} узел искусственной нейронной сети, являющийся упрощённой моделью естественного нейрона.<br />
* 1949 {{---}} Принцип обучения нейронов Хебба<ref>[https://en.wikipedia.org/wiki/Hebbian_theory Hebbian theory, Wikipedia]</ref> {{---}} изначально наблюдаемая причинно-следственная связь между активациями пре- и постсинаптического нейрона имеет тенденцию к усилению.<br />
* 1957 {{---}} Модель перцептрона предложена Фрэнком Розенблаттом<ref>[https://en.wikipedia.org/wiki/Perceptron Perceptron, Wikipedia]</ref> {{---}} математическая или компьютерная модель восприятия информации мозгом.<br />
* 1960 {{---}} Дельта-правило обучения перцептрона<ref>[https://en.wikipedia.org/wiki/Delta_rule Delta rule, Wikipedia]</ref> {{---}} метод обучения перцептрона по принципу градиентного спуска по поверхности ошибки.<br />
* 1969 {{---}} Выход книги Марвина Минска и Сеймура Паперта "Перцептроны"<ref>[https://en.wikipedia.org/wiki/Perceptrons_(book) Perceptrons book, WIkipedia]</ref>. В данной книге математически показаны ограничения перцептронов.<br />
* 1974 {{---}} Метод обратного распространения ошибки впервые предложен А. И. Галушкиным и Дж. Вербосом<ref>[https://en.wikipedia.org/wiki/Backpropagation Backpropagation, Wikipedia]</ref> {{---}} метод вычисления градиента, который используется при обновлении весов многослойного перцептрона.<br />
* 1980 {{---}} Первая свёрточная нейронная сеть предложена Кунихико Фукусимой<ref>[https://en.wikipedia.org/wiki/Convolutional_neural_network Convolutional_neural_network, Wikipedia]</ref> {{---}} специальная архитектура искусственных нейронных сетей использующая некоторые особенности зрительной коры.<br />
* 1982 {{---}} Рекуррентные нейронные сети предложены Д. Хопфилдом {{---}} вид нейронных сетей, где связи между элементами образуют направленную последовательность.<br />
* 1991 {{---}} Проблема "исчезающего" градиента была сформулирована С. Хочрейтом. Проблема "исчезающего" градиента заключается в быстрой потере информации с течением времени.<br />
* 1997 {{---}} Долгая краткосрочная память предложена С. Хочрейтом и Ю. Шмидхубером<ref>[https://en.wikipedia.org/wiki/Long_short-term_memory Long short-term memory, Wikipedia]</ref>. В отличие от традиционных рекуррентных нейронных сетей, LSTM-сеть хорошо приспособлена к обучению на задачах классификации, обработки и прогнозирования временных рядов в случаях, когда важные события разделены временными промежутками с неопределённой продолжительностью и границами.<br />
* 1998 {{---}} Градиентный спуск для сверточных нейронных сетей предложен Я. Лекуном.<br />
* 2006 {{---}} Публикации Г. Хинтона, С. Осиндера и Я. Теха об обучении сетей глубокого доверия. Данные публикации, а также их активное освещение в средствах массовой информации смогли привлечь внимание ученых и разработчиков со всего мира к глубоким сетям.<br />
* 2012 {{---}} Предложение дропаута Г. Хинтоном, А. Крижевски и И. Шутковичем<ref>[https://en.wikipedia.org/wiki/Dropout_(neural_networks) Dropout, Wikipedia]</ref>. Дропаут (от англ. dropout) {{---}} метод регуляризации искусственных нейронных сетей, предназначен для предотвращения переобучения сети.<br />
* 2012 {{---}} Нейронные сети побеждают в ImageNet Challenge<ref>[https://en.wikipedia.org/wiki/ImageNet#ImageNet_Challenge ImageNet Challenge, Wikipedia]</ref>. Данное событие ознаменовало начало эры нейронных сетей и глубокого обучения.<br />
* 2014 {{---}} Группа исследователей под руководством Зеппа Хохрейтера использовала глубокое обучение для определения токсичного воздействия лекарств и бытовых средств на окружающую среду. Данна работа была отмечена первым местом на соревновании "Tox21 Data Challenge"<ref>[https://tripod.nih.gov/tox21/challenge/leaderboard.jsp Tox21 Data Challenge Winners]</ref>.<br />
* 2016 {{---}} Программа для игры в го Google AlphaGo выиграла со счётом 4:1 у Ли Седоля, лучшего международного игрока в эту игру. AlphaGo, разработанная DeepMind, использует глубокое обучение с помощью многоуровневых нейронных сетей.<br />
* 2018 {{---}} Глубокое обучение впервые используется для планирования лучевой терапии<ref>[https://aapm.onlinelibrary.wiley.com/doi/abs/10.1002/mp.13271 Automatic treatment planning based on three‐dimensional dose distribution predicted from deep learning technique]</ref>.<br />
<br />
В настоящее время глубокое обучение используется [[Глубокое обучение#Применения | во многих сферах]].<br />
<br />
== Определение == <br />
'''Глубокое обучение''' {{---}} это класс алгоритмов машинного обучения, который:<br />
<br />
* Использует многослойную систему нелинейных фильтров для извлечения признаков с преобразованиями. Каждый последующий слой получает на входе выходные данные предыдущего слоя. <br />
* Может сочетать алгоритмы [[Обучение с учителем | обучения с учителем]]<sup>[на 12.12.18 не создан]</sup> (пример {{---}} классификация) и [[Обучение без учителя | без учителя ]]<sup>[на 12.12.18 не создан]</sup> (пример {{---}} анализ образца).<br />
* Формирует в процессе обучения слои выявления признаков на нескольких уровнях представлений, которые соответствуют различным уровням абстракции; при этом признаки организованы иерархически {{---}} признаки более высокого уровня являются производными от признаков более низкого уровня.<br />
{|align="center"<br />
|-valign="top"<br />
|[[Файл:Network_dif.png|border|550px|thumb|left|Глубокие и неглубокие нейронные сети.]]<br />
|}<br />
<br />
== Применения ==<br />
* Распознавание речи<ref>[https://en.wikipedia.org/wiki/Speech_recognition Speech recognition, Wikipedia]</ref>. Все основные коммерческие системы распознавания речи (например, Microsoft Cortana, Xbox, Skype Translator, Amazon Alexa, Google Now, Apple Siri, Baidu и iFlyTek) основаны на глубоком обучении.<br />
* [[:Задача нахождения объектов на изображении | Компьютерное зрение]]<sup>[на 06.12.18 не создан]</sup>. На сегодняшний день системы распознавания образов основанные на глубоком обучении уже умеют давать более точные результаты, чем человеческий глаз<ref>[https://www.sciencedirect.com/science/article/pii/S0893608012000524 Multi-column deep neural network for traffic sign classification]</ref>.<br />
* Обработка естественного языка<ref>[https://en.wikipedia.org/wiki/Natural_language_processing Natural language processing, Wikipedia]</ref>. Нейронные сети использовались для реализации языковых моделей еще с начала 2000-х годов. Изобретение LSTM помогло улучшить машинный перевод и языковое моделирование<ref>[https://papers.nips.cc/paper/5346-sequence-to-sequence-learning-with-neural-networks.pdf Sequence to Sequence Learning with Neural Networks]</ref>.<br />
* Обнаружение новых лекарственных препаратов. К примеру, нейронная сеть AtomNet использовалась для прогнозирования новых биомолекул {{---}} кандидатов для лечения таких заболевания, как вирус Эбола и рассеянный склероз.<br />
* Рекомендательные системы<ref>[https://en.wikipedia.org/wiki/Recommender_system Recommender system, Wikipedia]</ref>. На сегодняшний день глубокое обучение применяется для изучения пользовательских предпочтений во многих доменах.<br />
* Предсказание генномных онтологий в биоинформатике<ref>[https://en.wikipedia.org/wiki/Deep_learning#Bioinformatics Deep learning in bioinformatics, Wikipedia]</ref>.<br />
<br />
Полный список возможных применений глубокого обучения<ref>[https://en.wikipedia.org/wiki/Deep_learning#Applications Applications of deep learning, Wikipedia]</ref>.<br />
<br />
== Transfer learning ==<br />
'''Transfer learning''' - это применение к решению задачи знаний, извлеченных нейронной сетью при решении другой задачи. <br />
<br />
Глубокие нейронные сети требуют больших объемов данных для сходимости обучения. Поэтому часто встречается ситуация, когда для решаемой задачи недостаточно данных для того, чтобы хорошо натренировать все слои нейросети. Для решения этой проблемы и используется '''transfer learning'''<ref>[https://habr.com/company/binarydistrict/blog/428255/ Transfer Learning: как быстро обучить нейросеть на своих данных, habr.com]</ref>. <br />
<br />
{|align="center"<br />
|-valign="top"<br />
|[[Файл:Transfer.jpeg|border|450px|thumb|left|Transfer learning.]]<br />
|}<br />
Чаще всего '''transfer learning''' выглядит следующим образом: нейросеть сначала обучается на большом объеме данных, затем — на целевом наборе. Например, знания, полученные при обучении распознаванию деревьев, могут применяться при попытке распознавания новогодних ёлок.<br />
<br />
== Фреймворки для глубокого обучения ==<br />
* TensorFlow<ref>[https://en.wikipedia.org/wiki/TensorFlow TensorFlow, Wikipedia]</ref><br />
* Microsoft Cognitive Toolkit<ref>[https://en.wikipedia.org/wiki/Microsoft_Cognitive_Toolkit Microsoft Cognitive Toolkit, Wikipedia]</ref><br />
* Wolfram Mathematica<ref>[https://en.wikipedia.org/wiki/Wolfram_Mathematica Wolfram Mathematica, Wikipedia]</ref><br />
* Keras<ref>[https://en.wikipedia.org/wiki/Keras Keras, Wikipedia]</ref><br />
* Deeplearning4j<ref>[https://en.wikipedia.org/wiki/Deeplearning4j Deeplearning4j, Wikipedia]</ref><br />
* Caffe<ref>[https://en.wikipedia.org/wiki/Caffe_(software) Caffe, Wikipedia]</ref><br />
* Torch/PyTorch<ref>[https://habr.com/post/334380 PyTorch — ваш новый фреймворк глубокого обучения, habr]</ref><br />
* MXNet<ref>[https://mxnet.apache.org MXNet, official site]</ref><br />
* Chainer<ref>[https://chainer.org Chainer, official site]</ref><br />
Сопоставление фреймворков, библиотек и отдельных программ для глубокого обучения<ref>[https://en.wikipedia.org/wiki/Comparison_of_deep_learning_software Comparison of deep learning software, Wikipedia]</ref>.<br />
<br />
== См. также ==<br />
* [[:Нейронные сети, перцептрон]]<sup>[на 06.12.18 не создан]</sup><br />
* [[:Сверточные нейронные сети]]<sup>[на 06.12.18 не создан]</sup><br />
* [[:Рекуррентные нейронные сети]]<sup>[на 06.12.18 не создан]</sup><br />
* [[:Обучение с подкреплением]]<sup>[на 06.12.18 не создан]</sup><br />
<br />
== Примечания ==<br />
<references/><br />
<br />
== Источники информации ==<br />
* [https://en.wikipedia.org/wiki/Deep_learning Deep learning, Wikipedia]<br />
* [https://ru.wikipedia.org/wiki/Глубокое_обучение Глубокое обучение, Wikipedia]<br />
* [http://www.deeplearningbook.org/ Deep Learning Book, MIT]<br />
* [https://towardsdatascience.com/multi-layer-neural-networks-with-sigmoid-function-deep-learning-for-rookies-2-bf464f09eb7f Multi-Layer Neural Networks with Sigmoid Function, Towards Data Science]<br />
* [https://www.kaggle.com/dansbecker/rectified-linear-units-relu-in-deep-learning Rectified Linear Units (ReLU) in Deep Learning, Kaggle]</div>80.76.244.114http://neerc.ifmo.ru/wiki/index.php?title=%D0%93%D0%BB%D1%83%D0%B1%D0%BE%D0%BA%D0%BE%D0%B5_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5&diff=68018Глубокое обучение2018-12-24T17:42:52Z<p>80.76.244.114: /* Transfer learning */</p>
<hr />
<div>'''Глубокое обучение''' (англ. deep learning) {{---}} совокупность широкого семейства методов машинного обучения, основанных на имитации работы человеческого мозга в процессе обработки данных и создания паттернов, используемых для принятия решений<ref>[https://www.investopedia.com/terms/d/deep-learning.asp Deep Learning, Investopedia]</ref>. Как правило, глубокое обучение предназначено для работы с большими объемами данных и использует сложные алгоритмы для обучения модели<ref>[https://www.quora.com/What-is-the-difference-between-Neural-Networks-and-Deep-Learning The difference between neural networks and deep learning]</ref>. На больших датасетах глубокое обучение показывает более высокую точность результатов в сравнении с традиционным машинным обучением. Зависимость производительности (качества результатов) от объема данных представлена на рисунке ниже.<br />
<br />
{|align="center"<br />
|-valign="top"<br />
|[[Файл:Perfm_data.jpg|border|450px|thumb|left|Зависимость производительности от объема данных.]]<br />
|}<br />
<br />
Несмотря на то, что данный раздел машинного обучения появился еще в 1980-х, до недавнего времени его применение было сильно ограничено из-за недостака вычислительных мощностей существовавших компьютеров. Ситуация изменилась только в середине 2000-х.<br />
<br />
На создание моделей глубокого обучения оказали влияние некоторые процессы и паттерны, происходящие в биологических нейронных системах. Несмотря на это, данные модели во многом отличаются от биологического мозга (и в структуре и в функциях), что делает невозможным использование теорем и доказательств, применяющихся в нейробиологии.<br />
<br />
Соотношение машинного обучения и глубокого обучения представлено на рисунке ниже.<br />
{|align="center"<br />
|-valign="top"<br />
|[[Файл:Ml_areas.jpg|border|450px|thumb|left|Глубокое обучение как часть машинного обучения.]]<br />
|}<br />
<br />
== История ==<br />
* 1943 {{---}} Искусственный нейрон Маккаллока — Питтса<ref>[https://en.wikipedia.org/wiki/Artificial_neuron Artificial neuron, Wikipedia]</ref> {{---}} узел искусственной нейронной сети, являющийся упрощённой моделью естественного нейрона.<br />
* 1949 {{---}} Принцип обучения нейронов Хебба<ref>[https://en.wikipedia.org/wiki/Hebbian_theory Hebbian theory, Wikipedia]</ref> {{---}} изначально наблюдаемая причинно-следственная связь между активациями пре- и постсинаптического нейрона имеет тенденцию к усилению.<br />
* 1957 {{---}} Модель перцептрона предложена Фрэнком Розенблаттом<ref>[https://en.wikipedia.org/wiki/Perceptron Perceptron, Wikipedia]</ref> {{---}} математическая или компьютерная модель восприятия информации мозгом.<br />
* 1960 {{---}} Дельта-правило обучения перцептрона<ref>[https://en.wikipedia.org/wiki/Delta_rule Delta rule, Wikipedia]</ref> {{---}} метод обучения перцептрона по принципу градиентного спуска по поверхности ошибки.<br />
* 1969 {{---}} Выход книги Марвина Минска и Сеймура Паперта "Перцептроны"<ref>[https://en.wikipedia.org/wiki/Perceptrons_(book) Perceptrons book, WIkipedia]</ref>. В данной книге математически показаны ограничения перцептронов.<br />
* 1974 {{---}} Метод обратного распространения ошибки впервые предложен А. И. Галушкиным и Дж. Вербосом<ref>[https://en.wikipedia.org/wiki/Backpropagation Backpropagation, Wikipedia]</ref> {{---}} метод вычисления градиента, который используется при обновлении весов многослойного перцептрона.<br />
* 1980 {{---}} Первая свёрточная нейронная сеть предложена Кунихико Фукусимой<ref>[https://en.wikipedia.org/wiki/Convolutional_neural_network Convolutional_neural_network, Wikipedia]</ref> {{---}} специальная архитектура искусственных нейронных сетей использующая некоторые особенности зрительной коры.<br />
* 1982 {{---}} Рекуррентные нейронные сети предложены Д. Хопфилдом {{---}} вид нейронных сетей, где связи между элементами образуют направленную последовательность.<br />
* 1991 {{---}} Проблема "исчезающего" градиента была сформулирована С. Хочрейтом. Проблема "исчезающего" градиента заключается в быстрой потере информации с течением времени.<br />
* 1997 {{---}} Долгая краткосрочная память предложена С. Хочрейтом и Ю. Шмидхубером<ref>[https://en.wikipedia.org/wiki/Long_short-term_memory Long short-term memory, Wikipedia]</ref>. В отличие от традиционных рекуррентных нейронных сетей, LSTM-сеть хорошо приспособлена к обучению на задачах классификации, обработки и прогнозирования временных рядов в случаях, когда важные события разделены временными промежутками с неопределённой продолжительностью и границами.<br />
* 1998 {{---}} Градиентный спуск для сверточных нейронных сетей предложен Я. Лекуном.<br />
* 2006 {{---}} Публикации Г. Хинтона, С. Осиндера и Я. Теха об обучении сетей глубокого доверия. Данные публикации, а также их активное освещение в средствах массовой информации смогли привлечь внимание ученых и разработчиков со всего мира к глубоким сетям.<br />
* 2012 {{---}} Предложение дропаута Г. Хинтоном, А. Крижевски и И. Шутковичем<ref>[https://en.wikipedia.org/wiki/Dropout_(neural_networks) Dropout, Wikipedia]</ref>. Дропаут (от англ. dropout) {{---}} метод регуляризации искусственных нейронных сетей, предназначен для предотвращения переобучения сети.<br />
* 2012 {{---}} Нейронные сети побеждают в ImageNet Challenge<ref>[https://en.wikipedia.org/wiki/ImageNet#ImageNet_Challenge ImageNet Challenge, Wikipedia]</ref>. Данное событие ознаменовало начало эры нейронных сетей и глубокого обучения.<br />
* 2014 {{---}} Группа исследователей под руководством Зеппа Хохрейтера использовала глубокое обучение для определения токсичного воздействия лекарств и бытовых средств на окружающую среду. Данна работа была отмечена первым местом на соревновании "Tox21 Data Challenge"<ref>[https://tripod.nih.gov/tox21/challenge/leaderboard.jsp Tox21 Data Challenge Winners]</ref>.<br />
* 2016 {{---}} Программа для игры в го Google AlphaGo выиграла со счётом 4:1 у Ли Седоля, лучшего международного игрока в эту игру. AlphaGo, разработанная DeepMind, использует глубокое обучение с помощью многоуровневых нейронных сетей.<br />
* 2018 {{---}} Глубокое обучение впервые используется для планирования лучевой терапии<ref>[https://aapm.onlinelibrary.wiley.com/doi/abs/10.1002/mp.13271 Automatic treatment planning based on three‐dimensional dose distribution predicted from deep learning technique]</ref>.<br />
<br />
В настоящее время глубокое обучение используется [[Глубокое обучение#Применения | во многих сферах]].<br />
<br />
== Определение == <br />
'''Глубокое обучение''' {{---}} это класс алгоритмов машинного обучения, который:<br />
<br />
* Использует многослойную систему нелинейных фильтров для извлечения признаков с преобразованиями. Каждый последующий слой получает на входе выходные данные предыдущего слоя. <br />
* Может сочетать алгоритмы [[Обучение с учителем | обучения с учителем]]<sup>[на 12.12.18 не создан]</sup> (пример {{---}} классификация) и [[Обучение без учителя | без учителя ]]<sup>[на 12.12.18 не создан]</sup> (пример {{---}} анализ образца).<br />
* Формирует в процессе обучения слои выявления признаков на нескольких уровнях представлений, которые соответствуют различным уровням абстракции; при этом признаки организованы иерархически {{---}} признаки более высокого уровня являются производными от признаков более низкого уровня.<br />
{|align="center"<br />
|-valign="top"<br />
|[[Файл:Network_dif.png|border|550px|thumb|left|Глубокие и неглубокие нейронные сети.]]<br />
|}<br />
<br />
== Применения ==<br />
* Распознавание речи<ref>[https://en.wikipedia.org/wiki/Speech_recognition Speech recognition, Wikipedia]</ref>. Все основные коммерческие системы распознавания речи (например, Microsoft Cortana, Xbox, Skype Translator, Amazon Alexa, Google Now, Apple Siri, Baidu и iFlyTek) основаны на глубоком обучении.<br />
* [[:Задача нахождения объектов на изображении | Компьютерное зрение]]<sup>[на 06.12.18 не создан]</sup>. На сегодняшний день системы распознавания образов основанные на глубоком обучении уже умеют давать более точные результаты, чем человеческий глаз<ref>[https://www.sciencedirect.com/science/article/pii/S0893608012000524 Multi-column deep neural network for traffic sign classification]</ref>.<br />
* Обработка естественного языка<ref>[https://en.wikipedia.org/wiki/Natural_language_processing Natural language processing, Wikipedia]</ref>. Нейронные сети использовались для реализации языковых моделей еще с начала 2000-х годов. Изобретение LSTM помогло улучшить машинный перевод и языковое моделирование<ref>[https://papers.nips.cc/paper/5346-sequence-to-sequence-learning-with-neural-networks.pdf Sequence to Sequence Learning with Neural Networks]</ref>.<br />
* Обнаружение новых лекарственных препаратов. К примеру, нейронная сеть AtomNet использовалась для прогнозирования новых биомолекул {{---}} кандидатов для лечения таких заболевания, как вирус Эбола и рассеянный склероз.<br />
* Рекомендательные системы<ref>[https://en.wikipedia.org/wiki/Recommender_system Recommender system, Wikipedia]</ref>. На сегодняшний день глубокое обучение применяется для изучения пользовательских предпочтений во многих доменах.<br />
* Предсказание генномных онтологий в биоинформатике<ref>[https://en.wikipedia.org/wiki/Deep_learning#Bioinformatics Deep learning in bioinformatics, Wikipedia]</ref>.<br />
<br />
Полный список возможных применений глубокого обучения<ref>[https://en.wikipedia.org/wiki/Deep_learning#Applications Applications of deep learning, Wikipedia]</ref>.<br />
<br />
== Transfer learning ==<br />
Глубокие нейронные сети требуют больших объемов данных для сходимости обучения. Поэтому часто встречается ситуация, когда для решаемой задачи недостаточно данных для того, чтобы хорошо натренировать все слои нейросети. Для решения этой проблемы используется '''transfer learning'''<ref>[https://habr.com/company/binarydistrict/blog/428255/ Transfer Learning: как быстро обучить нейросеть на своих данных, habr.com]</ref>. <br />
<br />
Иногда возможно получить знания, которые нейронная сеть извлекла из одной задачи, и применить их к отдельной задаче. Эта техника называется '''transfer learning'''.<br />
{|align="center"<br />
|-valign="top"<br />
|[[Файл:Transfer.jpeg|border|450px|thumb|left|Transfer learning.]]<br />
|}<br />
Чаще всего '''transfer learning''' выглядит следующим образом: нейросеть сначала обучается на большом объеме данных, затем — на целевом наборе. Например, знания, полученные при обучении распознаванию деревьев, могут применяться при попытке распознавания новогодних ёлок.<br />
<br />
== Фреймворки для глубокого обучения ==<br />
* TensorFlow<ref>[https://en.wikipedia.org/wiki/TensorFlow TensorFlow, Wikipedia]</ref><br />
* Microsoft Cognitive Toolkit<ref>[https://en.wikipedia.org/wiki/Microsoft_Cognitive_Toolkit Microsoft Cognitive Toolkit, Wikipedia]</ref><br />
* Wolfram Mathematica<ref>[https://en.wikipedia.org/wiki/Wolfram_Mathematica Wolfram Mathematica, Wikipedia]</ref><br />
* Keras<ref>[https://en.wikipedia.org/wiki/Keras Keras, Wikipedia]</ref><br />
* Deeplearning4j<ref>[https://en.wikipedia.org/wiki/Deeplearning4j Deeplearning4j, Wikipedia]</ref><br />
* Caffe<ref>[https://en.wikipedia.org/wiki/Caffe_(software) Caffe, Wikipedia]</ref><br />
* Torch/PyTorch<ref>[https://habr.com/post/334380 PyTorch — ваш новый фреймворк глубокого обучения, habr]</ref><br />
* MXNet<ref>[https://mxnet.apache.org MXNet, official site]</ref><br />
* Chainer<ref>[https://chainer.org Chainer, official site]</ref><br />
Сопоставление фреймворков, библиотек и отдельных программ для глубокого обучения<ref>[https://en.wikipedia.org/wiki/Comparison_of_deep_learning_software Comparison of deep learning software, Wikipedia]</ref>.<br />
<br />
== См. также ==<br />
* [[:Нейронные сети, перцептрон]]<sup>[на 06.12.18 не создан]</sup><br />
* [[:Сверточные нейронные сети]]<sup>[на 06.12.18 не создан]</sup><br />
* [[:Рекуррентные нейронные сети]]<sup>[на 06.12.18 не создан]</sup><br />
* [[:Обучение с подкреплением]]<sup>[на 06.12.18 не создан]</sup><br />
<br />
== Примечания ==<br />
<references/><br />
<br />
== Источники информации ==<br />
* [https://en.wikipedia.org/wiki/Deep_learning Deep learning, Wikipedia]<br />
* [https://ru.wikipedia.org/wiki/Глубокое_обучение Глубокое обучение, Wikipedia]<br />
* [http://www.deeplearningbook.org/ Deep Learning Book, MIT]<br />
* [https://towardsdatascience.com/multi-layer-neural-networks-with-sigmoid-function-deep-learning-for-rookies-2-bf464f09eb7f Multi-Layer Neural Networks with Sigmoid Function, Towards Data Science]<br />
* [https://www.kaggle.com/dansbecker/rectified-linear-units-relu-in-deep-learning Rectified Linear Units (ReLU) in Deep Learning, Kaggle]</div>80.76.244.114http://neerc.ifmo.ru/wiki/index.php?title=%D0%93%D0%BB%D1%83%D0%B1%D0%BE%D0%BA%D0%BE%D0%B5_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5&diff=68017Глубокое обучение2018-12-24T17:35:25Z<p>80.76.244.114: </p>
<hr />
<div>'''Глубокое обучение''' (англ. deep learning) {{---}} совокупность широкого семейства методов машинного обучения, основанных на имитации работы человеческого мозга в процессе обработки данных и создания паттернов, используемых для принятия решений<ref>[https://www.investopedia.com/terms/d/deep-learning.asp Deep Learning, Investopedia]</ref>. Как правило, глубокое обучение предназначено для работы с большими объемами данных и использует сложные алгоритмы для обучения модели<ref>[https://www.quora.com/What-is-the-difference-between-Neural-Networks-and-Deep-Learning The difference between neural networks and deep learning]</ref>. На больших датасетах глубокое обучение показывает более высокую точность результатов в сравнении с традиционным машинным обучением. Зависимость производительности (качества результатов) от объема данных представлена на рисунке ниже.<br />
<br />
{|align="center"<br />
|-valign="top"<br />
|[[Файл:Perfm_data.jpg|border|450px|thumb|left|Зависимость производительности от объема данных.]]<br />
|}<br />
<br />
Несмотря на то, что данный раздел машинного обучения появился еще в 1980-х, до недавнего времени его применение было сильно ограничено из-за недостака вычислительных мощностей существовавших компьютеров. Ситуация изменилась только в середине 2000-х.<br />
<br />
На создание моделей глубокого обучения оказали влияние некоторые процессы и паттерны, происходящие в биологических нейронных системах. Несмотря на это, данные модели во многом отличаются от биологического мозга (и в структуре и в функциях), что делает невозможным использование теорем и доказательств, применяющихся в нейробиологии.<br />
<br />
Соотношение машинного обучения и глубокого обучения представлено на рисунке ниже.<br />
{|align="center"<br />
|-valign="top"<br />
|[[Файл:Ml_areas.jpg|border|450px|thumb|left|Глубокое обучение как часть машинного обучения.]]<br />
|}<br />
<br />
== История ==<br />
* 1943 {{---}} Искусственный нейрон Маккаллока — Питтса<ref>[https://en.wikipedia.org/wiki/Artificial_neuron Artificial neuron, Wikipedia]</ref> {{---}} узел искусственной нейронной сети, являющийся упрощённой моделью естественного нейрона.<br />
* 1949 {{---}} Принцип обучения нейронов Хебба<ref>[https://en.wikipedia.org/wiki/Hebbian_theory Hebbian theory, Wikipedia]</ref> {{---}} изначально наблюдаемая причинно-следственная связь между активациями пре- и постсинаптического нейрона имеет тенденцию к усилению.<br />
* 1957 {{---}} Модель перцептрона предложена Фрэнком Розенблаттом<ref>[https://en.wikipedia.org/wiki/Perceptron Perceptron, Wikipedia]</ref> {{---}} математическая или компьютерная модель восприятия информации мозгом.<br />
* 1960 {{---}} Дельта-правило обучения перцептрона<ref>[https://en.wikipedia.org/wiki/Delta_rule Delta rule, Wikipedia]</ref> {{---}} метод обучения перцептрона по принципу градиентного спуска по поверхности ошибки.<br />
* 1969 {{---}} Выход книги Марвина Минска и Сеймура Паперта "Перцептроны"<ref>[https://en.wikipedia.org/wiki/Perceptrons_(book) Perceptrons book, WIkipedia]</ref>. В данной книге математически показаны ограничения перцептронов.<br />
* 1974 {{---}} Метод обратного распространения ошибки впервые предложен А. И. Галушкиным и Дж. Вербосом<ref>[https://en.wikipedia.org/wiki/Backpropagation Backpropagation, Wikipedia]</ref> {{---}} метод вычисления градиента, который используется при обновлении весов многослойного перцептрона.<br />
* 1980 {{---}} Первая свёрточная нейронная сеть предложена Кунихико Фукусимой<ref>[https://en.wikipedia.org/wiki/Convolutional_neural_network Convolutional_neural_network, Wikipedia]</ref> {{---}} специальная архитектура искусственных нейронных сетей использующая некоторые особенности зрительной коры.<br />
* 1982 {{---}} Рекуррентные нейронные сети предложены Д. Хопфилдом {{---}} вид нейронных сетей, где связи между элементами образуют направленную последовательность.<br />
* 1991 {{---}} Проблема "исчезающего" градиента была сформулирована С. Хочрейтом. Проблема "исчезающего" градиента заключается в быстрой потере информации с течением времени.<br />
* 1997 {{---}} Долгая краткосрочная память предложена С. Хочрейтом и Ю. Шмидхубером<ref>[https://en.wikipedia.org/wiki/Long_short-term_memory Long short-term memory, Wikipedia]</ref>. В отличие от традиционных рекуррентных нейронных сетей, LSTM-сеть хорошо приспособлена к обучению на задачах классификации, обработки и прогнозирования временных рядов в случаях, когда важные события разделены временными промежутками с неопределённой продолжительностью и границами.<br />
* 1998 {{---}} Градиентный спуск для сверточных нейронных сетей предложен Я. Лекуном.<br />
* 2006 {{---}} Публикации Г. Хинтона, С. Осиндера и Я. Теха об обучении сетей глубокого доверия. Данные публикации, а также их активное освещение в средствах массовой информации смогли привлечь внимание ученых и разработчиков со всего мира к глубоким сетям.<br />
* 2012 {{---}} Предложение дропаута Г. Хинтоном, А. Крижевски и И. Шутковичем<ref>[https://en.wikipedia.org/wiki/Dropout_(neural_networks) Dropout, Wikipedia]</ref>. Дропаут (от англ. dropout) {{---}} метод регуляризации искусственных нейронных сетей, предназначен для предотвращения переобучения сети.<br />
* 2012 {{---}} Нейронные сети побеждают в ImageNet Challenge<ref>[https://en.wikipedia.org/wiki/ImageNet#ImageNet_Challenge ImageNet Challenge, Wikipedia]</ref>. Данное событие ознаменовало начало эры нейронных сетей и глубокого обучения.<br />
* 2014 {{---}} Группа исследователей под руководством Зеппа Хохрейтера использовала глубокое обучение для определения токсичного воздействия лекарств и бытовых средств на окружающую среду. Данна работа была отмечена первым местом на соревновании "Tox21 Data Challenge"<ref>[https://tripod.nih.gov/tox21/challenge/leaderboard.jsp Tox21 Data Challenge Winners]</ref>.<br />
* 2016 {{---}} Программа для игры в го Google AlphaGo выиграла со счётом 4:1 у Ли Седоля, лучшего международного игрока в эту игру. AlphaGo, разработанная DeepMind, использует глубокое обучение с помощью многоуровневых нейронных сетей.<br />
* 2018 {{---}} Глубокое обучение впервые используется для планирования лучевой терапии<ref>[https://aapm.onlinelibrary.wiley.com/doi/abs/10.1002/mp.13271 Automatic treatment planning based on three‐dimensional dose distribution predicted from deep learning technique]</ref>.<br />
<br />
В настоящее время глубокое обучение используется [[Глубокое обучение#Применения | во многих сферах]].<br />
<br />
== Определение == <br />
'''Глубокое обучение''' {{---}} это класс алгоритмов машинного обучения, который:<br />
<br />
* Использует многослойную систему нелинейных фильтров для извлечения признаков с преобразованиями. Каждый последующий слой получает на входе выходные данные предыдущего слоя. <br />
* Может сочетать алгоритмы [[Обучение с учителем | обучения с учителем]]<sup>[на 12.12.18 не создан]</sup> (пример {{---}} классификация) и [[Обучение без учителя | без учителя ]]<sup>[на 12.12.18 не создан]</sup> (пример {{---}} анализ образца).<br />
* Формирует в процессе обучения слои выявления признаков на нескольких уровнях представлений, которые соответствуют различным уровням абстракции; при этом признаки организованы иерархически {{---}} признаки более высокого уровня являются производными от признаков более низкого уровня.<br />
{|align="center"<br />
|-valign="top"<br />
|[[Файл:Network_dif.png|border|550px|thumb|left|Глубокие и неглубокие нейронные сети.]]<br />
|}<br />
<br />
== Применения ==<br />
* Распознавание речи<ref>[https://en.wikipedia.org/wiki/Speech_recognition Speech recognition, Wikipedia]</ref>. Все основные коммерческие системы распознавания речи (например, Microsoft Cortana, Xbox, Skype Translator, Amazon Alexa, Google Now, Apple Siri, Baidu и iFlyTek) основаны на глубоком обучении.<br />
* [[:Задача нахождения объектов на изображении | Компьютерное зрение]]<sup>[на 06.12.18 не создан]</sup>. На сегодняшний день системы распознавания образов основанные на глубоком обучении уже умеют давать более точные результаты, чем человеческий глаз<ref>[https://www.sciencedirect.com/science/article/pii/S0893608012000524 Multi-column deep neural network for traffic sign classification]</ref>.<br />
* Обработка естественного языка<ref>[https://en.wikipedia.org/wiki/Natural_language_processing Natural language processing, Wikipedia]</ref>. Нейронные сети использовались для реализации языковых моделей еще с начала 2000-х годов. Изобретение LSTM помогло улучшить машинный перевод и языковое моделирование<ref>[https://papers.nips.cc/paper/5346-sequence-to-sequence-learning-with-neural-networks.pdf Sequence to Sequence Learning with Neural Networks]</ref>.<br />
* Обнаружение новых лекарственных препаратов. К примеру, нейронная сеть AtomNet использовалась для прогнозирования новых биомолекул {{---}} кандидатов для лечения таких заболевания, как вирус Эбола и рассеянный склероз.<br />
* Рекомендательные системы<ref>[https://en.wikipedia.org/wiki/Recommender_system Recommender system, Wikipedia]</ref>. На сегодняшний день глубокое обучение применяется для изучения пользовательских предпочтений во многих доменах.<br />
* Предсказание генномных онтологий в биоинформатике<ref>[https://en.wikipedia.org/wiki/Deep_learning#Bioinformatics Deep learning in bioinformatics, Wikipedia]</ref>.<br />
<br />
Полный список возможных применений глубокого обучения<ref>[https://en.wikipedia.org/wiki/Deep_learning#Applications Applications of deep learning, Wikipedia]</ref>.<br />
<br />
== Transfer learning ==<br />
Глубокие нейронные сети требуют больших объемов данных для сходимости обучения. Поэтому часто встречается ситуация, когда для решаемой задачи недостаточно данных для того, чтобы хорошо натренировать все слои нейросети. Для решения этой проблемы используется '''transfer learning'''<ref>[https://habr.com/company/binarydistrict/blog/428255/ Transfer Learning: как быстро обучить нейросеть на своих данных, habr.com]</ref>. <br />
<br />
'''Transfer learning''' {{---}} это техника в машинном обучении, которая сосредоточена на сохранении знаний, полученных при решении одной задачи, и применении их к другой, но связанной задаче<ref>[https://en.wikipedia.org/wiki/Transfer_learning Transfer learning, Wikipedia]</ref>. <br />
{|align="center"<br />
|-valign="top"<br />
|[[Файл:Transfer.jpeg|border|450px|thumb|left|Transfer learning.]]<br />
|}<br />
Чаще всего '''transfer learning''' выглядит следующим образом: нейросеть сначала обучается на большом объеме данных, затем — на целевом наборе. Например, знания, полученные при обучении распознаванию деревьев, могут применяться при попытке распознавания новогодних ёлок.<br />
<br />
== Фреймворки для глубокого обучения ==<br />
* TensorFlow<ref>[https://en.wikipedia.org/wiki/TensorFlow TensorFlow, Wikipedia]</ref><br />
* Microsoft Cognitive Toolkit<ref>[https://en.wikipedia.org/wiki/Microsoft_Cognitive_Toolkit Microsoft Cognitive Toolkit, Wikipedia]</ref><br />
* Wolfram Mathematica<ref>[https://en.wikipedia.org/wiki/Wolfram_Mathematica Wolfram Mathematica, Wikipedia]</ref><br />
* Keras<ref>[https://en.wikipedia.org/wiki/Keras Keras, Wikipedia]</ref><br />
* Deeplearning4j<ref>[https://en.wikipedia.org/wiki/Deeplearning4j Deeplearning4j, Wikipedia]</ref><br />
* Caffe<ref>[https://en.wikipedia.org/wiki/Caffe_(software) Caffe, Wikipedia]</ref><br />
* Torch/PyTorch<ref>[https://habr.com/post/334380 PyTorch — ваш новый фреймворк глубокого обучения, habr]</ref><br />
* MXNet<ref>[https://mxnet.apache.org MXNet, official site]</ref><br />
* Chainer<ref>[https://chainer.org Chainer, official site]</ref><br />
Сопоставление фреймворков, библиотек и отдельных программ для глубокого обучения<ref>[https://en.wikipedia.org/wiki/Comparison_of_deep_learning_software Comparison of deep learning software, Wikipedia]</ref>.<br />
<br />
== См. также ==<br />
* [[:Нейронные сети, перцептрон]]<sup>[на 06.12.18 не создан]</sup><br />
* [[:Сверточные нейронные сети]]<sup>[на 06.12.18 не создан]</sup><br />
* [[:Рекуррентные нейронные сети]]<sup>[на 06.12.18 не создан]</sup><br />
* [[:Обучение с подкреплением]]<sup>[на 06.12.18 не создан]</sup><br />
<br />
== Примечания ==<br />
<references/><br />
<br />
== Источники информации ==<br />
* [https://en.wikipedia.org/wiki/Deep_learning Deep learning, Wikipedia]<br />
* [https://ru.wikipedia.org/wiki/Глубокое_обучение Глубокое обучение, Wikipedia]<br />
* [http://www.deeplearningbook.org/ Deep Learning Book, MIT]<br />
* [https://towardsdatascience.com/multi-layer-neural-networks-with-sigmoid-function-deep-learning-for-rookies-2-bf464f09eb7f Multi-Layer Neural Networks with Sigmoid Function, Towards Data Science]<br />
* [https://www.kaggle.com/dansbecker/rectified-linear-units-relu-in-deep-learning Rectified Linear Units (ReLU) in Deep Learning, Kaggle]</div>80.76.244.114http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D0%B5%D1%80%D0%B5%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5&diff=67916Переобучение2018-12-14T16:10:53Z<p>80.76.244.114: /* На примере линейной регрессии[на 14.12.18 не создан] */</p>
<hr />
<div>'''Переобучение''' (англ. overfitting) {{---}} негативное явление, возникающее, когда алгоритм обучения вырабатывает предсказания, которые слишком близко или точно соответствуют конкретному набору данных, и поэтому не подходят для применения алгоритма к дополнительным данным или будущим наблюдениям.<br />
<br />
'''Недообучение''' (англ. underfitting) {{---}} негативное явление, при котором алгоритм обучения не обеспечивает достаточно малой величины средней ошибки на обучающей выборке. Недообучение возникает при использовании недостаточно сложных моделей.<br />
<br />
== Примеры ==<br />
=== На примере [[Линейная регрессия | линейной регрессии]]<sup>[на 14.12.18 не создан]</sup> ===<br />
Представьте задачу [[Линейная регрессия | линейной регрессии]]<sup>[на 14.12.18 не создан]</sup>. Красные точки представляют исходные данные. Синии линии являются графиками полиномов различной степени M, аппроксимирующих исходные данные.<br />
<br />
{|align="center"<br />
|-valign="top"<br />
|[[Файл:High_bias_reg.png|200px|thumb|Рис 1. Недообучение. M = 1]]<br />
|[[Файл:Normal_bias_reg.png|200px|thumb|Рис 2. Подходящая модель. M = 2]]<br />
|[[Файл:High_variance_reg.png|200px|thumb|Рис 3. Переобучение. M = 4]]<br />
|}<br />
<br />
Как видно из Рис 1, данные не поддаются линейной зависимости при небольшой степени полинома, и по этой причине модель, представленная на данном рисунке, не очень хороша.<br />
<br />
На Рис 2 представленна ситуация, когда выбранная полиномиальная функция подходит для описания исходных данных.<br />
<br />
Рис 3 иллюстрирует случай, когда высокая степень полинома ведет к тому, что модель слишком заточена на данные обучающего датасета.<br />
<br />
=== На примере [[Логистическая регрессия | логистической регрессии]]<sup>[на 14.12.18 не создан]</sup> ===<br />
Представьте задачу классификации размеченых точек. Рис 4 показывает результат использования модели <math>g(θ_0+θ_1*x_1+θ_2*x_2)</math> для представленного датасета. Как и в предыдущем примере, данные не поддаются классификации по линейной зависимости.<br />
{|align="center"<br />
|-valign="top"<br />
|[[Файл:High_bias_cla.png|200px|thumb|Рис 4. Недообучение]]<br />
|[[Файл:Normal_bias_cla.png|200px|thumb|Рис 5. Модель подходит]]<br />
|[[Файл:High_variance_cla.png|200px|thumb|Рис 6. Переобучение]]<br />
|}<br />
В случае же выбора модели <math>g(θ_0+θ_1*x_1+θ_2*x_2+θ_3*x_1^2+θ_4*x_2^2+θ_5*x_1*x_2)</math>, представленой на Рис 5, данные значительно лучше соответствуют модели. Рис 6 показывает результат использования модели <math>g(θ_0+θ_1*x_1+θ_2*x_1^2+θ_3*x_2*x_1^2+θ_4*x_1^2*x_2^2 + ...)</math> для представленного датасета {{---}} это яркий пример явления переобучения.<br />
<br />
== Кривые обучения ==<br />
'''Кривая обучения''' {{---}} графическое представление того, как изменение меры обученности (по вертикальной оси) зависит от определенной еденицы измерения опыта (по горизонтальной оси)<ref>[https://en.wikipedia.org/wiki/Learning_curve Learning curve, Wikipedia]</ref>. Например, в примерах ниже представлена зависимость средней ошибки от объема датасета.<br />
<br />
=== Кривые обучения при переобучении ===<br />
При переобучении небольшая средняя ошибка на обучающей выборке не обеспечивает такую же малую ошибку на тестовой выборке. <br />
<br />
{|align="center"<br />
|-valign="top"<br />
|[[Файл:High_variance_learning_curve.png|border|400px|Кривые обучения при переобучении|thumb|Рис 7. Кривые обучения при переобучении]]<br />
|}<br />
<br />
Рис. 7 демонстрирует зависимость средней ошибки для обучающей и тестовой выборок от объема датасета при переобучении.<br />
<br />
=== Кривые обучения при недообучении ===<br />
При недообучении независимо от объема обучающего датасета как на обучающей выборке, так и на тестовой выборке небольшая средняя ошибка не достигается. <br />
<br />
{|align="center"<br />
|-valign="top"<br />
|[[Файл:High_bias_learning_curve.png|border|400px|Кривые обучения при переобучении|thumb|Рис 8. Кривые обучения при недообучении]]<br />
|}<br />
<br />
Рис. 8 демонстрирует зависимость средней ошибки для обучающей и тестовой выборок от объема датасета при недообучении.<br />
<br />
== High variance и high bias ==<br />
'''Bias''' {{---}} ошибка неверных предположений в алгоритме обучения. Высокий '''bias''' может привести к недообучению.<br />
<br />
'''Variance''' {{---}} это ошибка, вызванная большой чувствительностью к небольшим отклонениям в тренировочном наборе. Высокая дисперсия может привести к переобучению.<br />
<br />
{|align="center"<br />
|-valign="top"<br />
|[[Файл:High_bias.jpg|border|300px|thumb|right|Рис 9. High variance и high bias]]<br />
|}<br />
<br />
При использовании нейронных сетей '''variance''' увеличивается, а '''bias''' уменьшается с увеличением количества скрытых слоев.<br />
<br />
Для устранения '''high variance''' и '''high bias''' можно использовать смеси и ансамбли. Например, можно составить ансамбль ('''boosting''') из нескольких моделей с высоким '''bias''' и получить модель с небольшим '''bias'''. В другом случае при '''bagging''' соединяются несколько моделей с низким '''bias''', а результирующая модель позволяет уменьшить '''variance'''.<br />
<br />
== Возможные решения ==<br />
=== Возможные решения при переобучении ===<br />
* Увеличение количества данных в наборе<br />
* Уменьшение количества параметров модели<br />
* Добавление регуляризации / увеличение коэффициента регуляризации<br />
<br />
=== Возможные решения при недообучении ===<br />
* Добавление новых параметров модели<br />
* Использование для описания модели функций с более высокой степенью <br />
* Уменьшение коэффициента регуляризации<br />
<br />
== См. также ==<br />
* [[Модель алгоритма и ее выбор]]<sup>[на 01.12.18 не создан]</sup><br />
* [[Оценка качества в задачах классификации и регрессии]]<sup>[на 01.12.18 не создан]</sup><br />
* [[Оценка качества в задаче кластеризации]]<sup>[на 01.12.18 не создан]</sup><br />
* [https://www.coursera.org/lecture/machine-learning/the-problem-of-overfitting-ACpTQ The Problem of Overfitting on Coursera, Andrew Ng]<br />
== Примечания ==<br />
* [http://blog.lokad.com/journal/2009/4/22/overfitting-when-accuracy-measure-goes-wrong.html Overfitting: when accuracy measure goes wrong]<br />
* [http://www3.cs.stonybrook.edu/~skiena/jaialai/excerpts/node16.html The Problem of Overfitting Data]<br />
* [https://elitedatascience.com/overfitting-in-machine-learning Overfitting in Machine Learning]<br />
<br />
== Источники информации ==<br />
# [https://en.wikipedia.org/wiki/Overfitting Overfitting] - статься на Википедии<br />
# [http://www.machinelearning.ru/wiki/index.php?title=Переобучение Переобучение] - вводная статься на MachineLearning.ru<br />
# [https://www.coursera.org/lecture/machine-learning/the-problem-of-overfitting-ACpTQ The Problem of Overfitting] - курс Andrew Ng<br />
# ''Hastie, T., Tibshirani, R., Friedman, J. '' [http://www-stat.stanford.edu/~tibs/ElemStatLearn The Elements of Statistical Learning, 2nd edition.] — Springer, 2009. — 533 p.<br />
# ''Vapnik V.N. '' [http://lib.mexmat.ru/books/9220 Statistical learning theory.] — N.Y.: John Wiley & Sons, Inc., 1998. <br />
# ''Воронцов, К. В. '' [http://www.machinelearning.ru/wiki/images/b/b6/Voron10doct.pdf Комбинаторная теория надёжности обучения по прецедентам]: Дис. док. физ.-мат. наук: 05-13-17. — Вычислительный центр РАН, 2010. — 271 с.</div>80.76.244.114http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D0%B5%D1%80%D0%B5%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5&diff=67903Переобучение2018-12-14T15:30:30Z<p>80.76.244.114: /* Примеры */</p>
<hr />
<div>'''Переобучение''' (англ. overfitting) {{---}} негативное явление, возникающее, когда алгоритм обучения вырабатывает предсказания, которые слишком близко или точно соответствуют конкретному набору данных, и поэтому не подходят для применения алгоритма к дополнительным данным или будущим наблюдениям.<br />
<br />
'''Недообучение''' (англ. underfitting) {{---}} негативное явление, при котором алгоритм обучения не обеспечивает достаточно малой величины средней ошибки на обучающей выборке. Недообучение возникает при использовании недостаточно сложных моделей.<br />
<br />
== Примеры ==<br />
=== На примере [[Линейная регрессия | линейной регрессии]]<sup>[на 14.12.18 не создан]</sup> ===<br />
Представьте задачу предсказания <math>y</math> по <math>x \in R</math>. Рис 1 показывает результат использования модели <math>y=θ_0+θ_1*x</math> для представленного датасета. Как видно из Рис 1 данные не поддаются линейной зависимости, и по этой причине модель не очень хороша.<br />
{|align="center"<br />
|-valign="top"<br />
|[[Файл:High_bias_reg.png|200px|thumb|Рис 1. Недообучение]]<br />
|[[Файл:Normal_bias_reg.png|200px|thumb|Рис 2. Модель подходит]]<br />
|[[Файл:High_variance_reg.png|200px|thumb|Рис 3. Переобучение]]<br />
|}<br />
Если же добавить дополнительный параметр <math>x^2</math>, и использовать модель <math>y=θ_0+θ_1*x+θ_2*x^2</math>, как представлено на Рис 2, то модель значительно лучше подходит для представленного датасета. Рис 3 показывает результат использования модели <math>y=θ_0+θ_1*x+θ_2*x^2+θ_3*x^3+θ_4*x^4</math> для представленного датасета. Как видно из Рис 3 данная модель слишком заточена для точки обучающего датасета и, веротяно, покажет плохой результат на тестовом датасете.<br />
<br />
=== На примере [[Логистическая регрессия | логистической регрессии]]<sup>[на 14.12.18 не создан]</sup> ===<br />
Представьте задачу классификации размеченых точек. Рис 4 показывает результат использования модели <math>g(θ_0+θ_1*x_1+θ_2*x_2)</math> для представленного датасета. Как и в предыдущем примере, данные не поддаются классификации по линейной зависимости.<br />
{|align="center"<br />
|-valign="top"<br />
|[[Файл:High_bias_cla.png|200px|thumb|Рис 4. Недообучение]]<br />
|[[Файл:Normal_bias_cla.png|200px|thumb|Рис 5. Модель подходит]]<br />
|[[Файл:High_variance_cla.png|200px|thumb|Рис 6. Переобучение]]<br />
|}<br />
В случае же выбора модели <math>g(θ_0+θ_1*x_1+θ_2*x_2+θ_3*x_1^2+θ_4*x_2^2+θ_5*x_1*x_2)</math>, представленой на Рис 5, данные значительно лучше соответствуют модели. Рис 6 показывает результат использования модели <math>g(θ_0+θ_1*x_1+θ_2*x_1^2+θ_3*x_2*x_1^2+θ_4*x_1^2*x_2^2 + ...)</math> для представленного датасета {{---}} это яркий пример явления переобучения.<br />
<br />
== Кривые обучения ==<br />
=== Кривые обучения при переобучении ===<br />
{|align="center"<br />
|-valign="top"<br />
|[[Файл:High_variance_learning_curve.png|border|500px|Кривые обучения при переобучении|thumb|Рис 7. Кривые обучения при переобучении]]<br />
|}<br />
=== Кривые обучения при недообучении ===<br />
{|align="center"<br />
|-valign="top"<br />
|[[Файл:High_bias_learning_curve.png|border|500px|Кривые обучения при переобучении|thumb|Рис 8. Кривые обучения при недообучении]]<br />
|}<br />
<br />
== High variance и high bias ==<br />
'''Bias''' {{---}} ошибка неверных предположений в алгоритме обучения. Высокий '''bias''' может привести к недообучению.<br />
<br />
'''Variance''' {{---}} это ошибка, вызванная большой чувствительностью к небольшим отклонениям в тренировочном наборе. Высокая дисперсия может привести к переобучению.<br />
<br />
{|align="center"<br />
|-valign="top"<br />
|[[Файл:High_bias.jpg|border|300px|thumb|right|Рис 9. High variance и high bias]]<br />
|}<br />
<br />
При использовании нейронных сетей '''variance''' увеличивается, а '''bias''' уменьшается с увеличением количества скрытых слоев.<br />
<br />
Для устранения '''high variance''' и '''high bias''' можно использовать смеси и ансамбли. Например, можно составить ансамбль ('''boosting''') из нескольких моделей с высоким '''bias''' и получить модель с небольшим '''bias'''. В другом случае при '''bagging''' соединяются несколько моделей с низким '''bias''', а результирующая модель позволяет уменьшить '''variance'''.<br />
<br />
== Возможные решения ==<br />
=== Возможные решения при переобучении ===<br />
* Увеличение количества данных в наборе<br />
* Уменьшение количества параметров модели<br />
* Добавление регуляризации / увеличение коэффициента регуляризации<br />
<br />
=== Возможные решения при недообучении ===<br />
* Добавление новых параметров модели<br />
* Использование для описания модели функций с более высокой степенью <br />
* Уменьшение коэффициента регуляризации<br />
<br />
== См. также ==<br />
* [[Модель алгоритма и ее выбор]]<sup>[на 01.12.18 не создан]</sup><br />
* [[Оценка качества в задачах классификации и регрессии]]<sup>[на 01.12.18 не создан]</sup><br />
* [[Оценка качества в задаче кластеризации]]<sup>[на 01.12.18 не создан]</sup><br />
* [https://www.coursera.org/lecture/machine-learning/the-problem-of-overfitting-ACpTQ The Problem of Overfitting on Coursera, Andrew Ng]<br />
== Примечания ==<br />
* [http://blog.lokad.com/journal/2009/4/22/overfitting-when-accuracy-measure-goes-wrong.html Overfitting: when accuracy measure goes wrong]<br />
* [http://www3.cs.stonybrook.edu/~skiena/jaialai/excerpts/node16.html The Problem of Overfitting Data]<br />
* [https://elitedatascience.com/overfitting-in-machine-learning Overfitting in Machine Learning]<br />
<br />
== Источники информации ==<br />
# [https://en.wikipedia.org/wiki/Overfitting Overfitting] - статься на Википедии<br />
# [http://www.machinelearning.ru/wiki/index.php?title=Переобучение Переобучение] - вводная статься на MachineLearning.ru<br />
# [https://www.coursera.org/lecture/machine-learning/the-problem-of-overfitting-ACpTQ The Problem of Overfitting] - курс Andrew Ng<br />
# ''Hastie, T., Tibshirani, R., Friedman, J. '' [http://www-stat.stanford.edu/~tibs/ElemStatLearn The Elements of Statistical Learning, 2nd edition.] — Springer, 2009. — 533 p.<br />
# ''Vapnik V.N. '' [http://lib.mexmat.ru/books/9220 Statistical learning theory.] — N.Y.: John Wiley & Sons, Inc., 1998. <br />
# ''Воронцов, К. В. '' [http://www.machinelearning.ru/wiki/images/b/b6/Voron10doct.pdf Комбинаторная теория надёжности обучения по прецедентам]: Дис. док. физ.-мат. наук: 05-13-17. — Вычислительный центр РАН, 2010. — 271 с.</div>80.76.244.114http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D0%B5%D1%80%D0%B5%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5&diff=67902Переобучение2018-12-14T15:29:37Z<p>80.76.244.114: /* Примеры */</p>
<hr />
<div>'''Переобучение''' (англ. overfitting) {{---}} негативное явление, возникающее, когда алгоритм обучения вырабатывает предсказания, которые слишком близко или точно соответствуют конкретному набору данных, и поэтому не подходят для применения алгоритма к дополнительным данным или будущим наблюдениям.<br />
<br />
'''Недообучение''' (англ. underfitting) {{---}} негативное явление, при котором алгоритм обучения не обеспечивает достаточно малой величины средней ошибки на обучающей выборке. Недообучение возникает при использовании недостаточно сложных моделей.<br />
<br />
== Примеры ==<br />
=== На примере [[Линейная регрессия | линейной регрессии]] ===<br />
Представьте задачу предсказания <math>y</math> по <math>x \in R</math>. Рис 1 показывает результат использования модели <math>y=θ_0+θ_1*x</math> для представленного датасета. Как видно из Рис 1 данные не поддаются линейной зависимости, и по этой причине модель не очень хороша.<br />
{|align="center"<br />
|-valign="top"<br />
|[[Файл:High_bias_reg.png|200px|thumb|Рис 1. Недообучение]]<br />
|[[Файл:Normal_bias_reg.png|200px|thumb|Рис 2. Модель подходит]]<br />
|[[Файл:High_variance_reg.png|200px|thumb|Рис 3. Переобучение]]<br />
|}<br />
Если же добавить дополнительный параметр <math>x^2</math>, и использовать модель <math>y=θ_0+θ_1*x+θ_2*x^2</math>, как представлено на Рис 2, то модель значительно лучше подходит для представленного датасета. Рис 3 показывает результат использования модели <math>y=θ_0+θ_1*x+θ_2*x^2+θ_3*x^3+θ_4*x^4</math> для представленного датасета. Как видно из Рис 3 данная модель слишком заточена для точки обучающего датасета и, веротяно, покажет плохой результат на тестовом датасете.<br />
<br />
=== На примере [[Логистическая регрессия | логистической регрессии]] ===<br />
Представьте задачу классификации размеченых точек. Рис 4 показывает результат использования модели <math>g(θ_0+θ_1*x_1+θ_2*x_2)</math> для представленного датасета. Как и в предыдущем примере, данные не поддаются классификации по линейной зависимости.<br />
{|align="center"<br />
|-valign="top"<br />
|[[Файл:High_bias_cla.png|200px|thumb|Рис 4. Недообучение]]<br />
|[[Файл:Normal_bias_cla.png|200px|thumb|Рис 5. Модель подходит]]<br />
|[[Файл:High_variance_cla.png|200px|thumb|Рис 6. Переобучение]]<br />
|}<br />
В случае же выбора модели <math>g(θ_0+θ_1*x_1+θ_2*x_2+θ_3*x_1^2+θ_4*x_2^2+θ_5*x_1*x_2)</math>, представленой на Рис 5, данные значительно лучше соответствуют модели. Рис 6 показывает результат использования модели <math>g(θ_0+θ_1*x_1+θ_2*x_1^2+θ_3*x_2*x_1^2+θ_4*x_1^2*x_2^2 + ...)</math> для представленного датасета {{---}} это яркий пример явления переобучения.<br />
<br />
== Кривые обучения ==<br />
=== Кривые обучения при переобучении ===<br />
{|align="center"<br />
|-valign="top"<br />
|[[Файл:High_variance_learning_curve.png|border|500px|Кривые обучения при переобучении|thumb|Рис 7. Кривые обучения при переобучении]]<br />
|}<br />
=== Кривые обучения при недообучении ===<br />
{|align="center"<br />
|-valign="top"<br />
|[[Файл:High_bias_learning_curve.png|border|500px|Кривые обучения при переобучении|thumb|Рис 8. Кривые обучения при недообучении]]<br />
|}<br />
<br />
== High variance и high bias ==<br />
'''Bias''' {{---}} ошибка неверных предположений в алгоритме обучения. Высокий '''bias''' может привести к недообучению.<br />
<br />
'''Variance''' {{---}} это ошибка, вызванная большой чувствительностью к небольшим отклонениям в тренировочном наборе. Высокая дисперсия может привести к переобучению.<br />
<br />
{|align="center"<br />
|-valign="top"<br />
|[[Файл:High_bias.jpg|border|300px|thumb|right|Рис 9. High variance и high bias]]<br />
|}<br />
<br />
При использовании нейронных сетей '''variance''' увеличивается, а '''bias''' уменьшается с увеличением количества скрытых слоев.<br />
<br />
Для устранения '''high variance''' и '''high bias''' можно использовать смеси и ансамбли. Например, можно составить ансамбль ('''boosting''') из нескольких моделей с высоким '''bias''' и получить модель с небольшим '''bias'''. В другом случае при '''bagging''' соединяются несколько моделей с низким '''bias''', а результирующая модель позволяет уменьшить '''variance'''.<br />
<br />
== Возможные решения ==<br />
=== Возможные решения при переобучении ===<br />
* Увеличение количества данных в наборе<br />
* Уменьшение количества параметров модели<br />
* Добавление регуляризации / увеличение коэффициента регуляризации<br />
<br />
=== Возможные решения при недообучении ===<br />
* Добавление новых параметров модели<br />
* Использование для описания модели функций с более высокой степенью <br />
* Уменьшение коэффициента регуляризации<br />
<br />
== См. также ==<br />
* [[Модель алгоритма и ее выбор]]<sup>[на 01.12.18 не создан]</sup><br />
* [[Оценка качества в задачах классификации и регрессии]]<sup>[на 01.12.18 не создан]</sup><br />
* [[Оценка качества в задаче кластеризации]]<sup>[на 01.12.18 не создан]</sup><br />
* [https://www.coursera.org/lecture/machine-learning/the-problem-of-overfitting-ACpTQ The Problem of Overfitting on Coursera, Andrew Ng]<br />
== Примечания ==<br />
* [http://blog.lokad.com/journal/2009/4/22/overfitting-when-accuracy-measure-goes-wrong.html Overfitting: when accuracy measure goes wrong]<br />
* [http://www3.cs.stonybrook.edu/~skiena/jaialai/excerpts/node16.html The Problem of Overfitting Data]<br />
* [https://elitedatascience.com/overfitting-in-machine-learning Overfitting in Machine Learning]<br />
<br />
== Источники информации ==<br />
# [https://en.wikipedia.org/wiki/Overfitting Overfitting] - статься на Википедии<br />
# [http://www.machinelearning.ru/wiki/index.php?title=Переобучение Переобучение] - вводная статься на MachineLearning.ru<br />
# [https://www.coursera.org/lecture/machine-learning/the-problem-of-overfitting-ACpTQ The Problem of Overfitting] - курс Andrew Ng<br />
# ''Hastie, T., Tibshirani, R., Friedman, J. '' [http://www-stat.stanford.edu/~tibs/ElemStatLearn The Elements of Statistical Learning, 2nd edition.] — Springer, 2009. — 533 p.<br />
# ''Vapnik V.N. '' [http://lib.mexmat.ru/books/9220 Statistical learning theory.] — N.Y.: John Wiley & Sons, Inc., 1998. <br />
# ''Воронцов, К. В. '' [http://www.machinelearning.ru/wiki/images/b/b6/Voron10doct.pdf Комбинаторная теория надёжности обучения по прецедентам]: Дис. док. физ.-мат. наук: 05-13-17. — Вычислительный центр РАН, 2010. — 271 с.</div>80.76.244.114http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D0%B5%D1%80%D0%B5%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5&diff=67901Переобучение2018-12-14T15:28:22Z<p>80.76.244.114: /* Примеры */</p>
<hr />
<div>'''Переобучение''' (англ. overfitting) {{---}} негативное явление, возникающее, когда алгоритм обучения вырабатывает предсказания, которые слишком близко или точно соответствуют конкретному набору данных, и поэтому не подходят для применения алгоритма к дополнительным данным или будущим наблюдениям.<br />
<br />
'''Недообучение''' (англ. underfitting) {{---}} негативное явление, при котором алгоритм обучения не обеспечивает достаточно малой величины средней ошибки на обучающей выборке. Недообучение возникает при использовании недостаточно сложных моделей.<br />
<br />
== Примеры ==<br />
=== На примере линейной регрессии<ref>[[Линейная регрессия]]</ref> ===<br />
Представьте задачу предсказания <math>y</math> по <math>x \in R</math>. Рис 1 показывает результат использования модели <math>y=θ_0+θ_1*x</math> для представленного датасета. Как видно из Рис 1 данные не поддаются линейной зависимости, и по этой причине модель не очень хороша.<br />
{|align="center"<br />
|-valign="top"<br />
|[[Файл:High_bias_reg.png|200px|thumb|Рис 1. Недообучение]]<br />
|[[Файл:Normal_bias_reg.png|200px|thumb|Рис 2. Модель подходит]]<br />
|[[Файл:High_variance_reg.png|200px|thumb|Рис 3. Переобучение]]<br />
|}<br />
Если же добавить дополнительный параметр <math>x^2</math>, и использовать модель <math>y=θ_0+θ_1*x+θ_2*x^2</math>, как представлено на Рис 2, то модель значительно лучше подходит для представленного датасета. Рис 3 показывает результат использования модели <math>y=θ_0+θ_1*x+θ_2*x^2+θ_3*x^3+θ_4*x^4</math> для представленного датасета. Как видно из Рис 3 данная модель слишком заточена для точки обучающего датасета и, веротяно, покажет плохой результат на тестовом датасете.<br />
<br />
=== На примере логистической регрессии<ref>[[Логистическая регрессия]]</ref> ===<br />
Представьте задачу классификации размеченых точек. Рис 4 показывает результат использования модели <math>g(θ_0+θ_1*x_1+θ_2*x_2)</math> для представленного датасета. Как и в предыдущем примере, данные не поддаются классификации по линейной зависимости.<br />
{|align="center"<br />
|-valign="top"<br />
|[[Файл:High_bias_cla.png|200px|thumb|Рис 4. Недообучение]]<br />
|[[Файл:Normal_bias_cla.png|200px|thumb|Рис 5. Модель подходит]]<br />
|[[Файл:High_variance_cla.png|200px|thumb|Рис 6. Переобучение]]<br />
|}<br />
В случае же выбора модели <math>g(θ_0+θ_1*x_1+θ_2*x_2+θ_3*x_1^2+θ_4*x_2^2+θ_5*x_1*x_2)</math>, представленой на Рис 5, данные значительно лучше соответствуют модели. Рис 6 показывает результат использования модели <math>g(θ_0+θ_1*x_1+θ_2*x_1^2+θ_3*x_2*x_1^2+θ_4*x_1^2*x_2^2 + ...)</math> для представленного датасета {{---}} это яркий пример явления переобучения.<br />
<br />
== Кривые обучения ==<br />
=== Кривые обучения при переобучении ===<br />
{|align="center"<br />
|-valign="top"<br />
|[[Файл:High_variance_learning_curve.png|border|500px|Кривые обучения при переобучении|thumb|Рис 7. Кривые обучения при переобучении]]<br />
|}<br />
=== Кривые обучения при недообучении ===<br />
{|align="center"<br />
|-valign="top"<br />
|[[Файл:High_bias_learning_curve.png|border|500px|Кривые обучения при переобучении|thumb|Рис 8. Кривые обучения при недообучении]]<br />
|}<br />
<br />
== High variance и high bias ==<br />
'''Bias''' {{---}} ошибка неверных предположений в алгоритме обучения. Высокий '''bias''' может привести к недообучению.<br />
<br />
'''Variance''' {{---}} это ошибка, вызванная большой чувствительностью к небольшим отклонениям в тренировочном наборе. Высокая дисперсия может привести к переобучению.<br />
<br />
{|align="center"<br />
|-valign="top"<br />
|[[Файл:High_bias.jpg|border|300px|thumb|right|Рис 9. High variance и high bias]]<br />
|}<br />
<br />
При использовании нейронных сетей '''variance''' увеличивается, а '''bias''' уменьшается с увеличением количества скрытых слоев.<br />
<br />
Для устранения '''high variance''' и '''high bias''' можно использовать смеси и ансамбли. Например, можно составить ансамбль ('''boosting''') из нескольких моделей с высоким '''bias''' и получить модель с небольшим '''bias'''. В другом случае при '''bagging''' соединяются несколько моделей с низким '''bias''', а результирующая модель позволяет уменьшить '''variance'''.<br />
<br />
== Возможные решения ==<br />
=== Возможные решения при переобучении ===<br />
* Увеличение количества данных в наборе<br />
* Уменьшение количества параметров модели<br />
* Добавление регуляризации / увеличение коэффициента регуляризации<br />
<br />
=== Возможные решения при недообучении ===<br />
* Добавление новых параметров модели<br />
* Использование для описания модели функций с более высокой степенью <br />
* Уменьшение коэффициента регуляризации<br />
<br />
== См. также ==<br />
* [[Модель алгоритма и ее выбор]]<sup>[на 01.12.18 не создан]</sup><br />
* [[Оценка качества в задачах классификации и регрессии]]<sup>[на 01.12.18 не создан]</sup><br />
* [[Оценка качества в задаче кластеризации]]<sup>[на 01.12.18 не создан]</sup><br />
* [https://www.coursera.org/lecture/machine-learning/the-problem-of-overfitting-ACpTQ The Problem of Overfitting on Coursera, Andrew Ng]<br />
== Примечания ==<br />
* [http://blog.lokad.com/journal/2009/4/22/overfitting-when-accuracy-measure-goes-wrong.html Overfitting: when accuracy measure goes wrong]<br />
* [http://www3.cs.stonybrook.edu/~skiena/jaialai/excerpts/node16.html The Problem of Overfitting Data]<br />
* [https://elitedatascience.com/overfitting-in-machine-learning Overfitting in Machine Learning]<br />
<br />
== Источники информации ==<br />
# [https://en.wikipedia.org/wiki/Overfitting Overfitting] - статься на Википедии<br />
# [http://www.machinelearning.ru/wiki/index.php?title=Переобучение Переобучение] - вводная статься на MachineLearning.ru<br />
# [https://www.coursera.org/lecture/machine-learning/the-problem-of-overfitting-ACpTQ The Problem of Overfitting] - курс Andrew Ng<br />
# ''Hastie, T., Tibshirani, R., Friedman, J. '' [http://www-stat.stanford.edu/~tibs/ElemStatLearn The Elements of Statistical Learning, 2nd edition.] — Springer, 2009. — 533 p.<br />
# ''Vapnik V.N. '' [http://lib.mexmat.ru/books/9220 Statistical learning theory.] — N.Y.: John Wiley & Sons, Inc., 1998. <br />
# ''Воронцов, К. В. '' [http://www.machinelearning.ru/wiki/images/b/b6/Voron10doct.pdf Комбинаторная теория надёжности обучения по прецедентам]: Дис. док. физ.-мат. наук: 05-13-17. — Вычислительный центр РАН, 2010. — 271 с.</div>80.76.244.114http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D0%B5%D1%80%D0%B5%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5&diff=67746Переобучение2018-12-10T19:29:28Z<p>80.76.244.114: </p>
<hr />
<div>'''Переобучение''' (англ. overfitting) {{---}} негативное явление, возникающее, когда алгоритм обучения вырабатывает предсказания, которые слишком близко или точно соответствуют конкретному набору данных, и поэтому не подходят для применения алгоритма к дополнительным данным или будущим наблюдениям.<br />
<br />
'''Недообучение''' (англ. underfitting) {{---}} негативное явление, когда алгоритм обучения не обеспечивает достаточно малой величины средней ошибки на обучающей выборке. Недообучение возникает при использовании недостаточно сложных моделей.<br />
<br />
== Примеры ==<br />
=== На примере линейной регрессии ===<br />
Представьте задачу предсказания <math>y</math> по <math>x \in R</math>. Рис 1 показывает результат использования модели <math>y=θ_0+θ_1*x</math> для представленного датасета. Как видно из Рис 1 данные не поддаются линейной зависимости, и по этой причине модель не очень хороша.<br />
{|align="center"<br />
|-valign="top"<br />
|[[Файл:High_bias_reg.png|200px|thumb|Рис 1. Недообучение]]<br />
|[[Файл:Normal_bias_reg.png|200px|thumb|Рис 2. Модель подходит]]<br />
|[[Файл:High_variance_reg.png|200px|thumb|Рис 3. Переобучение]]<br />
|}<br />
Если же добавить дополнительный параметр <math>x^2</math>, и использовать модель <math>y=θ_0+θ_1*x+θ_2*x^2</math>, как представлено на Рис 2, то модель значительно лучше подходит для представленного датасета. Рис 3 показывает результат использования модели <math>y=θ_0+θ_1*x+θ_2*x^2+θ_3*x^3+θ_4*x^4</math> для представленного датасета. Как видно из Рис 3 данная модель слишком заточена для точки обучающего датасета и, веротяно, покажет плохой результат на тестовом датасете.<br />
<br />
=== На примере логистической регрессии ===<br />
Представьте задачу классификации размеченых точек. Рис 4 показывает результат использования модели <math>g(θ_0+θ_1*x_1+θ_2*x_2)</math> для представленного датасета. Как и в предыдущем примере, данные не поддаются классификации по линейной зависимости.<br />
{|align="center"<br />
|-valign="top"<br />
|[[Файл:High_bias_cla.png|200px|thumb|Рис 4. Недообучение]]<br />
|[[Файл:Normal_bias_cla.png|200px|thumb|Рис 5. Модель подходит]]<br />
|[[Файл:High_variance_cla.png|200px|thumb|Рис 6. Переобучение]]<br />
|}<br />
В случае же выбора модели <math>g(θ_0+θ_1*x_1+θ_2*x_2+θ_3*x_1^2+θ_4*x_2^2+θ_5*x_1*x_2)</math>, представленой на Рис 5, данные значительно лучше соответствуют модели. Рис 6 показывает результат использования модели <math>g(θ_0+θ_1*x_1+θ_2*x_1^2+θ_3*x_2*x_1^2+θ_4*x_1^2*x_2^2 + ...)</math> для представленного датасета {{---}} это яркий пример явления переобучения. <br />
<br />
== Кривые обучения ==<br />
=== Кривые обучения при переобучении ===<br />
[[Файл:High_variance_learning_curve.png|border|500px|Кривые обучения при переобучении]]<br />
=== Кривые обучения при недообучении ===<br />
[[Файл:High_bias_learning_curve.png|border|500px|Кривые обучения при недообучении]]<br />
<br />
== High variance и high bias ==<br />
'''Bias''' {{---}} ошибка неверных предположений в алгоритме обучения. Высокий bias может привести к недообучению.<br />
<br />
'''Variance''' {{---}} это ошибка, вызванная большой чувствительностью к небольшим отклонениям в тренировочном наборе. Высокая дисперсия может привести к переобучению.<br />
<br />
{|align="center"<br />
|-valign="top"<br />
|[[Файл:High_bias.jpg|border|300px|thumb|right|Рис 9. High variance и high bias]]<br />
|}<br />
<br />
При использовании нейронных сетей variance увеличивается, а bias уменьшается с увеличением количества скрытых слоев.<br />
<br />
Для устранения high variance и high bias можно использовать смеси и ансамбли. Например, можно составить ансамбль (boosting) из нескольких моделей с высоким bias и получить модель с небольшим bias. В другом случае при bagging соединяются несколько моделей с низким bias, а результирующая модель позволяет уменьшить variance.<br />
<br />
== Возможные решения ==<br />
=== Возможные решения при переобучении ===<br />
* Увеличение количества данных в наборе<br />
* Уменьшение количества параметров модели<br />
* Добавление регуляризации / увеличение коэффициента регуляризации<br />
<br />
=== Возможные решения при недообучении ===<br />
* Добавление новых параметров модели<br />
* Использование для описания модели функций с более высокой степенью <br />
* Уменьшение коэффициента регуляризации<br />
<br />
== См. также ==<br />
* [[Модель алгоритма и ее выбор]]<sup>[на 01.12.18 не создан]</sup><br />
* [[Оценка качества в задачах классификации и регрессии]]<sup>[на 01.12.18 не создан]</sup><br />
* [[Оценка качества в задаче кластеризации]]<sup>[на 01.12.18 не создан]</sup><br />
<br />
== Примечания ==<br />
* [http://blog.lokad.com/journal/2009/4/22/overfitting-when-accuracy-measure-goes-wrong.html Overfitting: when accuracy measure goes wrong]<br />
* [http://www3.cs.stonybrook.edu/~skiena/jaialai/excerpts/node16.html The Problem of Overfitting Data]<br />
* [https://elitedatascience.com/overfitting-in-machine-learning Overfitting in Machine Learning]<br />
<br />
== Источники информации ==<br />
# [https://en.wikipedia.org/wiki/Overfitting Overfitting] - статься на Википедии<br />
# [http://www.machinelearning.ru/wiki/index.php?title=Переобучение Переобучение] - вводная статься на MachineLearning.ru<br />
# [https://www.coursera.org/lecture/machine-learning/the-problem-of-overfitting-ACpTQ The Problem of Overfitting] - курс Andrew Ng<br />
# ''Hastie, T., Tibshirani, R., Friedman, J. '' [http://www-stat.stanford.edu/~tibs/ElemStatLearn The Elements of Statistical Learning, 2nd edition.] — Springer, 2009. — 533 p.<br />
# ''Vapnik V.N. '' [http://lib.mexmat.ru/books/9220 Statistical learning theory.] — N.Y.: John Wiley & Sons, Inc., 1998. <br />
# ''Воронцов, К. В. '' [http://www.machinelearning.ru/wiki/images/b/b6/Voron10doct.pdf Комбинаторная теория надёжности обучения по прецедентам]: Дис. док. физ.-мат. наук: 05-13-17. — Вычислительный центр РАН, 2010. — 271 с.</div>80.76.244.114http://neerc.ifmo.ru/wiki/index.php?title=%D0%93%D0%BB%D1%83%D0%B1%D0%BE%D0%BA%D0%BE%D0%B5_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5&diff=67743Глубокое обучение2018-12-10T19:21:31Z<p>80.76.244.114: /* Применения */</p>
<hr />
<div>'''Глубокое обучение''' (англ. deep learning) {{---}} совокупность широкого семейства методов машинного обучения, основанных на обучении представлениям, а не специализированным алгоритмам под конкретные задачи. Глубокое обучение может быть с учителем, с частичным привлечением учителя, без учителя и с подкреплением. Несмотря на то, что данный раздел машинного обучения появился еще в 1980-х, до недавнего времени его применение было сильно ограничено из-за недостака вычислительных мощностей существовавших компьютеров. Ситуация изменилась только в середине 2000-х.<br />
<br />
На создание моделей глубокого обучения оказали влияние некоторые процессы и паттерны, происходящие в биологических нейронных системах. Несмотря на это, данные модели во многом отличаются от биологического мозга (и в структуре и в функциях), что делает невозможным использование теорем и доказательств, применяющихся в нейробиологии.<br />
<br />
== История ==<br />
* 1943 - Искусственный нейрон Маккаллока — Питтса<ref>[https://en.wikipedia.org/wiki/Artificial_neuron Artificial neuron, Wikipedia]</ref> {{---}} узел искусственной нейронной сети, являющийся упрощённой моделью естественного нейрона.<br />
* 1949 - Принцип обучения нейронов Хебба<ref>[https://en.wikipedia.org/wiki/Hebbian_theory Hebbian theory, Wikipedia]</ref> {{---}} изначально наблюдаемая причинно-следственная связь между активациями пре- и постсинаптического нейрона, имеет тенденцию к усилению.<br />
* 1957 - Модель перцептрона предложена Фрэнком Розенблаттом<ref>[https://en.wikipedia.org/wiki/Perceptron Perceptron, Wikipedia]</ref> {{---}} математическая или компьютерная модель восприятия информации мозгом.<br />
* 1960 - Дельта-правило обучения перцептрона<ref>[https://en.wikipedia.org/wiki/Delta_rule Delta rule, Wikipedia]</ref> {{---}} метод обучения перцептрона по принципу градиентного спуска по поверхности ошибки.<br />
* 1969 - Выход книги Марвина Минска и Сеймура Паперта "Перцептроны"<ref>[https://en.wikipedia.org/wiki/Perceptrons_(book) Perceptrons book, WIkipedia]</ref>. В данной книге математически показаны ограничения перцептронов.<br />
* 1974 - Метод обратного распространения ошибки впервые предложен А. И. Галушкиным и Дж. Вербосом<ref>[https://en.wikipedia.org/wiki/Backpropagation Backpropagation, Wikipedia]</ref> {{---}} метод вычисления градиента, который используется при обновлении весов многослойного перцептрона.<br />
* 1980 - Первая свёрточная нейронная сеть предложена Кунихико Фукусимой<ref>[https://en.wikipedia.org/wiki/Convolutional_neural_network Convolutional_neural_network, Wikipedia]</ref> {{---}} специальная архитектура искусственных нейронных сетей использующая некоторые особенности зрительной коры.<br />
* 1982 - Рекуррентные нейронные сети предложены Д. Хопфилдом {{---}} вид нейронных сетей, где связи между элементами образуют направленную последовательность.<br />
* 1991 - Проблема "исчезающего" градиента была сформулирована С. Хочрейтом. Проблема "исчезающего" градиента заключается в быстрой потере информации с течением времени.<br />
* 1997 - Долгая краткосрочная память предложена С. Хочрейтом и Ю. Шмидхубером<ref>[https://en.wikipedia.org/wiki/Long_short-term_memory Long short-term memory, Wikipedia]</ref>. В отличие от традиционных рекуррентных нейронных сетей, LSTM-сеть хорошо приспособлена к обучению на задачах классификации, обработки и прогнозирования временных рядов в случаях, когда важные события разделены временными лагами с неопределённой продолжительностью и границами.<br />
* 1998 - Градиентный спуск для сверточных нейронных сетей предложен Я. Лекуном.<br />
* 2006 - Публикации Г. Хинтона, С. Осиндера и Я. Теха об обучении сетей глубоких убеждений. Данные публикации, а также их активное освещение в средствах массовой информации смогли привлечь внимание ученых и разработчиков со всего мира к глубоким сетям.<br />
* 2012 - Предложение дропаута Г. Хинтоном, А. Крижевски и И. Шутковичем<ref>[https://en.wikipedia.org/wiki/Dropout_(neural_networks) Dropout, Wikipedia]</ref>. Дропаут (от англ. dropout) — метод регуляризации искусственных нейронных сетей, предназначен для предотвращения переобучения сети.<br />
* 2012 - Нейронные сети побеждают в ImageNet Challenge<ref>[https://en.wikipedia.org/wiki/ImageNet#ImageNet_Challenge ImageNet Challenge, Wikipedia]</ref>. Данное событие ознаменовало начало эры нейронных сетей и глубокого обучения.<br />
<br />
Начиная с 2012 года машинное обучение во-многом фокусируется на глубоких сетях. Искусственный интеллект и машинное обучение обычно упоминаются в контексте глубокого обучения.<br />
<br />
Глубокое обучение используется [http://neerc.ifmo.ru/wiki/index.php?title=%D0%93%D0%BB%D1%83%D0%B1%D0%BE%D0%BA%D0%BE%D0%B5_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5#.D0.9F.D1.80.D0.B8.D0.BC.D0.B5.D0.BD.D0.B5.D0.BD.D0.B8.D1.8F во-многих сферах].<br />
<br />
== Определение == <br />
'''Глубокое обучение''' {{---}} это класс алгоритмов машинного обучения, который:<br />
<br />
* использует многослойную систему нелинейных фильтров для извлечения признаков с преобразованиями. Каждый последующий слой получает на входе выходные данные предыдущего слоя. <br />
* может сочетать алгоритмы обучения с учителем (пример {{---}} классификация) и без учителя (пример {{---}} анализ образца).<br />
* формирует в процессе обучения слои выявления признаков на нескольких уровнях представлений, которые соответствуют различным уровням абстракции; при этом признаки организованы иерархически - признаки более высокого уровня являются производными от признаков более низкого уровня.<br />
<br />
== Нейронные сети ==<br />
* Искусственные нейронные сети (англ. artificial neural networks (ANN))<ref>[https://en.wikipedia.org/wiki/Artificial_neural_network Artificial neural network, Wikipedia]</ref><br />
* Глубокие нейронные сети (англ. deep neural network (DNN))<ref>[https://en.wikipedia.org/wiki/Deep_learning#Deep_neural_networks Deep neural networks , Wikipedia]</ref><br />
<br />
== Применения ==<br />
* Распознавание речи<ref>[https://en.wikipedia.org/wiki/Speech_recognition Speech recognition, Wikipedia]</ref>. Все основные коммерческие системы распознавания речи (например, Microsoft Cortana, Xbox, Skype Translator, Amazon Alexa, Google Now, Apple Siri, Baidu и iFlyTek) основаны на глубоком обучении.<br />
* [[:Задача нахождения объектов на изображении | Компьютерное зрение]]<sup>[на 06.12.18 не создан]</sup>. На сегодняшний день системы распознавания образов основанные на глубоком обучении уже умеют давать более точные результаты, чем человеческий глаз<ref>[https://www.sciencedirect.com/science/article/pii/S0893608012000524 Multi-column deep neural network for traffic sign classification]</ref>.<br />
* Обработка естественного языка<ref>[https://en.wikipedia.org/wiki/Natural_language_processing Natural language processing, Wikipedia]</ref>. Нейронные сети использовались для реализации языковых моделей еще с начала 2000-х годов. Изобретение LSTM помогло улучшить машинный перевод и языковое моделирование<ref>[https://papers.nips.cc/paper/5346-sequence-to-sequence-learning-with-neural-networks.pdf Sequence to Sequence Learning with Neural Networks]</ref>.<br />
* Обнаружение новых лекарственных препаратов. К примеру, нейронная сеть AtomNet использовалась для прогнозирования новых биомолекул - кандидатов для лечения таких заболевания, как вирус Эбола и рассеянный склероз.<br />
* Рекомендательные системы<ref>[https://en.wikipedia.org/wiki/Recommender_system Recommender system, Wikipedia]</ref>. На сегодняшний день глубокое обучение применяется для изучения пользовательских предпочтений во многих доменах.<br />
* Предсказание генномных онтологий в биоинформатике<ref>[https://en.wikipedia.org/wiki/Deep_learning#Bioinformatics Deep learning in bioinformatics, Wikipedia]</ref>.<br />
<br />
Полный список возможных применений глубокого обучения<ref>[https://en.wikipedia.org/wiki/Deep_learning#Applications Applications of deep learning, Wikipedia]</ref>.<br />
<br />
== Фреймворки для глубокого обучения ==<br />
* TensorFlow<ref>[https://en.wikipedia.org/wiki/TensorFlow TensorFlow, Wikipedia]</ref><br />
* Microsoft Cognitive Toolkit<ref>[https://en.wikipedia.org/wiki/Microsoft_Cognitive_Toolkit Microsoft Cognitive Toolkit, Wikipedia]</ref><br />
* Wolfram Mathematica<ref>[https://en.wikipedia.org/wiki/Wolfram_Mathematica Wolfram Mathematica, Wikipedia]</ref><br />
* Keras<ref>[https://en.wikipedia.org/wiki/Keras Keras, Wikipedia]</ref><br />
* Deeplearning4j<ref>[https://en.wikipedia.org/wiki/Deeplearning4j Deeplearning4j, Wikipedia]</ref><br />
* Caffe<ref>[https://en.wikipedia.org/wiki/Caffe_(software) Caffe, Wikipedia]</ref><br />
* Torch/PyTorch<ref>[https://habr.com/post/334380 PyTorch — ваш новый фреймворк глубокого обучения, habr]</ref><br />
* MXNet<ref>[https://mxnet.apache.org MXNet, official site]</ref><br />
* Chainer<ref>[https://chainer.org Chainer, official site]</ref><br />
Сопоставление фреймворков, библиотек и отдельных программ для глубокого обучения<ref>[https://en.wikipedia.org/wiki/Comparison_of_deep_learning_software Comparison of deep learning software, Wikipedia]</ref>.<br />
<br />
== См. также ==<br />
* [[:Нейронные сети, перцептрон]]<sup>[на 06.12.18 не создан]</sup><br />
* [[:Сверточные нейронные сети]]<sup>[на 06.12.18 не создан]</sup><br />
* [[:Рекуррентные нейронные сети]]<sup>[на 06.12.18 не создан]</sup><br />
* [[:Обучение с подкреплением]]<sup>[на 06.12.18 не создан]</sup><br />
<br />
== Примечания ==<br />
<references/><br />
<br />
== Источники информации ==<br />
* [https://en.wikipedia.org/wiki/Deep_learning Deep learning, Wikipedia]<br />
* [https://ru.wikipedia.org/wiki/Глубокое_обучение Глубокое обучение, Wikipedia]<br />
* [http://www.deeplearningbook.org/ Deep Learning Book, MIT]<br />
* [https://towardsdatascience.com/multi-layer-neural-networks-with-sigmoid-function-deep-learning-for-rookies-2-bf464f09eb7f Multi-Layer Neural Networks with Sigmoid Function, Towards Data Science]<br />
* [https://www.kaggle.com/dansbecker/rectified-linear-units-relu-in-deep-learning Rectified Linear Units (ReLU) in Deep Learning, Kaggle]</div>80.76.244.114http://neerc.ifmo.ru/wiki/index.php?title=%D0%93%D0%BB%D1%83%D0%B1%D0%BE%D0%BA%D0%BE%D0%B5_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5&diff=67742Глубокое обучение2018-12-10T19:21:10Z<p>80.76.244.114: /* Применения */</p>
<hr />
<div>'''Глубокое обучение''' (англ. deep learning) {{---}} совокупность широкого семейства методов машинного обучения, основанных на обучении представлениям, а не специализированным алгоритмам под конкретные задачи. Глубокое обучение может быть с учителем, с частичным привлечением учителя, без учителя и с подкреплением. Несмотря на то, что данный раздел машинного обучения появился еще в 1980-х, до недавнего времени его применение было сильно ограничено из-за недостака вычислительных мощностей существовавших компьютеров. Ситуация изменилась только в середине 2000-х.<br />
<br />
На создание моделей глубокого обучения оказали влияние некоторые процессы и паттерны, происходящие в биологических нейронных системах. Несмотря на это, данные модели во многом отличаются от биологического мозга (и в структуре и в функциях), что делает невозможным использование теорем и доказательств, применяющихся в нейробиологии.<br />
<br />
== История ==<br />
* 1943 - Искусственный нейрон Маккаллока — Питтса<ref>[https://en.wikipedia.org/wiki/Artificial_neuron Artificial neuron, Wikipedia]</ref> {{---}} узел искусственной нейронной сети, являющийся упрощённой моделью естественного нейрона.<br />
* 1949 - Принцип обучения нейронов Хебба<ref>[https://en.wikipedia.org/wiki/Hebbian_theory Hebbian theory, Wikipedia]</ref> {{---}} изначально наблюдаемая причинно-следственная связь между активациями пре- и постсинаптического нейрона, имеет тенденцию к усилению.<br />
* 1957 - Модель перцептрона предложена Фрэнком Розенблаттом<ref>[https://en.wikipedia.org/wiki/Perceptron Perceptron, Wikipedia]</ref> {{---}} математическая или компьютерная модель восприятия информации мозгом.<br />
* 1960 - Дельта-правило обучения перцептрона<ref>[https://en.wikipedia.org/wiki/Delta_rule Delta rule, Wikipedia]</ref> {{---}} метод обучения перцептрона по принципу градиентного спуска по поверхности ошибки.<br />
* 1969 - Выход книги Марвина Минска и Сеймура Паперта "Перцептроны"<ref>[https://en.wikipedia.org/wiki/Perceptrons_(book) Perceptrons book, WIkipedia]</ref>. В данной книге математически показаны ограничения перцептронов.<br />
* 1974 - Метод обратного распространения ошибки впервые предложен А. И. Галушкиным и Дж. Вербосом<ref>[https://en.wikipedia.org/wiki/Backpropagation Backpropagation, Wikipedia]</ref> {{---}} метод вычисления градиента, который используется при обновлении весов многослойного перцептрона.<br />
* 1980 - Первая свёрточная нейронная сеть предложена Кунихико Фукусимой<ref>[https://en.wikipedia.org/wiki/Convolutional_neural_network Convolutional_neural_network, Wikipedia]</ref> {{---}} специальная архитектура искусственных нейронных сетей использующая некоторые особенности зрительной коры.<br />
* 1982 - Рекуррентные нейронные сети предложены Д. Хопфилдом {{---}} вид нейронных сетей, где связи между элементами образуют направленную последовательность.<br />
* 1991 - Проблема "исчезающего" градиента была сформулирована С. Хочрейтом. Проблема "исчезающего" градиента заключается в быстрой потере информации с течением времени.<br />
* 1997 - Долгая краткосрочная память предложена С. Хочрейтом и Ю. Шмидхубером<ref>[https://en.wikipedia.org/wiki/Long_short-term_memory Long short-term memory, Wikipedia]</ref>. В отличие от традиционных рекуррентных нейронных сетей, LSTM-сеть хорошо приспособлена к обучению на задачах классификации, обработки и прогнозирования временных рядов в случаях, когда важные события разделены временными лагами с неопределённой продолжительностью и границами.<br />
* 1998 - Градиентный спуск для сверточных нейронных сетей предложен Я. Лекуном.<br />
* 2006 - Публикации Г. Хинтона, С. Осиндера и Я. Теха об обучении сетей глубоких убеждений. Данные публикации, а также их активное освещение в средствах массовой информации смогли привлечь внимание ученых и разработчиков со всего мира к глубоким сетям.<br />
* 2012 - Предложение дропаута Г. Хинтоном, А. Крижевски и И. Шутковичем<ref>[https://en.wikipedia.org/wiki/Dropout_(neural_networks) Dropout, Wikipedia]</ref>. Дропаут (от англ. dropout) — метод регуляризации искусственных нейронных сетей, предназначен для предотвращения переобучения сети.<br />
* 2012 - Нейронные сети побеждают в ImageNet Challenge<ref>[https://en.wikipedia.org/wiki/ImageNet#ImageNet_Challenge ImageNet Challenge, Wikipedia]</ref>. Данное событие ознаменовало начало эры нейронных сетей и глубокого обучения.<br />
<br />
Начиная с 2012 года машинное обучение во-многом фокусируется на глубоких сетях. Искусственный интеллект и машинное обучение обычно упоминаются в контексте глубокого обучения.<br />
<br />
Глубокое обучение используется [http://neerc.ifmo.ru/wiki/index.php?title=%D0%93%D0%BB%D1%83%D0%B1%D0%BE%D0%BA%D0%BE%D0%B5_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5#.D0.9F.D1.80.D0.B8.D0.BC.D0.B5.D0.BD.D0.B5.D0.BD.D0.B8.D1.8F во-многих сферах].<br />
<br />
== Определение == <br />
'''Глубокое обучение''' {{---}} это класс алгоритмов машинного обучения, который:<br />
<br />
* использует многослойную систему нелинейных фильтров для извлечения признаков с преобразованиями. Каждый последующий слой получает на входе выходные данные предыдущего слоя. <br />
* может сочетать алгоритмы обучения с учителем (пример {{---}} классификация) и без учителя (пример {{---}} анализ образца).<br />
* формирует в процессе обучения слои выявления признаков на нескольких уровнях представлений, которые соответствуют различным уровням абстракции; при этом признаки организованы иерархически - признаки более высокого уровня являются производными от признаков более низкого уровня.<br />
<br />
== Нейронные сети ==<br />
* Искусственные нейронные сети (англ. artificial neural networks (ANN))<ref>[https://en.wikipedia.org/wiki/Artificial_neural_network Artificial neural network, Wikipedia]</ref><br />
* Глубокие нейронные сети (англ. deep neural network (DNN))<ref>[https://en.wikipedia.org/wiki/Deep_learning#Deep_neural_networks Deep neural networks , Wikipedia]</ref><br />
<br />
== Применения ==<br />
* Распознавание речи<ref>[https://en.wikipedia.org/wiki/Speech_recognition Speech recognition, Wikipedia]</ref>. Все основные коммерческие системы распознавания речи (например, Microsoft Cortana, Xbox, Skype Translator, Amazon Alexa, Google Now, Apple Siri, Baidu и iFlyTek) основаны на глубоком обучении.<br />
* Компьютерное зрение [[:Задача нахождения объектов на изображении]]<sup>[на 06.12.18 не создан]</sup>. На сегодняшний день системы распознавания образов основанные на глубоком обучении уже умеют давать более точные результаты, чем человеческий глаз<ref>[https://www.sciencedirect.com/science/article/pii/S0893608012000524 Multi-column deep neural network for traffic sign classification]</ref>.<br />
* Обработка естественного языка<ref>[https://en.wikipedia.org/wiki/Natural_language_processing Natural language processing, Wikipedia]</ref>. Нейронные сети использовались для реализации языковых моделей еще с начала 2000-х годов. Изобретение LSTM помогло улучшить машинный перевод и языковое моделирование<ref>[https://papers.nips.cc/paper/5346-sequence-to-sequence-learning-with-neural-networks.pdf Sequence to Sequence Learning with Neural Networks]</ref>.<br />
* Обнаружение новых лекарственных препаратов. К примеру, нейронная сеть AtomNet использовалась для прогнозирования новых биомолекул - кандидатов для лечения таких заболевания, как вирус Эбола и рассеянный склероз.<br />
* Рекомендательные системы<ref>[https://en.wikipedia.org/wiki/Recommender_system Recommender system, Wikipedia]</ref>. На сегодняшний день глубокое обучение применяется для изучения пользовательских предпочтений во многих доменах.<br />
* Предсказание генномных онтологий в биоинформатике<ref>[https://en.wikipedia.org/wiki/Deep_learning#Bioinformatics Deep learning in bioinformatics, Wikipedia]</ref>.<br />
<br />
Полный список возможных применений глубокого обучения<ref>[https://en.wikipedia.org/wiki/Deep_learning#Applications Applications of deep learning, Wikipedia]</ref>.<br />
<br />
== Фреймворки для глубокого обучения ==<br />
* TensorFlow<ref>[https://en.wikipedia.org/wiki/TensorFlow TensorFlow, Wikipedia]</ref><br />
* Microsoft Cognitive Toolkit<ref>[https://en.wikipedia.org/wiki/Microsoft_Cognitive_Toolkit Microsoft Cognitive Toolkit, Wikipedia]</ref><br />
* Wolfram Mathematica<ref>[https://en.wikipedia.org/wiki/Wolfram_Mathematica Wolfram Mathematica, Wikipedia]</ref><br />
* Keras<ref>[https://en.wikipedia.org/wiki/Keras Keras, Wikipedia]</ref><br />
* Deeplearning4j<ref>[https://en.wikipedia.org/wiki/Deeplearning4j Deeplearning4j, Wikipedia]</ref><br />
* Caffe<ref>[https://en.wikipedia.org/wiki/Caffe_(software) Caffe, Wikipedia]</ref><br />
* Torch/PyTorch<ref>[https://habr.com/post/334380 PyTorch — ваш новый фреймворк глубокого обучения, habr]</ref><br />
* MXNet<ref>[https://mxnet.apache.org MXNet, official site]</ref><br />
* Chainer<ref>[https://chainer.org Chainer, official site]</ref><br />
Сопоставление фреймворков, библиотек и отдельных программ для глубокого обучения<ref>[https://en.wikipedia.org/wiki/Comparison_of_deep_learning_software Comparison of deep learning software, Wikipedia]</ref>.<br />
<br />
== См. также ==<br />
* [[:Нейронные сети, перцептрон]]<sup>[на 06.12.18 не создан]</sup><br />
* [[:Сверточные нейронные сети]]<sup>[на 06.12.18 не создан]</sup><br />
* [[:Рекуррентные нейронные сети]]<sup>[на 06.12.18 не создан]</sup><br />
* [[:Обучение с подкреплением]]<sup>[на 06.12.18 не создан]</sup><br />
<br />
== Примечания ==<br />
<references/><br />
<br />
== Источники информации ==<br />
* [https://en.wikipedia.org/wiki/Deep_learning Deep learning, Wikipedia]<br />
* [https://ru.wikipedia.org/wiki/Глубокое_обучение Глубокое обучение, Wikipedia]<br />
* [http://www.deeplearningbook.org/ Deep Learning Book, MIT]<br />
* [https://towardsdatascience.com/multi-layer-neural-networks-with-sigmoid-function-deep-learning-for-rookies-2-bf464f09eb7f Multi-Layer Neural Networks with Sigmoid Function, Towards Data Science]<br />
* [https://www.kaggle.com/dansbecker/rectified-linear-units-relu-in-deep-learning Rectified Linear Units (ReLU) in Deep Learning, Kaggle]</div>80.76.244.114http://neerc.ifmo.ru/wiki/index.php?title=%D0%93%D0%BB%D1%83%D0%B1%D0%BE%D0%BA%D0%BE%D0%B5_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5&diff=67638Глубокое обучение2018-12-07T17:18:52Z<p>80.76.244.114: /* Применения */ Для Лера</p>
<hr />
<div>'''Глубокое обучение''' (англ. deep learning) {{---}} совокупность широкого семейства методов машинного обучения, основанных на обучении представлениям, а не специализированным алгоритмам под конкретные задачи. Глубокое обучение может быть с учителем, с частичным привлечением учителя, без учителя и с подкреплением. Несмотря на то, что данный раздел машинного обучения появился еще в 1980-х, до недавнего времени его применение было сильно ограничено из-за недостака вычислительных мощностей существовавших компьютеров. Ситуация изменилась только в середине 2000-х.<br />
<br />
На создание моделей глубокого обучения оказали влияние некоторые процессы и паттерны, происходящие в биологических нейронных системах. Несмотря на это, данные модели имеют множество различий с биологическим мозгом (и в структуре и в функциях), что делает невозможным использование теорем и доказательств, применяющихся нейробиологии.<br />
<br />
== История ==<br />
* 1943 - Искусственный нейрон Маккаллока — Питтса<ref>[https://en.wikipedia.org/wiki/Artificial_neuron Artificial neuron, Wikipedia]</ref> {{---}} узел искусственной нейронной сети, являющийся упрощённой моделью естественного нейрона.<br />
* 1949 - Принчип обучения нейронов Хебба<ref>[https://en.wikipedia.org/wiki/Hebbian_theory Hebbian theory, Wikipedia]</ref> {{---}} изначально наблюдаемая причинно-следственная связь между активациями пре- и постсинаптического нейрона, имеет тенденцию к усилению.<br />
* 1957 - Модель перцептрона предложена Фрэнком Розенблаттом<ref>[https://en.wikipedia.org/wiki/Perceptron Perceptron, Wikipedia]</ref> {{---}} математическая или компьютерная модель восприятия информации мозгом.<br />
* 1960 - Дельта-правило обучения перцептрона<ref>[https://en.wikipedia.org/wiki/Delta_rule Delta rule, Wikipedia]</ref> {{---}} метод обучения перцептрона по принципу градиентного спуска по поверхности ошибки.<br />
* 1969 - Выход книги Марвина Минска и Сеймура Паперта "Перцептроны"<ref>[https://en.wikipedia.org/wiki/Perceptrons_(book) Perceptrons book, WIkipedia]</ref>. В данной книге математически показаны ограничения перцептронов.<br />
* 1974 - Метод обратного распространения ошибки впервые предложен А. И. Галушкиным и Дж. Вербосом<ref>[https://en.wikipedia.org/wiki/Backpropagation Backpropagation, Wikipedia]</ref> {{---}} метод вычисления градиента, который используется при обновлении весов многослойного перцептрона.<br />
* 1980 - Первая свёрточная нейронная сеть предложена Кунихико Фукусимой<ref>[https://en.wikipedia.org/wiki/Convolutional_neural_network Convolutional_neural_network, Wikipedia]</ref> {{---}} специальная архитектура искусственных нейронных сетей использующая некоторые особенности зрительной коры.<br />
* 1982 - Рекуррентные нейронные сети предложены Д. Хопфилдом {{---}} вид нейронных сетей, где связи между элементами образуют направленную последовательность.<br />
* 1991 - Проблема "исчезающего" градиента была сформулирована С. Хочрейтом. Проблема "исчезающего" градиента заключается в быстрой потере информации с течением времени.<br />
* 1997 - Долгая краткосрочная память предложена С. Хочрейтом и Ю. Шмидхубером<ref>[https://en.wikipedia.org/wiki/Long_short-term_memory Long short-term memory, Wikipedia]</ref>. В отличие от традиционных рекуррентных нейронных сетей, LSTM-сеть хорошо приспособлена к обучению на задачах классификации, обработки и прогнозирования временных рядов в случаях, когда важные события разделены временными лагами с неопределённой продолжительностью и границами.<br />
* 1998 - Градиентный спуск для сверточных нейронных сетей предложена Я. Лекуном.<br />
* 2006 - Публикации Г. Хинтона, С. Осиндера и Я. Теха об обучении сетей глубоких убеждений. Данные публикации, а также их активное освещение в средствах массовой информации смогли привлечь внимание ученых и разработчиков со всего мира к глубоким сетям.<br />
* 2012 - Предложение дропаута Г. Хинтоном, А. Крижевски и И. Шутковичем<ref>[https://en.wikipedia.org/wiki/Dropout_(neural_networks) Dropout, Wikipedia]</ref>. Дропаут (от англ. dropout) — метод регуляризации искусственных нейронных сетей, предназначен для предотвращения переобучения сети.<br />
* 2012 - Нейронные сети побеждают в ImageNet Challenge<ref>[https://en.wikipedia.org/wiki/ImageNet#ImageNet_Challenge ImageNet Challenge, Wikipedia]</ref>. Данное событие ознаменовало начало эры нейронных сетей и глубокого обучения.<br />
<br />
Начиная с 2012 года машинное обучение во-многом фокусируется на глубоких сетях. Искусственный интеллект и машинное обучение обычно упоминаются в контексте глубокого обучения.<br />
<br />
Глубокое обучение используется [http://neerc.ifmo.ru/wiki/index.php?title=%D0%93%D0%BB%D1%83%D0%B1%D0%BE%D0%BA%D0%BE%D0%B5_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5#.D0.9F.D1.80.D0.B8.D0.BC.D0.B5.D0.BD.D0.B5.D0.BD.D0.B8.D1.8F во-многих сферах].<br />
<br />
== Определение == <br />
'''Глубокое обучение''' {{---}} это класс алгоритмов машинного обучения, который:<br />
<br />
* использует многослойную систему нелинейных фильтров для извлечения признаков с преобразованиями. Каждый последующий слой получает на входе выходные данные предыдущего слоя. <br />
* может сочетать алгоритмы обучения с учителем (пример {{---}} классификация) и без учителя (пример {{---}} анализ образца).<br />
* формирует в процессе обучения слои выявления признаков на нескольких уровнях представлений, которые соответствуют различным уровням абстракции; при этом признаки организованы иерархически - признаки более высокого уровня являются производными от признаков более низкого уровня.<br />
<br />
== Нейронные сети ==<br />
* Искусственные нейронные сети (англ. artificial neural networks (ANN))<ref>[https://en.wikipedia.org/wiki/Artificial_neural_network Artificial neural network, Wikipedia]</ref><br />
* Глубокие нейронные сети (англ. deep neural network (DNN))<ref>[https://en.wikipedia.org/wiki/Deep_learning#Deep_neural_networks Deep neural networks , Wikipedia]</ref><br />
<br />
== Применения ==<br />
* Распознавание речи<ref>[https://en.wikipedia.org/wiki/Speech_recognition Speech recognition, Wikipedia]</ref>. Все основные коммерческие системы распознавания речи (например, Microsoft Cortana, Xbox, Skype Translator, Amazon Alexa, Google Now, Apple Siri, Baidu и iFlyTek) основаны на глубоком обучении.<br />
* Компьютерное зрение<ref>[http://neerc.ifmo.ru/wiki/index.php?title=Задача_нахождения_объектов_на_изображении Задача нахождения объектов на изображении]<sup>[на 06.12.18 не создан]</sup></ref>. На сегодняшний день системы распознавания образов, основанные на глубоком обучении, уже умеют давать более точные результаты, чем человеческий глаз<ref>[https://www.sciencedirect.com/science/article/pii/S0893608012000524 Multi-column deep neural network for traffic sign classification]</ref>.<br />
* Обработка естественного языка<ref>[https://en.wikipedia.org/wiki/Natural_language_processing Natural language processing, Wikipedia]</ref>. Нейронные сети использовались для реализации языковых моделей еще с начала 2000-х годов. После изобретения LSTM помогла улучшить машинный перевод и языковое моделирование<ref>[https://papers.nips.cc/paper/5346-sequence-to-sequence-learning-with-neural-networks.pdf Sequence to Sequence Learning with Neural Networks]</ref>.<br />
* Обнаружение новых лекарственных препаратов. К примеру, нейронная сеть AtomNet использовалась для прогнозирования новых биомолекул - кандидатов для лечения таких заболевания, как вирус Эбола и рассеянный склероз.<br />
* Рекомендательные системы<ref>[https://en.wikipedia.org/wiki/Recommender_system Recommender system, Wikipedia]</ref>. На сегодняшний день глубокое обучение применяется для изучения пользовательских предпочтений во многих доменах.<br />
* Предсказание генномных онтологий в биоинформатике<ref>[https://en.wikipedia.org/wiki/Deep_learning#Bioinformatics Deep learning in bioinformatics, Wikipedia]</ref><br />
<br />
Полный список возможных применений глубокого обучения<ref>[https://en.wikipedia.org/wiki/Deep_learning#Applications Applications of deep learning, Wikipedia]</ref>.<br />
<br />
== Sigmoid function ==<br />
У ступенчатых функций есть определенное количество ограничений, связанных с ее линейностью. Если функция активации является линейной, то независимо от количества складываемых скрытых слоев в нейронной сети, конечный результат по-прежнему будет являеться линейной комбинацией исходных входных данных. Эта линейность означает, что она не может реально охватить сложность нелинейных задач, таких как оператор XOR или различные паттерны, разделенные кривыми или кругами. Другой проблемой является то, что перцептрон с ступенчатой функцией не очень «стабилен», то есть может перейти из состояния 0 в 1 и из 0 в 1 при небольших изменениях в любом из весов входного слоя. <br />
<br />
Для того, чтобы избежать данных проблем, в нейронных сетях используется sigmoid функция в качестве активационной. <br />
<br />
[[Файл:sigmoid_function.png|border|500px|thumb|center|Рис 1. Sigmoid Function]]<br />
<br />
Функция sigmoid, в отличие от ступенчатой функции, вводит нелинейность в выбранную модель нейронной сети. Нелинейность означает, что выход, получаемых из нейрона, который является произведением некоторых входов <math>x (x_1, x_2, ..., x_m)</math> и весов <math>w (w_1, w_2, ..., w_m)</math> плюс смещение, а затем помещаемый в sigmoid функцию, не может быть представлен линейной комбинацией входов <math>x (x_1, x_2, ..., x_m)</math>.<br />
<br />
== Rectified Linear Units (ReLU) ==<br />
Несмотря на множество сильных сторон sigmoid функции, у нее есть значительные недостатки. Производная такой функции крайне мала во всех точках, кроме сравнительно небольшого промежутка. Это сильно усложняет процесс улучшения весов с помощью градиентного спуска. Эта проблема усугубляется в случае, если модель содержит больше слоев. Данная проблема называется проблемой исчезающего градиента.<ref>[https://en.wikipedia.org/wiki/Vanishing_gradient_problem Vanishing gradient problem, Wikipedia]</ref><br />
<br />
Функция ReLU имеет производную равную 0 для всех отрицательных значениях и 1 для положительных. Таким образом, когда обучение происходит на датасетах разумного размера, обычно находятся точки данных, дающие положительные значения для любого выбранного узла. Таким образом, средняя производная редко бывает близка к 0, что позволяет продолжать градиентный спуск.<br />
<br />
'''Rectified Linear Unit''' {{---}} это наиболее часто используемая активационная функция при глубоком обучении. Данная функция возвращает 0, если принимает отрицательный вход, в случае же положительного входа, функция возвращает само число. Таким образом функция может быть записана как <math>f(x)=max(0,x)</math>.<br />
<br />
[[Файл:Relu.png|500px|thumb|center|Рис 2. Rectified Linear Units]]<br />
<br />
Функция ReLU отлично работает в большинстве приложений, в результате чего она получила широкое распространение. Данная функция позволяет правильно учитывать нелинейности и взаимодействия.<br />
<br />
== Фреймворки для глубокого обучения ==<br />
* TensorFlow<ref>[https://en.wikipedia.org/wiki/TensorFlow TensorFlow, Wikipedia]</ref><br />
* Microsoft Cognitive Toolkit<ref>[https://en.wikipedia.org/wiki/Microsoft_Cognitive_Toolkit Microsoft Cognitive Toolkit, Wikipedia]</ref><br />
* Wolfram Mathematica<ref>[https://en.wikipedia.org/wiki/Wolfram_Mathematica Wolfram Mathematica, Wikipedia]</ref><br />
* Keras<ref>[https://en.wikipedia.org/wiki/Keras Keras, Wikipedia]</ref><br />
* Deeplearning4j<ref>[https://en.wikipedia.org/wiki/Deeplearning4j Deeplearning4j, Wikipedia]</ref><br />
* Caffe<ref>[https://en.wikipedia.org/wiki/Caffe_(software) Caffe, Wikipedia]</ref><br />
* Torch/PyTorch<ref>[https://habr.com/post/334380 PyTorch — ваш новый фреймворк глубокого обучения, habr]</ref><br />
* MXNet<ref>[https://mxnet.apache.org MXNet, official site]</ref><br />
* Chainer<ref>[https://chainer.org Chainer, official site]</ref><br />
Сопоставление фреймворков, библиотек и отдельных программ для глубокого обучения<ref>[https://en.wikipedia.org/wiki/Comparison_of_deep_learning_software Comparison of deep learning software, Wikipedia]</ref>.<br />
<br />
== См. также ==<br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Нейронные_сети,_перцептрон Нейронные сети, перцептрон]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Сверточные_нейронные_сети Сверточные нейронные сети]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Рекуррентные_нейронные_сети Рекуррентные нейронные сети ]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Обучение_с_подкреплением Обучение с подкреплением ]<sup>[на 06.12.18 не создан]</sup><br />
<br />
== Примечания ==<br />
<references/><br />
<br />
== Источники информации ==<br />
* [https://en.wikipedia.org/wiki/Deep_learning Deep learning, Wikipedia]<br />
* [https://ru.wikipedia.org/wiki/Глубокое_обучение Глубокое обучение, Wikipedia]<br />
* [http://www.deeplearningbook.org/ Deep Learning Book, MIT]<br />
* [https://towardsdatascience.com/multi-layer-neural-networks-with-sigmoid-function-deep-learning-for-rookies-2-bf464f09eb7f Multi-Layer Neural Networks with Sigmoid Function, Towards Data Science]<br />
* [https://www.kaggle.com/dansbecker/rectified-linear-units-relu-in-deep-learning Rectified Linear Units (ReLU) in Deep Learning, Kaggle]</div>80.76.244.114http://neerc.ifmo.ru/wiki/index.php?title=%D0%93%D0%BB%D1%83%D0%B1%D0%BE%D0%BA%D0%BE%D0%B5_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5&diff=67637Глубокое обучение2018-12-07T17:07:34Z<p>80.76.244.114: /* История */ Для Леры</p>
<hr />
<div>'''Глубокое обучение''' (англ. deep learning) {{---}} совокупность широкого семейства методов машинного обучения, основанных на обучении представлениям, а не специализированным алгоритмам под конкретные задачи. Глубокое обучение может быть с учителем, с частичным привлечением учителя, без учителя и с подкреплением. Несмотря на то, что данный раздел машинного обучения появился еще в 1980-х, до недавнего времени его применение было сильно ограничено из-за недостака вычислительных мощностей существовавших компьютеров. Ситуация изменилась только в середине 2000-х.<br />
<br />
На создание моделей глубокого обучения оказали влияние некоторые процессы и паттерны, происходящие в биологических нейронных системах. Несмотря на это, данные модели имеют множество различий с биологическим мозгом (и в структуре и в функциях), что делает невозможным использование теорем и доказательств, применяющихся нейробиологии.<br />
<br />
== История ==<br />
* 1943 - Искусственный нейрон Маккаллока — Питтса<ref>[https://en.wikipedia.org/wiki/Artificial_neuron Artificial neuron, Wikipedia]</ref> {{---}} узел искусственной нейронной сети, являющийся упрощённой моделью естественного нейрона.<br />
* 1949 - Принчип обучения нейронов Хебба<ref>[https://en.wikipedia.org/wiki/Hebbian_theory Hebbian theory, Wikipedia]</ref> {{---}} изначально наблюдаемая причинно-следственная связь между активациями пре- и постсинаптического нейрона, имеет тенденцию к усилению.<br />
* 1957 - Модель перцептрона предложена Фрэнком Розенблаттом<ref>[https://en.wikipedia.org/wiki/Perceptron Perceptron, Wikipedia]</ref> {{---}} математическая или компьютерная модель восприятия информации мозгом.<br />
* 1960 - Дельта-правило обучения перцептрона<ref>[https://en.wikipedia.org/wiki/Delta_rule Delta rule, Wikipedia]</ref> {{---}} метод обучения перцептрона по принципу градиентного спуска по поверхности ошибки.<br />
* 1969 - Выход книги Марвина Минска и Сеймура Паперта "Перцептроны"<ref>[https://en.wikipedia.org/wiki/Perceptrons_(book) Perceptrons book, WIkipedia]</ref>. В данной книге математически показаны ограничения перцептронов.<br />
* 1974 - Метод обратного распространения ошибки впервые предложен А. И. Галушкиным и Дж. Вербосом<ref>[https://en.wikipedia.org/wiki/Backpropagation Backpropagation, Wikipedia]</ref> {{---}} метод вычисления градиента, который используется при обновлении весов многослойного перцептрона.<br />
* 1980 - Первая свёрточная нейронная сеть предложена Кунихико Фукусимой<ref>[https://en.wikipedia.org/wiki/Convolutional_neural_network Convolutional_neural_network, Wikipedia]</ref> {{---}} специальная архитектура искусственных нейронных сетей использующая некоторые особенности зрительной коры.<br />
* 1982 - Рекуррентные нейронные сети предложены Д. Хопфилдом {{---}} вид нейронных сетей, где связи между элементами образуют направленную последовательность.<br />
* 1991 - Проблема "исчезающего" градиента была сформулирована С. Хочрейтом. Проблема "исчезающего" градиента заключается в быстрой потере информации с течением времени.<br />
* 1997 - Долгая краткосрочная память предложена С. Хочрейтом и Ю. Шмидхубером<ref>[https://en.wikipedia.org/wiki/Long_short-term_memory Long short-term memory, Wikipedia]</ref>. В отличие от традиционных рекуррентных нейронных сетей, LSTM-сеть хорошо приспособлена к обучению на задачах классификации, обработки и прогнозирования временных рядов в случаях, когда важные события разделены временными лагами с неопределённой продолжительностью и границами.<br />
* 1998 - Градиентный спуск для сверточных нейронных сетей предложена Я. Лекуном.<br />
* 2006 - Публикации Г. Хинтона, С. Осиндера и Я. Теха об обучении сетей глубоких убеждений. Данные публикации, а также их активное освещение в средствах массовой информации смогли привлечь внимание ученых и разработчиков со всего мира к глубоким сетям.<br />
* 2012 - Предложение дропаута Г. Хинтоном, А. Крижевски и И. Шутковичем<ref>[https://en.wikipedia.org/wiki/Dropout_(neural_networks) Dropout, Wikipedia]</ref>. Дропаут (от англ. dropout) — метод регуляризации искусственных нейронных сетей, предназначен для предотвращения переобучения сети.<br />
* 2012 - Нейронные сети побеждают в ImageNet Challenge<ref>[https://en.wikipedia.org/wiki/ImageNet#ImageNet_Challenge ImageNet Challenge, Wikipedia]</ref>. Данное событие ознаменовало начало эры нейронных сетей и глубокого обучения.<br />
<br />
Начиная с 2012 года машинное обучение во-многом фокусируется на глубоких сетях. Искусственный интеллект и машинное обучение обычно упоминаются в контексте глубокого обучения.<br />
<br />
Глубокое обучение используется [http://neerc.ifmo.ru/wiki/index.php?title=%D0%93%D0%BB%D1%83%D0%B1%D0%BE%D0%BA%D0%BE%D0%B5_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5#.D0.9F.D1.80.D0.B8.D0.BC.D0.B5.D0.BD.D0.B5.D0.BD.D0.B8.D1.8F во-многих сферах].<br />
<br />
== Определение == <br />
'''Глубокое обучение''' {{---}} это класс алгоритмов машинного обучения, который:<br />
<br />
* использует многослойную систему нелинейных фильтров для извлечения признаков с преобразованиями. Каждый последующий слой получает на входе выходные данные предыдущего слоя. <br />
* может сочетать алгоритмы обучения с учителем (пример {{---}} классификация) и без учителя (пример {{---}} анализ образца).<br />
* формирует в процессе обучения слои выявления признаков на нескольких уровнях представлений, которые соответствуют различным уровням абстракции; при этом признаки организованы иерархически - признаки более высокого уровня являются производными от признаков более низкого уровня.<br />
<br />
== Нейронные сети ==<br />
* Искусственные нейронные сети (англ. artificial neural networks (ANN))<ref>[https://en.wikipedia.org/wiki/Artificial_neural_network Artificial neural network, Wikipedia]</ref><br />
* Глубокие нейронные сети (англ. deep neural network (DNN))<ref>[https://en.wikipedia.org/wiki/Deep_learning#Deep_neural_networks Deep neural networks , Wikipedia]</ref><br />
<br />
== Применения ==<br />
* Распознавание речи<ref>[https://en.wikipedia.org/wiki/Speech_recognition Speech recognition, Wikipedia]</ref><br />
* Компьютерное зрение<ref>[http://neerc.ifmo.ru/wiki/index.php?title=Задача_нахождения_объектов_на_изображении Задача нахождения объектов на изображении]<sup>[на 06.12.18 не создан]</sup></ref><br />
* Обработка визуальных изображений<ref>[https://en.wikipedia.org/wiki/Deep_learning#Visual_art_processing Visual art processing , Wikipedia]</ref><br />
* Обработка естественного языка<ref>[https://en.wikipedia.org/wiki/Natural_language_processing Natural language processing, Wikipedia]</ref><br />
* Обнаружение новых лекарственных препаратов<br />
* Рекомендательные системы<ref>[https://en.wikipedia.org/wiki/Recommender_system Recommender system, Wikipedia]</ref><br />
* Предсказание генномных онтологий в биоинформатике<ref>[https://en.wikipedia.org/wiki/Deep_learning#Bioinformatics Deep learning in bioinformatics, Wikipedia]</ref><br />
<br />
Полный список возможных применений глубокого обучения<ref>[https://en.wikipedia.org/wiki/Deep_learning#Applications Applications of deep learning, Wikipedia]</ref>.<br />
<br />
== Sigmoid function ==<br />
У ступенчатых функций есть определенное количество ограничений, связанных с ее линейностью. Если функция активации является линейной, то независимо от количества складываемых скрытых слоев в нейронной сети, конечный результат по-прежнему будет являеться линейной комбинацией исходных входных данных. Эта линейность означает, что она не может реально охватить сложность нелинейных задач, таких как оператор XOR или различные паттерны, разделенные кривыми или кругами. Другой проблемой является то, что перцептрон с ступенчатой функцией не очень «стабилен», то есть может перейти из состояния 0 в 1 и из 0 в 1 при небольших изменениях в любом из весов входного слоя. <br />
<br />
Для того, чтобы избежать данных проблем, в нейронных сетях используется sigmoid функция в качестве активационной. <br />
<br />
[[Файл:sigmoid_function.png|border|500px|thumb|center|Рис 1. Sigmoid Function]]<br />
<br />
Функция sigmoid, в отличие от ступенчатой функции, вводит нелинейность в выбранную модель нейронной сети. Нелинейность означает, что выход, получаемых из нейрона, который является произведением некоторых входов <math>x (x_1, x_2, ..., x_m)</math> и весов <math>w (w_1, w_2, ..., w_m)</math> плюс смещение, а затем помещаемый в sigmoid функцию, не может быть представлен линейной комбинацией входов <math>x (x_1, x_2, ..., x_m)</math>.<br />
<br />
== Rectified Linear Units (ReLU) ==<br />
Несмотря на множество сильных сторон sigmoid функции, у нее есть значительные недостатки. Производная такой функции крайне мала во всех точках, кроме сравнительно небольшого промежутка. Это сильно усложняет процесс улучшения весов с помощью градиентного спуска. Эта проблема усугубляется в случае, если модель содержит больше слоев. Данная проблема называется проблемой исчезающего градиента.<ref>[https://en.wikipedia.org/wiki/Vanishing_gradient_problem Vanishing gradient problem, Wikipedia]</ref><br />
<br />
Функция ReLU имеет производную равную 0 для всех отрицательных значениях и 1 для положительных. Таким образом, когда обучение происходит на датасетах разумного размера, обычно находятся точки данных, дающие положительные значения для любого выбранного узла. Таким образом, средняя производная редко бывает близка к 0, что позволяет продолжать градиентный спуск.<br />
<br />
'''Rectified Linear Unit''' {{---}} это наиболее часто используемая активационная функция при глубоком обучении. Данная функция возвращает 0, если принимает отрицательный вход, в случае же положительного входа, функция возвращает само число. Таким образом функция может быть записана как <math>f(x)=max(0,x)</math>.<br />
<br />
[[Файл:Relu.png|500px|thumb|center|Рис 2. Rectified Linear Units]]<br />
<br />
Функция ReLU отлично работает в большинстве приложений, в результате чего она получила широкое распространение. Данная функция позволяет правильно учитывать нелинейности и взаимодействия.<br />
<br />
== Фреймворки для глубокого обучения ==<br />
* TensorFlow<ref>[https://en.wikipedia.org/wiki/TensorFlow TensorFlow, Wikipedia]</ref><br />
* Microsoft Cognitive Toolkit<ref>[https://en.wikipedia.org/wiki/Microsoft_Cognitive_Toolkit Microsoft Cognitive Toolkit, Wikipedia]</ref><br />
* Wolfram Mathematica<ref>[https://en.wikipedia.org/wiki/Wolfram_Mathematica Wolfram Mathematica, Wikipedia]</ref><br />
* Keras<ref>[https://en.wikipedia.org/wiki/Keras Keras, Wikipedia]</ref><br />
* Deeplearning4j<ref>[https://en.wikipedia.org/wiki/Deeplearning4j Deeplearning4j, Wikipedia]</ref><br />
* Caffe<ref>[https://en.wikipedia.org/wiki/Caffe_(software) Caffe, Wikipedia]</ref><br />
* Torch/PyTorch<ref>[https://habr.com/post/334380 PyTorch — ваш новый фреймворк глубокого обучения, habr]</ref><br />
* MXNet<ref>[https://mxnet.apache.org MXNet, official site]</ref><br />
* Chainer<ref>[https://chainer.org Chainer, official site]</ref><br />
Сопоставление фреймворков, библиотек и отдельных программ для глубокого обучения<ref>[https://en.wikipedia.org/wiki/Comparison_of_deep_learning_software Comparison of deep learning software, Wikipedia]</ref>.<br />
<br />
== См. также ==<br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Нейронные_сети,_перцептрон Нейронные сети, перцептрон]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Сверточные_нейронные_сети Сверточные нейронные сети]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Рекуррентные_нейронные_сети Рекуррентные нейронные сети ]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Обучение_с_подкреплением Обучение с подкреплением ]<sup>[на 06.12.18 не создан]</sup><br />
<br />
== Примечания ==<br />
<references/><br />
<br />
== Источники информации ==<br />
* [https://en.wikipedia.org/wiki/Deep_learning Deep learning, Wikipedia]<br />
* [https://ru.wikipedia.org/wiki/Глубокое_обучение Глубокое обучение, Wikipedia]<br />
* [http://www.deeplearningbook.org/ Deep Learning Book, MIT]<br />
* [https://towardsdatascience.com/multi-layer-neural-networks-with-sigmoid-function-deep-learning-for-rookies-2-bf464f09eb7f Multi-Layer Neural Networks with Sigmoid Function, Towards Data Science]<br />
* [https://www.kaggle.com/dansbecker/rectified-linear-units-relu-in-deep-learning Rectified Linear Units (ReLU) in Deep Learning, Kaggle]</div>80.76.244.114http://neerc.ifmo.ru/wiki/index.php?title=%D0%93%D0%BB%D1%83%D0%B1%D0%BE%D0%BA%D0%BE%D0%B5_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5&diff=67636Глубокое обучение2018-12-07T17:04:19Z<p>80.76.244.114: /* История */ Для Леры</p>
<hr />
<div>'''Глубокое обучение''' (англ. deep learning) {{---}} совокупность широкого семейства методов машинного обучения, основанных на обучении представлениям, а не специализированным алгоритмам под конкретные задачи. Глубокое обучение может быть с учителем, с частичным привлечением учителя, без учителя и с подкреплением. Несмотря на то, что данный раздел машинного обучения появился еще в 1980-х, до недавнего времени его применение было сильно ограничено из-за недостака вычислительных мощностей существовавших компьютеров. Ситуация изменилась только в середине 2000-х.<br />
<br />
На создание моделей глубокого обучения оказали влияние некоторые процессы и паттерны, происходящие в биологических нейронных системах. Несмотря на это, данные модели имеют множество различий с биологическим мозгом (и в структуре и в функциях), что делает невозможным использование теорем и доказательств, применяющихся нейробиологии.<br />
<br />
== История ==<br />
* 1943 - Искусственный нейрон Маккаллока — Питтса<ref>[https://en.wikipedia.org/wiki/Artificial_neuron Artificial neuron, Wikipedia]</ref> {{---}} узел искусственной нейронной сети, являющийся упрощённой моделью естественного нейрона.<br />
* 1949 - Принчип обучения нейронов Хебба<ref>[https://en.wikipedia.org/wiki/Hebbian_theory Hebbian theory, Wikipedia]</ref> {{---}} изначально наблюдаемая причинно-следственная связь между активациями пре- и постсинаптического нейрона, имеет тенденцию к усилению.<br />
* 1957 - Модель перцептрона предложена Фрэнком Розенблаттом<ref>[https://en.wikipedia.org/wiki/Perceptron Perceptron, Wikipedia]</ref> {{---}} математическая или компьютерная модель восприятия информации мозгом.<br />
* 1960 - Дельта-правило обучения перцептрона<ref>[https://en.wikipedia.org/wiki/Delta_rule Delta rule, Wikipedia]</ref> {{---}} метод обучения перцептрона по принципу градиентного спуска по поверхности ошибки.<br />
* 1969 - Выход книги Марвина Минска и Сеймура Паперта "Перцептроны"<ref>[https://en.wikipedia.org/wiki/Perceptrons_(book) Perceptrons book, WIkipedia]</ref>. В данной книге математически показаны ограничения перцептронов.<br />
* 1974 - Метод обратного распространения ошибки впервые предложен А. И. Галушкиным и Дж. Вербосом<ref>[https://en.wikipedia.org/wiki/Backpropagation Backpropagation, Wikipedia]</ref> {{---}} метод вычисления градиента, который используется при обновлении весов многослойного перцептрона.<br />
* 1980 - Первая свёрточная нейронная сеть предложена Кунихико Фукусимой<ref>[https://en.wikipedia.org/wiki/Convolutional_neural_network Convolutional_neural_network, Wikipedia]</ref> {{---}} специальная архитектура искусственных нейронных сетей использующая некоторые особенности зрительной коры.<br />
* 1982 - Рекуррентные нейронные сети предложены Д. Хопфилдом {{---}} вид нейронных сетей, где связи между элементами образуют направленную последовательность.<br />
* 1991 - Проблема "исчезающего" градиента была сформулирована С. Хочрейтом. Проблема заключается в быстрой потере информации с течением времени.<br />
* 1997 - Долгая краткосрочная память предложена С. Хочрейтом и Ю. Шмидхубером<ref>[https://en.wikipedia.org/wiki/Long_short-term_memory Long short-term memory, Wikipedia]</ref>. В отличие от традиционных рекуррентных нейронных сетей, LSTM-сеть хорошо приспособлена к обучению на задачах классификации, обработки и прогнозирования временных рядов в случаях, когда важные события разделены временными лагами с неопределённой продолжительностью и границами.<br />
* 1998 - Градиентный спуск для сверточных нейронных сетей предложена Я. Лекуном<br />
* 2006 - Публикации Г. Хинтона, С. Осиндера и Я. Теха об обучении сетей глубоких убеждений. Данные публикации смогли привлечь внимание к глубоким сетям.<br />
* 2012 - Предложение дропаута Г. Хинтоном, А. Крижевски и И. Шутковичем<ref>[https://en.wikipedia.org/wiki/Dropout_(neural_networks) Dropout, Wikipedia]</ref>. Дропаут (от англ. dropout) — метод регуляризации искусственных нейронных сетей, предназначен для предотвращения переобучения сети.<br />
* 2012 - Нейронные сети побеждают в ImageNet Challenge<ref>[https://en.wikipedia.org/wiki/ImageNet#ImageNet_Challenge ImageNet Challenge, Wikipedia]</ref>. Данное событие ознаменовало начало эры нейронных сетей и глубокого обучения.<br />
<br />
Начиная с 2012 года машинное обучение во-многом фокусируется на глубоких сетях. Искусственный интеллект и машинное обучение обычно упоминаются в контексте глубокого обучения.<br />
<br />
Глубокое обучение используется [http://neerc.ifmo.ru/wiki/index.php?title=%D0%93%D0%BB%D1%83%D0%B1%D0%BE%D0%BA%D0%BE%D0%B5_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5#.D0.9F.D1.80.D0.B8.D0.BC.D0.B5.D0.BD.D0.B5.D0.BD.D0.B8.D1.8F во-многих сферах].<br />
<br />
== Определение == <br />
'''Глубокое обучение''' {{---}} это класс алгоритмов машинного обучения, который:<br />
<br />
* использует многослойную систему нелинейных фильтров для извлечения признаков с преобразованиями. Каждый последующий слой получает на входе выходные данные предыдущего слоя. <br />
* может сочетать алгоритмы обучения с учителем (пример {{---}} классификация) и без учителя (пример {{---}} анализ образца).<br />
* формирует в процессе обучения слои выявления признаков на нескольких уровнях представлений, которые соответствуют различным уровням абстракции; при этом признаки организованы иерархически - признаки более высокого уровня являются производными от признаков более низкого уровня.<br />
<br />
== Нейронные сети ==<br />
* Искусственные нейронные сети (англ. artificial neural networks (ANN))<ref>[https://en.wikipedia.org/wiki/Artificial_neural_network Artificial neural network, Wikipedia]</ref><br />
* Глубокие нейронные сети (англ. deep neural network (DNN))<ref>[https://en.wikipedia.org/wiki/Deep_learning#Deep_neural_networks Deep neural networks , Wikipedia]</ref><br />
<br />
== Применения ==<br />
* Распознавание речи<ref>[https://en.wikipedia.org/wiki/Speech_recognition Speech recognition, Wikipedia]</ref><br />
* Компьютерное зрение<ref>[http://neerc.ifmo.ru/wiki/index.php?title=Задача_нахождения_объектов_на_изображении Задача нахождения объектов на изображении]<sup>[на 06.12.18 не создан]</sup></ref><br />
* Обработка визуальных изображений<ref>[https://en.wikipedia.org/wiki/Deep_learning#Visual_art_processing Visual art processing , Wikipedia]</ref><br />
* Обработка естественного языка<ref>[https://en.wikipedia.org/wiki/Natural_language_processing Natural language processing, Wikipedia]</ref><br />
* Обнаружение новых лекарственных препаратов<br />
* Рекомендательные системы<ref>[https://en.wikipedia.org/wiki/Recommender_system Recommender system, Wikipedia]</ref><br />
* Предсказание генномных онтологий в биоинформатике<ref>[https://en.wikipedia.org/wiki/Deep_learning#Bioinformatics Deep learning in bioinformatics, Wikipedia]</ref><br />
<br />
Полный список возможных применений глубокого обучения<ref>[https://en.wikipedia.org/wiki/Deep_learning#Applications Applications of deep learning, Wikipedia]</ref>.<br />
<br />
== Sigmoid function ==<br />
У ступенчатых функций есть определенное количество ограничений, связанных с ее линейностью. Если функция активации является линейной, то независимо от количества складываемых скрытых слоев в нейронной сети, конечный результат по-прежнему будет являеться линейной комбинацией исходных входных данных. Эта линейность означает, что она не может реально охватить сложность нелинейных задач, таких как оператор XOR или различные паттерны, разделенные кривыми или кругами. Другой проблемой является то, что перцептрон с ступенчатой функцией не очень «стабилен», то есть может перейти из состояния 0 в 1 и из 0 в 1 при небольших изменениях в любом из весов входного слоя. <br />
<br />
Для того, чтобы избежать данных проблем, в нейронных сетях используется sigmoid функция в качестве активационной. <br />
<br />
[[Файл:sigmoid_function.png|border|500px|thumb|center|Рис 1. Sigmoid Function]]<br />
<br />
Функция sigmoid, в отличие от ступенчатой функции, вводит нелинейность в выбранную модель нейронной сети. Нелинейность означает, что выход, получаемых из нейрона, который является произведением некоторых входов <math>x (x_1, x_2, ..., x_m)</math> и весов <math>w (w_1, w_2, ..., w_m)</math> плюс смещение, а затем помещаемый в sigmoid функцию, не может быть представлен линейной комбинацией входов <math>x (x_1, x_2, ..., x_m)</math>.<br />
<br />
== Rectified Linear Units (ReLU) ==<br />
Несмотря на множество сильных сторон sigmoid функции, у нее есть значительные недостатки. Производная такой функции крайне мала во всех точках, кроме сравнительно небольшого промежутка. Это сильно усложняет процесс улучшения весов с помощью градиентного спуска. Эта проблема усугубляется в случае, если модель содержит больше слоев. Данная проблема называется проблемой исчезающего градиента.<ref>[https://en.wikipedia.org/wiki/Vanishing_gradient_problem Vanishing gradient problem, Wikipedia]</ref><br />
<br />
Функция ReLU имеет производную равную 0 для всех отрицательных значениях и 1 для положительных. Таким образом, когда обучение происходит на датасетах разумного размера, обычно находятся точки данных, дающие положительные значения для любого выбранного узла. Таким образом, средняя производная редко бывает близка к 0, что позволяет продолжать градиентный спуск.<br />
<br />
'''Rectified Linear Unit''' {{---}} это наиболее часто используемая активационная функция при глубоком обучении. Данная функция возвращает 0, если принимает отрицательный вход, в случае же положительного входа, функция возвращает само число. Таким образом функция может быть записана как <math>f(x)=max(0,x)</math>.<br />
<br />
[[Файл:Relu.png|500px|thumb|center|Рис 2. Rectified Linear Units]]<br />
<br />
Функция ReLU отлично работает в большинстве приложений, в результате чего она получила широкое распространение. Данная функция позволяет правильно учитывать нелинейности и взаимодействия.<br />
<br />
== Фреймворки для глубокого обучения ==<br />
* TensorFlow<ref>[https://en.wikipedia.org/wiki/TensorFlow TensorFlow, Wikipedia]</ref><br />
* Microsoft Cognitive Toolkit<ref>[https://en.wikipedia.org/wiki/Microsoft_Cognitive_Toolkit Microsoft Cognitive Toolkit, Wikipedia]</ref><br />
* Wolfram Mathematica<ref>[https://en.wikipedia.org/wiki/Wolfram_Mathematica Wolfram Mathematica, Wikipedia]</ref><br />
* Keras<ref>[https://en.wikipedia.org/wiki/Keras Keras, Wikipedia]</ref><br />
* Deeplearning4j<ref>[https://en.wikipedia.org/wiki/Deeplearning4j Deeplearning4j, Wikipedia]</ref><br />
* Caffe<ref>[https://en.wikipedia.org/wiki/Caffe_(software) Caffe, Wikipedia]</ref><br />
* Torch/PyTorch<ref>[https://habr.com/post/334380 PyTorch — ваш новый фреймворк глубокого обучения, habr]</ref><br />
* MXNet<ref>[https://mxnet.apache.org MXNet, official site]</ref><br />
* Chainer<ref>[https://chainer.org Chainer, official site]</ref><br />
Сопоставление фреймворков, библиотек и отдельных программ для глубокого обучения<ref>[https://en.wikipedia.org/wiki/Comparison_of_deep_learning_software Comparison of deep learning software, Wikipedia]</ref>.<br />
<br />
== См. также ==<br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Нейронные_сети,_перцептрон Нейронные сети, перцептрон]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Сверточные_нейронные_сети Сверточные нейронные сети]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Рекуррентные_нейронные_сети Рекуррентные нейронные сети ]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Обучение_с_подкреплением Обучение с подкреплением ]<sup>[на 06.12.18 не создан]</sup><br />
<br />
== Примечания ==<br />
<references/><br />
<br />
== Источники информации ==<br />
* [https://en.wikipedia.org/wiki/Deep_learning Deep learning, Wikipedia]<br />
* [https://ru.wikipedia.org/wiki/Глубокое_обучение Глубокое обучение, Wikipedia]<br />
* [http://www.deeplearningbook.org/ Deep Learning Book, MIT]<br />
* [https://towardsdatascience.com/multi-layer-neural-networks-with-sigmoid-function-deep-learning-for-rookies-2-bf464f09eb7f Multi-Layer Neural Networks with Sigmoid Function, Towards Data Science]<br />
* [https://www.kaggle.com/dansbecker/rectified-linear-units-relu-in-deep-learning Rectified Linear Units (ReLU) in Deep Learning, Kaggle]</div>80.76.244.114http://neerc.ifmo.ru/wiki/index.php?title=%D0%93%D0%BB%D1%83%D0%B1%D0%BE%D0%BA%D0%BE%D0%B5_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5&diff=67635Глубокое обучение2018-12-07T17:03:39Z<p>80.76.244.114: /* История */ Для Леры</p>
<hr />
<div>'''Глубокое обучение''' (англ. deep learning) {{---}} совокупность широкого семейства методов машинного обучения, основанных на обучении представлениям, а не специализированным алгоритмам под конкретные задачи. Глубокое обучение может быть с учителем, с частичным привлечением учителя, без учителя и с подкреплением. Несмотря на то, что данный раздел машинного обучения появился еще в 1980-х, до недавнего времени его применение было сильно ограничено из-за недостака вычислительных мощностей существовавших компьютеров. Ситуация изменилась только в середине 2000-х.<br />
<br />
На создание моделей глубокого обучения оказали влияние некоторые процессы и паттерны, происходящие в биологических нейронных системах. Несмотря на это, данные модели имеют множество различий с биологическим мозгом (и в структуре и в функциях), что делает невозможным использование теорем и доказательств, применяющихся нейробиологии.<br />
<br />
== История ==<br />
* 1943 - Искусственный нейрон Маккаллока — Питтса<ref>[https://en.wikipedia.org/wiki/Artificial_neuron Artificial neuron, Wikipedia]</ref> {{---}} узел искусственной нейронной сети, являющийся упрощённой моделью естественного нейрона.<br />
* 1949 - Принчип обучения нейронов Хебба<ref>[https://en.wikipedia.org/wiki/Hebbian_theory Hebbian theory, Wikipedia]</ref> {{---}} изначально наблюдаемая причинно-следственная связь между активациями пре- и постсинаптического нейрона, имеет тенденцию к усилению.<br />
* 1957 - Модель перцептрона предложена Фрэнком Розенблаттом<ref>[https://en.wikipedia.org/wiki/Perceptron Perceptron, Wikipedia]</ref> {{---}} математическая или компьютерная модель восприятия информации мозгом.<br />
* 1960 - Дельта-правило обучения перцептрона<ref>[https://en.wikipedia.org/wiki/Delta_rule Delta rule, Wikipedia]</ref> {{---}} метод обучения перцептрона по принципу градиентного спуска по поверхности ошибки.<br />
* 1969 - Выход книги Марвина Минска и Сеймура Паперта "Перцептроны"<ref>[https://en.wikipedia.org/wiki/Perceptrons_(book) Perceptrons book, WIkipedia]</ref> В данной книге математически показаны ограничения перцептронов.<br />
* 1974 - Метод обратного распространения ошибки впервые предложен А. И. Галушкиным и Дж. Вербосом<ref>[https://en.wikipedia.org/wiki/Backpropagation Backpropagation, Wikipedia]</ref> {{---}} метод вычисления градиента, который используется при обновлении весов многослойного перцептрона.<br />
* 1980 - Первая свёрточная нейронная сеть предложена Кунихико Фукусимой<ref>[https://en.wikipedia.org/wiki/Convolutional_neural_network Convolutional_neural_network, Wikipedia]</ref> {{---}} специальная архитектура искусственных нейронных сетей использующая некоторые особенности зрительной коры.<br />
* 1982 - Рекуррентные нейронные сети предложены Д. Хопфилдом {{---}} вид нейронных сетей, где связи между элементами образуют направленную последовательность.<br />
* 1991 - Проблема "исчезающего" градиента была сформулирована С. Хочрейтом. Проблема заключается в быстрой потере информации с течением времени.<br />
* 1997 - Долгая краткосрочная память предложена С. Хочрейтом и Ю. Шмидхубером<ref>[https://en.wikipedia.org/wiki/Long_short-term_memory Long short-term memory, Wikipedia]</ref>. В отличие от традиционных рекуррентных нейронных сетей, LSTM-сеть хорошо приспособлена к обучению на задачах классификации, обработки и прогнозирования временных рядов в случаях, когда важные события разделены временными лагами с неопределённой продолжительностью и границами.<br />
* 1998 - Градиентный спуск для сверточных нейронных сетей предложена Я. Лекуном<br />
* 2006 - Публикации Г. Хинтона, С. Осиндера и Я. Теха об обучении сетей глубоких убеждений. Данные публикации смогли привлечь внимание к глубоким сетям.<br />
* 2012 - Предложение дропаута Г. Хинтоном, А. Крижевски и И. Шутковичем<ref>[https://en.wikipedia.org/wiki/Dropout_(neural_networks) Dropout, Wikipedia]</ref>. Дропаут (от англ. dropout) — метод регуляризации искусственных нейронных сетей, предназначен для предотвращения переобучения сети.<br />
* 2012 - Нейронные сети побеждают в ImageNet Challenge<ref>[https://en.wikipedia.org/wiki/ImageNet#ImageNet_Challenge ImageNet Challenge, Wikipedia]</ref>. Данное событие ознаменовало начало эры нейронных сетей и глубокого обучения.<br />
<br />
Начиная с 2012 года машинное обучение во-многом фокусируется на глубоких сетях. Искусственный интеллект и машинное обучение обычно упоминаются в контексте глубокого обучения.<br />
<br />
Глубокое обучение используется [http://neerc.ifmo.ru/wiki/index.php?title=%D0%93%D0%BB%D1%83%D0%B1%D0%BE%D0%BA%D0%BE%D0%B5_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5#.D0.9F.D1.80.D0.B8.D0.BC.D0.B5.D0.BD.D0.B5.D0.BD.D0.B8.D1.8F во-многих сферах].<br />
<br />
== Определение == <br />
'''Глубокое обучение''' {{---}} это класс алгоритмов машинного обучения, который:<br />
<br />
* использует многослойную систему нелинейных фильтров для извлечения признаков с преобразованиями. Каждый последующий слой получает на входе выходные данные предыдущего слоя. <br />
* может сочетать алгоритмы обучения с учителем (пример {{---}} классификация) и без учителя (пример {{---}} анализ образца).<br />
* формирует в процессе обучения слои выявления признаков на нескольких уровнях представлений, которые соответствуют различным уровням абстракции; при этом признаки организованы иерархически - признаки более высокого уровня являются производными от признаков более низкого уровня.<br />
<br />
== Нейронные сети ==<br />
* Искусственные нейронные сети (англ. artificial neural networks (ANN))<ref>[https://en.wikipedia.org/wiki/Artificial_neural_network Artificial neural network, Wikipedia]</ref><br />
* Глубокие нейронные сети (англ. deep neural network (DNN))<ref>[https://en.wikipedia.org/wiki/Deep_learning#Deep_neural_networks Deep neural networks , Wikipedia]</ref><br />
<br />
== Применения ==<br />
* Распознавание речи<ref>[https://en.wikipedia.org/wiki/Speech_recognition Speech recognition, Wikipedia]</ref><br />
* Компьютерное зрение<ref>[http://neerc.ifmo.ru/wiki/index.php?title=Задача_нахождения_объектов_на_изображении Задача нахождения объектов на изображении]<sup>[на 06.12.18 не создан]</sup></ref><br />
* Обработка визуальных изображений<ref>[https://en.wikipedia.org/wiki/Deep_learning#Visual_art_processing Visual art processing , Wikipedia]</ref><br />
* Обработка естественного языка<ref>[https://en.wikipedia.org/wiki/Natural_language_processing Natural language processing, Wikipedia]</ref><br />
* Обнаружение новых лекарственных препаратов<br />
* Рекомендательные системы<ref>[https://en.wikipedia.org/wiki/Recommender_system Recommender system, Wikipedia]</ref><br />
* Предсказание генномных онтологий в биоинформатике<ref>[https://en.wikipedia.org/wiki/Deep_learning#Bioinformatics Deep learning in bioinformatics, Wikipedia]</ref><br />
<br />
Полный список возможных применений глубокого обучения<ref>[https://en.wikipedia.org/wiki/Deep_learning#Applications Applications of deep learning, Wikipedia]</ref>.<br />
<br />
== Sigmoid function ==<br />
У ступенчатых функций есть определенное количество ограничений, связанных с ее линейностью. Если функция активации является линейной, то независимо от количества складываемых скрытых слоев в нейронной сети, конечный результат по-прежнему будет являеться линейной комбинацией исходных входных данных. Эта линейность означает, что она не может реально охватить сложность нелинейных задач, таких как оператор XOR или различные паттерны, разделенные кривыми или кругами. Другой проблемой является то, что перцептрон с ступенчатой функцией не очень «стабилен», то есть может перейти из состояния 0 в 1 и из 0 в 1 при небольших изменениях в любом из весов входного слоя. <br />
<br />
Для того, чтобы избежать данных проблем, в нейронных сетях используется sigmoid функция в качестве активационной. <br />
<br />
[[Файл:sigmoid_function.png|border|500px|thumb|center|Рис 1. Sigmoid Function]]<br />
<br />
Функция sigmoid, в отличие от ступенчатой функции, вводит нелинейность в выбранную модель нейронной сети. Нелинейность означает, что выход, получаемых из нейрона, который является произведением некоторых входов <math>x (x_1, x_2, ..., x_m)</math> и весов <math>w (w_1, w_2, ..., w_m)</math> плюс смещение, а затем помещаемый в sigmoid функцию, не может быть представлен линейной комбинацией входов <math>x (x_1, x_2, ..., x_m)</math>.<br />
<br />
== Rectified Linear Units (ReLU) ==<br />
Несмотря на множество сильных сторон sigmoid функции, у нее есть значительные недостатки. Производная такой функции крайне мала во всех точках, кроме сравнительно небольшого промежутка. Это сильно усложняет процесс улучшения весов с помощью градиентного спуска. Эта проблема усугубляется в случае, если модель содержит больше слоев. Данная проблема называется проблемой исчезающего градиента.<ref>[https://en.wikipedia.org/wiki/Vanishing_gradient_problem Vanishing gradient problem, Wikipedia]</ref><br />
<br />
Функция ReLU имеет производную равную 0 для всех отрицательных значениях и 1 для положительных. Таким образом, когда обучение происходит на датасетах разумного размера, обычно находятся точки данных, дающие положительные значения для любого выбранного узла. Таким образом, средняя производная редко бывает близка к 0, что позволяет продолжать градиентный спуск.<br />
<br />
'''Rectified Linear Unit''' {{---}} это наиболее часто используемая активационная функция при глубоком обучении. Данная функция возвращает 0, если принимает отрицательный вход, в случае же положительного входа, функция возвращает само число. Таким образом функция может быть записана как <math>f(x)=max(0,x)</math>.<br />
<br />
[[Файл:Relu.png|500px|thumb|center|Рис 2. Rectified Linear Units]]<br />
<br />
Функция ReLU отлично работает в большинстве приложений, в результате чего она получила широкое распространение. Данная функция позволяет правильно учитывать нелинейности и взаимодействия.<br />
<br />
== Фреймворки для глубокого обучения ==<br />
* TensorFlow<ref>[https://en.wikipedia.org/wiki/TensorFlow TensorFlow, Wikipedia]</ref><br />
* Microsoft Cognitive Toolkit<ref>[https://en.wikipedia.org/wiki/Microsoft_Cognitive_Toolkit Microsoft Cognitive Toolkit, Wikipedia]</ref><br />
* Wolfram Mathematica<ref>[https://en.wikipedia.org/wiki/Wolfram_Mathematica Wolfram Mathematica, Wikipedia]</ref><br />
* Keras<ref>[https://en.wikipedia.org/wiki/Keras Keras, Wikipedia]</ref><br />
* Deeplearning4j<ref>[https://en.wikipedia.org/wiki/Deeplearning4j Deeplearning4j, Wikipedia]</ref><br />
* Caffe<ref>[https://en.wikipedia.org/wiki/Caffe_(software) Caffe, Wikipedia]</ref><br />
* Torch/PyTorch<ref>[https://habr.com/post/334380 PyTorch — ваш новый фреймворк глубокого обучения, habr]</ref><br />
* MXNet<ref>[https://mxnet.apache.org MXNet, official site]</ref><br />
* Chainer<ref>[https://chainer.org Chainer, official site]</ref><br />
Сопоставление фреймворков, библиотек и отдельных программ для глубокого обучения<ref>[https://en.wikipedia.org/wiki/Comparison_of_deep_learning_software Comparison of deep learning software, Wikipedia]</ref>.<br />
<br />
== См. также ==<br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Нейронные_сети,_перцептрон Нейронные сети, перцептрон]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Сверточные_нейронные_сети Сверточные нейронные сети]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Рекуррентные_нейронные_сети Рекуррентные нейронные сети ]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Обучение_с_подкреплением Обучение с подкреплением ]<sup>[на 06.12.18 не создан]</sup><br />
<br />
== Примечания ==<br />
<references/><br />
<br />
== Источники информации ==<br />
* [https://en.wikipedia.org/wiki/Deep_learning Deep learning, Wikipedia]<br />
* [https://ru.wikipedia.org/wiki/Глубокое_обучение Глубокое обучение, Wikipedia]<br />
* [http://www.deeplearningbook.org/ Deep Learning Book, MIT]<br />
* [https://towardsdatascience.com/multi-layer-neural-networks-with-sigmoid-function-deep-learning-for-rookies-2-bf464f09eb7f Multi-Layer Neural Networks with Sigmoid Function, Towards Data Science]<br />
* [https://www.kaggle.com/dansbecker/rectified-linear-units-relu-in-deep-learning Rectified Linear Units (ReLU) in Deep Learning, Kaggle]</div>80.76.244.114http://neerc.ifmo.ru/wiki/index.php?title=%D0%93%D0%BB%D1%83%D0%B1%D0%BE%D0%BA%D0%BE%D0%B5_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5&diff=67634Глубокое обучение2018-12-07T17:02:04Z<p>80.76.244.114: /* История */ Для Леры</p>
<hr />
<div>'''Глубокое обучение''' (англ. deep learning) {{---}} совокупность широкого семейства методов машинного обучения, основанных на обучении представлениям, а не специализированным алгоритмам под конкретные задачи. Глубокое обучение может быть с учителем, с частичным привлечением учителя, без учителя и с подкреплением. Несмотря на то, что данный раздел машинного обучения появился еще в 1980-х, до недавнего времени его применение было сильно ограничено из-за недостака вычислительных мощностей существовавших компьютеров. Ситуация изменилась только в середине 2000-х.<br />
<br />
На создание моделей глубокого обучения оказали влияние некоторые процессы и паттерны, происходящие в биологических нейронных системах. Несмотря на это, данные модели имеют множество различий с биологическим мозгом (и в структуре и в функциях), что делает невозможным использование теорем и доказательств, применяющихся нейробиологии.<br />
<br />
== История ==<br />
* 1943 - Искусственный нейрон Маккаллока — Питтса<ref>[https://en.wikipedia.org/wiki/Artificial_neuron Artificial neuron, Wikipedia]</ref> {{---}} узел искусственной нейронной сети, являющийся упрощённой моделью естественного нейрона.<br />
* 1949 - Принчип обучения нейронов Хебба<ref>[https://en.wikipedia.org/wiki/Hebbian_theory Hebbian theory, Wikipedia]</ref> {{---}} если изначально наблюдается причинно-следственная связь между активациями пре- и постсинаптического нейрона, то эта связь имеет тенденцию к усилению.<br />
* 1957 - Модель перцептрона предложена Фрэнком Розенблаттом<ref>[https://en.wikipedia.org/wiki/Perceptron Perceptron, Wikipedia]</ref> {{---}} математическая или компьютерная модель восприятия информации мозгом.<br />
* 1960 - Дельта-правило обучения перцептрона<ref>[https://en.wikipedia.org/wiki/Delta_rule Delta rule, Wikipedia]</ref> {{---}} метод обучения перцептрона по принципу градиентного спуска по поверхности ошибки.<br />
* 1969 - Выход книги Марвина Минска и Сеймура Паперта "Перцептроны"<ref>[https://en.wikipedia.org/wiki/Perceptrons_(book) Perceptrons book, WIkipedia]</ref> В данной книге математически показаны ограничения перцептронов.<br />
* 1974 - Метод обратного распространения ошибки впервые предложен А. И. Галушкиным и Дж. Вербосом<ref>[https://en.wikipedia.org/wiki/Backpropagation Backpropagation, Wikipedia]</ref> {{---}} метод вычисления градиента, который используется при обновлении весов многослойного перцептрона.<br />
* 1980 - Первая свёрточная нейронная сеть предложена Кунихико Фукусимой<ref>[https://en.wikipedia.org/wiki/Convolutional_neural_network Convolutional_neural_network, Wikipedia]</ref> {{---}} специальная архитектура искусственных нейронных сетей использующая некоторые особенности зрительной коры.<br />
* 1982 - Рекуррентные нейронные сети предложены Д. Хопфилдом {{---}} вид нейронных сетей, где связи между элементами образуют направленную последовательность.<br />
* 1991 - Проблема "исчезающего" градиента была сформулирована С. Хочрейтом. Проблема заключается в быстрой потере информации с течением времени.<br />
* 1997 - Долгая краткосрочная память предложена С. Хочрейтом и Ю. Шмидхубером<ref>[https://en.wikipedia.org/wiki/Long_short-term_memory Long short-term memory, Wikipedia]</ref>. В отличие от традиционных рекуррентных нейронных сетей, LSTM-сеть хорошо приспособлена к обучению на задачах классификации, обработки и прогнозирования временных рядов в случаях, когда важные события разделены временными лагами с неопределённой продолжительностью и границами.<br />
* 1998 - Градиентный спуск для сверточных нейронных сетей предложена Я. Лекуном<br />
* 2006 - Публикации Г. Хинтона, С. Осиндера и Я. Теха об обучении сетей глубоких убеждений. Данные публикации смогли привлечь внимание к глубоким сетям.<br />
* 2012 - Предложение дропаута Г. Хинтоном, А. Крижевски и И. Шутковичем<ref>[https://en.wikipedia.org/wiki/Dropout_(neural_networks) Dropout, Wikipedia]</ref>. Дропаут (от англ. dropout) — метод регуляризации искусственных нейронных сетей, предназначен для предотвращения переобучения сети.<br />
* 2012 - Нейронные сети побеждают в ImageNet Challenge<ref>[https://en.wikipedia.org/wiki/ImageNet#ImageNet_Challenge ImageNet Challenge, Wikipedia]</ref>. Данное событие ознаменовало начало эры нейронных сетей и глубокого обучения.<br />
<br />
Начиная с 2012 года машинное обучение во-многом фокусируется на глубоких сетях. Искусственный интеллект и машинное обучение обычно упоминаются в контексте глубокого обучения.<br />
<br />
Глубокое обучение используется [http://neerc.ifmo.ru/wiki/index.php?title=%D0%93%D0%BB%D1%83%D0%B1%D0%BE%D0%BA%D0%BE%D0%B5_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5#.D0.9F.D1.80.D0.B8.D0.BC.D0.B5.D0.BD.D0.B5.D0.BD.D0.B8.D1.8F во-многих сферах].<br />
<br />
== Определение == <br />
'''Глубокое обучение''' {{---}} это класс алгоритмов машинного обучения, который:<br />
<br />
* использует многослойную систему нелинейных фильтров для извлечения признаков с преобразованиями. Каждый последующий слой получает на входе выходные данные предыдущего слоя. <br />
* может сочетать алгоритмы обучения с учителем (пример {{---}} классификация) и без учителя (пример {{---}} анализ образца).<br />
* формирует в процессе обучения слои выявления признаков на нескольких уровнях представлений, которые соответствуют различным уровням абстракции; при этом признаки организованы иерархически - признаки более высокого уровня являются производными от признаков более низкого уровня.<br />
<br />
== Нейронные сети ==<br />
* Искусственные нейронные сети (англ. artificial neural networks (ANN))<ref>[https://en.wikipedia.org/wiki/Artificial_neural_network Artificial neural network, Wikipedia]</ref><br />
* Глубокие нейронные сети (англ. deep neural network (DNN))<ref>[https://en.wikipedia.org/wiki/Deep_learning#Deep_neural_networks Deep neural networks , Wikipedia]</ref><br />
<br />
== Применения ==<br />
* Распознавание речи<ref>[https://en.wikipedia.org/wiki/Speech_recognition Speech recognition, Wikipedia]</ref><br />
* Компьютерное зрение<ref>[http://neerc.ifmo.ru/wiki/index.php?title=Задача_нахождения_объектов_на_изображении Задача нахождения объектов на изображении]<sup>[на 06.12.18 не создан]</sup></ref><br />
* Обработка визуальных изображений<ref>[https://en.wikipedia.org/wiki/Deep_learning#Visual_art_processing Visual art processing , Wikipedia]</ref><br />
* Обработка естественного языка<ref>[https://en.wikipedia.org/wiki/Natural_language_processing Natural language processing, Wikipedia]</ref><br />
* Обнаружение новых лекарственных препаратов<br />
* Рекомендательные системы<ref>[https://en.wikipedia.org/wiki/Recommender_system Recommender system, Wikipedia]</ref><br />
* Предсказание генномных онтологий в биоинформатике<ref>[https://en.wikipedia.org/wiki/Deep_learning#Bioinformatics Deep learning in bioinformatics, Wikipedia]</ref><br />
<br />
Полный список возможных применений глубокого обучения<ref>[https://en.wikipedia.org/wiki/Deep_learning#Applications Applications of deep learning, Wikipedia]</ref>.<br />
<br />
== Sigmoid function ==<br />
У ступенчатых функций есть определенное количество ограничений, связанных с ее линейностью. Если функция активации является линейной, то независимо от количества складываемых скрытых слоев в нейронной сети, конечный результат по-прежнему будет являеться линейной комбинацией исходных входных данных. Эта линейность означает, что она не может реально охватить сложность нелинейных задач, таких как оператор XOR или различные паттерны, разделенные кривыми или кругами. Другой проблемой является то, что перцептрон с ступенчатой функцией не очень «стабилен», то есть может перейти из состояния 0 в 1 и из 0 в 1 при небольших изменениях в любом из весов входного слоя. <br />
<br />
Для того, чтобы избежать данных проблем, в нейронных сетях используется sigmoid функция в качестве активационной. <br />
<br />
[[Файл:sigmoid_function.png|border|500px|thumb|center|Рис 1. Sigmoid Function]]<br />
<br />
Функция sigmoid, в отличие от ступенчатой функции, вводит нелинейность в выбранную модель нейронной сети. Нелинейность означает, что выход, получаемых из нейрона, который является произведением некоторых входов <math>x (x_1, x_2, ..., x_m)</math> и весов <math>w (w_1, w_2, ..., w_m)</math> плюс смещение, а затем помещаемый в sigmoid функцию, не может быть представлен линейной комбинацией входов <math>x (x_1, x_2, ..., x_m)</math>.<br />
<br />
== Rectified Linear Units (ReLU) ==<br />
Несмотря на множество сильных сторон sigmoid функции, у нее есть значительные недостатки. Производная такой функции крайне мала во всех точках, кроме сравнительно небольшого промежутка. Это сильно усложняет процесс улучшения весов с помощью градиентного спуска. Эта проблема усугубляется в случае, если модель содержит больше слоев. Данная проблема называется проблемой исчезающего градиента.<ref>[https://en.wikipedia.org/wiki/Vanishing_gradient_problem Vanishing gradient problem, Wikipedia]</ref><br />
<br />
Функция ReLU имеет производную равную 0 для всех отрицательных значениях и 1 для положительных. Таким образом, когда обучение происходит на датасетах разумного размера, обычно находятся точки данных, дающие положительные значения для любого выбранного узла. Таким образом, средняя производная редко бывает близка к 0, что позволяет продолжать градиентный спуск.<br />
<br />
'''Rectified Linear Unit''' {{---}} это наиболее часто используемая активационная функция при глубоком обучении. Данная функция возвращает 0, если принимает отрицательный вход, в случае же положительного входа, функция возвращает само число. Таким образом функция может быть записана как <math>f(x)=max(0,x)</math>.<br />
<br />
[[Файл:Relu.png|500px|thumb|center|Рис 2. Rectified Linear Units]]<br />
<br />
Функция ReLU отлично работает в большинстве приложений, в результате чего она получила широкое распространение. Данная функция позволяет правильно учитывать нелинейности и взаимодействия.<br />
<br />
== Фреймворки для глубокого обучения ==<br />
* TensorFlow<ref>[https://en.wikipedia.org/wiki/TensorFlow TensorFlow, Wikipedia]</ref><br />
* Microsoft Cognitive Toolkit<ref>[https://en.wikipedia.org/wiki/Microsoft_Cognitive_Toolkit Microsoft Cognitive Toolkit, Wikipedia]</ref><br />
* Wolfram Mathematica<ref>[https://en.wikipedia.org/wiki/Wolfram_Mathematica Wolfram Mathematica, Wikipedia]</ref><br />
* Keras<ref>[https://en.wikipedia.org/wiki/Keras Keras, Wikipedia]</ref><br />
* Deeplearning4j<ref>[https://en.wikipedia.org/wiki/Deeplearning4j Deeplearning4j, Wikipedia]</ref><br />
* Caffe<ref>[https://en.wikipedia.org/wiki/Caffe_(software) Caffe, Wikipedia]</ref><br />
* Torch/PyTorch<ref>[https://habr.com/post/334380 PyTorch — ваш новый фреймворк глубокого обучения, habr]</ref><br />
* MXNet<ref>[https://mxnet.apache.org MXNet, official site]</ref><br />
* Chainer<ref>[https://chainer.org Chainer, official site]</ref><br />
Сопоставление фреймворков, библиотек и отдельных программ для глубокого обучения<ref>[https://en.wikipedia.org/wiki/Comparison_of_deep_learning_software Comparison of deep learning software, Wikipedia]</ref>.<br />
<br />
== См. также ==<br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Нейронные_сети,_перцептрон Нейронные сети, перцептрон]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Сверточные_нейронные_сети Сверточные нейронные сети]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Рекуррентные_нейронные_сети Рекуррентные нейронные сети ]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Обучение_с_подкреплением Обучение с подкреплением ]<sup>[на 06.12.18 не создан]</sup><br />
<br />
== Примечания ==<br />
<references/><br />
<br />
== Источники информации ==<br />
* [https://en.wikipedia.org/wiki/Deep_learning Deep learning, Wikipedia]<br />
* [https://ru.wikipedia.org/wiki/Глубокое_обучение Глубокое обучение, Wikipedia]<br />
* [http://www.deeplearningbook.org/ Deep Learning Book, MIT]<br />
* [https://towardsdatascience.com/multi-layer-neural-networks-with-sigmoid-function-deep-learning-for-rookies-2-bf464f09eb7f Multi-Layer Neural Networks with Sigmoid Function, Towards Data Science]<br />
* [https://www.kaggle.com/dansbecker/rectified-linear-units-relu-in-deep-learning Rectified Linear Units (ReLU) in Deep Learning, Kaggle]</div>80.76.244.114http://neerc.ifmo.ru/wiki/index.php?title=%D0%93%D0%BB%D1%83%D0%B1%D0%BE%D0%BA%D0%BE%D0%B5_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5&diff=67630Глубокое обучение2018-12-07T16:24:57Z<p>80.76.244.114: /* История */</p>
<hr />
<div>'''Глубокое обучение''' (англ. deep learning) {{---}} совокупность широкого семейства методов машинного обучения, основанных на обучении представлениям, а не специализированным алгоритмам под конкретные задачи. Глубокое обучение может быть с учителем, с частичным привлечением учителя, без учителя и с подкреплением. Несмотря на то, что данный раздел машинного обучения появился еще в 1980-х, до недавнего времени его применение было сильно ограничено из-за недостака вычислительных мощностей существовавших компьютеров. Ситуация изменилась только в середине 2000-х.<br />
<br />
На создание моделей глубокого обучения оказали влияние некоторые процессы и паттерны, происходящие в биологических нейронных системах. Несмотря на это, данные модели имеют множество различий с биологическим мозгом (и в структуре и в функциях), что делает невозможным использование теорем и доказательств, применяющихся нейробиологии.<br />
<br />
== История ==<br />
* 1943 - Искусственный нейрон Маккаллока — Питтса<ref>[https://en.wikipedia.org/wiki/Artificial_neuron Artificial neuron, Wikipedia]</ref><br />
* 1949 - Принчип обучения нейронов Хебба<ref>[https://en.wikipedia.org/wiki/Hebbian_theory Hebbian theory, Wikipedia]</ref><br />
* 1957 - Модель перцептрона предложена Фрэнком Розенблаттом<ref>[https://en.wikipedia.org/wiki/Perceptron Perceptron, Wikipedia]</ref><br />
* 1960 - Дельта-правило обучения перцептрона<ref>[https://en.wikipedia.org/wiki/Delta_rule Delta rule, Wikipedia]</ref><br />
* 1969 - Выход книги Марвина Минска и Сеймура Паперта "Перцептроны"<ref>[https://en.wikipedia.org/wiki/Perceptrons_(book) Perceptrons book, WIkipedia]</ref><br />
* 1974 - Метод обратного распространения ошибки впервые предложен А. И. Галушкиным и Дж. Вербосом<ref>[https://en.wikipedia.org/wiki/Backpropagation Backpropagation, Wikipedia]</ref><br />
* 1980 - Первая свёрточная нейронная сеть предложена Кунихико Фукусимой<ref>[https://en.wikipedia.org/wiki/Convolutional_neural_network Convolutional_neural_network, Wikipedia]</ref><br />
* 1982 - Рекуррентные нейронные сети предложены Д. Хопфилдом<br />
* 1991 - Проблема "исчезающего" градиента была сформулирована С. Хочрейтом<br />
* 1997 - Долгая краткосрочная память предложена С. Хочрейтом и Ю. Шмидхубером<ref>[https://en.wikipedia.org/wiki/Long_short-term_memory Long short-term memory, Wikipedia]</ref><br />
* 1998 - Градиентный спуск для сверточных нейронных сетей предложена Я. Лекуном<br />
* 2006 - Глубокая модель предложена Г. Хинтоном, С. Осиндером и Я. Техом<br />
* 2012 - Предложение исключений(дропаута) Г. Хинтоном, А. Крижевски и И. Шутковичем<ref>[https://en.wikipedia.org/wiki/Dropout_(neural_networks) Dropout, Wikipedia]</ref><br />
* 2012 - Нейронные сети побеждают ImageNet<ref>[https://ru.wikipedia.org/wiki/ImageNet ImageNet, Wikipedia]</ref>. Начало эры нейронных сетей и глубокого обучения.<br />
<br />
== Определение == <br />
'''Глубокое обучение''' {{---}} это класс алгоритмов машинного обучения, который:<br />
<br />
* использует многослойную систему нелинейных фильтров для извлечения признаков с преобразованиями. Каждый последующий слой получает на входе выходные данные предыдущего слоя. <br />
* может сочетать алгоритмы обучения с учителем (пример {{---}} классификация) и без учителя (пример {{---}} анализ образца).<br />
* формирует в процессе обучения слои выявления признаков на нескольких уровнях представлений, которые соответствуют различным уровням абстракции; при этом признаки организованы иерархически - признаки более высокого уровня являются производными от признаков более низкого уровня.<br />
<br />
== Нейронные сети ==<br />
* Искусственные нейронные сети (англ. artificial neural networks (ANN))<ref>[https://en.wikipedia.org/wiki/Artificial_neural_network Artificial neural network, Wikipedia]</ref><br />
* Глубокие нейронные сети (англ. deep neural network (DNN))<ref>[https://en.wikipedia.org/wiki/Deep_learning#Deep_neural_networks Deep neural networks , Wikipedia]</ref><br />
<br />
== Применения ==<br />
* Распознавание речи<ref>[https://en.wikipedia.org/wiki/Speech_recognition Speech recognition, Wikipedia]</ref><br />
* Компьютерное зрение<ref>[http://neerc.ifmo.ru/wiki/index.php?title=Задача_нахождения_объектов_на_изображении Задача нахождения объектов на изображении]<sup>[на 06.12.18 не создан]</sup></ref><br />
* Обработка визуальных изображений<ref>[https://en.wikipedia.org/wiki/Deep_learning#Visual_art_processing Visual art processing , Wikipedia]</ref><br />
* Обработка естественного языка<ref>[https://en.wikipedia.org/wiki/Natural_language_processing Natural language processing, Wikipedia]</ref><br />
* Обнаружение новых лекарственных препаратов<br />
* Рекомендательные системы<ref>[https://en.wikipedia.org/wiki/Recommender_system Recommender system, Wikipedia]</ref><br />
* Предсказание генномных онтологий в биоинформатике<ref>[https://en.wikipedia.org/wiki/Deep_learning#Bioinformatics Deep learning in bioinformatics, Wikipedia]</ref><br />
<br />
Полный список возможных применений глубокого обучения<ref>[https://en.wikipedia.org/wiki/Deep_learning#Applications Applications of deep learning, Wikipedia]</ref>.<br />
<br />
== Sigmoid function ==<br />
У ступенчатых функций есть определенное количество ограничений, связанных с ее линейностью. Если функция активации является линейной, то независимо от количества складываемых скрытых слоев в нейронной сети, конечный результат по-прежнему будет являеться линейной комбинацией исходных входных данных. Эта линейность означает, что она не может реально охватить сложность нелинейных задач, таких как оператор XOR или различные паттерны, разделенные кривыми или кругами. Другой проблемой является то, что перцептрон с ступенчатой функцией не очень «стабилен», то есть может перейти из состояния 0 в 1 и из 0 в 1 при небольших изменениях в любом из весов входного слоя. <br />
<br />
Для того, чтобы избежать данных проблем, в нейронных сетях используется sigmoid функция в качестве активационной. <br />
<br />
[[Файл:sigmoid_function.png|border|500px|thumb|center|Рис 1. Sigmoid Function]]<br />
<br />
Функция sigmoid, в отличие от ступенчатой функции, вводит нелинейность в выбранную модель нейронной сети. Нелинейность означает, что выход, получаемых из нейрона, который является произведением некоторых входов <math>x (x_1, x_2, ..., x_m)</math> и весов <math>w (w_1, w_2, ..., w_m)</math> плюс смещение, а затем помещаемый в sigmoid функцию, не может быть представлен линейной комбинацией входов <math>x (x_1, x_2, ..., x_m)</math>.<br />
<br />
== Rectified Linear Units (ReLU) ==<br />
Несмотря на множество сильных сторон sigmoid функции, у нее есть значительные недостатки. Производная такой функции крайне мала во всех точках, кроме сравнительно небольшого промежутка. Это сильно усложняет процесс улучшения весов с помощью градиентного спуска. Эта проблема усугубляется в случае, если модель содержит больше слоев. Данная проблема называется проблемой исчезающего градиента.<ref>[https://en.wikipedia.org/wiki/Vanishing_gradient_problem Vanishing gradient problem, Wikipedia]</ref><br />
<br />
Функция ReLU имеет производную равную 0 для всех отрицательных значениях и 1 для положительных. Таким образом, когда обучение происходит на датасетах разумного размера, обычно находятся точки данных, дающие положительные значения для любого выбранного узла. Таким образом, средняя производная редко бывает близка к 0, что позволяет продолжать градиентный спуск.<br />
<br />
'''Rectified Linear Unit''' {{---}} это наиболее часто используемая активационная функция при глубоком обучении. Данная функция возвращает 0, если принимает отрицательный вход, в случае же положительного входа, функция возвращает само число. Таким образом функция может быть записана как <math>f(x)=max(0,x)</math>.<br />
<br />
[[Файл:Relu.png|500px|thumb|center|Рис 2. Rectified Linear Units]]<br />
<br />
Функция ReLU отлично работает в большинстве приложений, в результате чего она получила широкое распространение. Данная функция позволяет правильно учитывать нелинейности и взаимодействия.<br />
<br />
== Фреймворки для глубокого обучения ==<br />
* TensorFlow<ref>[https://en.wikipedia.org/wiki/TensorFlow TensorFlow, Wikipedia]</ref><br />
* Microsoft Cognitive Toolkit<ref>[https://en.wikipedia.org/wiki/Microsoft_Cognitive_Toolkit Microsoft Cognitive Toolkit, Wikipedia]</ref><br />
* Wolfram Mathematica<ref>[https://en.wikipedia.org/wiki/Wolfram_Mathematica Wolfram Mathematica, Wikipedia]</ref><br />
* Keras<ref>[https://en.wikipedia.org/wiki/Keras Keras, Wikipedia]</ref><br />
* Deeplearning4j<ref>[https://en.wikipedia.org/wiki/Deeplearning4j Deeplearning4j, Wikipedia]</ref><br />
* Caffe<ref>[https://en.wikipedia.org/wiki/Caffe_(software) Caffe, Wikipedia]</ref><br />
* Torch/PyTorch<ref>[https://habr.com/post/334380 PyTorch — ваш новый фреймворк глубокого обучения, habr]</ref><br />
* MXNet<ref>[https://mxnet.apache.org MXNet, official site]</ref><br />
* Chainer<ref>[https://chainer.org Chainer, official site]</ref><br />
Сопоставление фреймворков, библиотек и отдельных программ для глубокого обучения<ref>[https://en.wikipedia.org/wiki/Comparison_of_deep_learning_software Comparison of deep learning software, Wikipedia]</ref>.<br />
<br />
== См. также ==<br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Нейронные_сети,_перцептрон Нейронные сети, перцептрон]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Сверточные_нейронные_сети Сверточные нейронные сети]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Рекуррентные_нейронные_сети Рекуррентные нейронные сети ]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Обучение_с_подкреплением Обучение с подкреплением ]<sup>[на 06.12.18 не создан]</sup><br />
<br />
== Примечания ==<br />
<references/><br />
<br />
== Источники информации ==<br />
* [https://en.wikipedia.org/wiki/Deep_learning Deep learning, Wikipedia]<br />
* [https://ru.wikipedia.org/wiki/Глубокое_обучение Глубокое обучение, Wikipedia]<br />
* [http://www.deeplearningbook.org/ Deep Learning Book, MIT]<br />
* [https://towardsdatascience.com/multi-layer-neural-networks-with-sigmoid-function-deep-learning-for-rookies-2-bf464f09eb7f Multi-Layer Neural Networks with Sigmoid Function, Towards Data Science]<br />
* [https://www.kaggle.com/dansbecker/rectified-linear-units-relu-in-deep-learning Rectified Linear Units (ReLU) in Deep Learning, Kaggle]</div>80.76.244.114http://neerc.ifmo.ru/wiki/index.php?title=%D0%93%D0%BB%D1%83%D0%B1%D0%BE%D0%BA%D0%BE%D0%B5_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5&diff=67629Глубокое обучение2018-12-07T16:22:25Z<p>80.76.244.114: /* История */</p>
<hr />
<div>'''Глубокое обучение''' (англ. deep learning) {{---}} совокупность широкого семейства методов машинного обучения, основанных на обучении представлениям, а не специализированным алгоритмам под конкретные задачи. Глубокое обучение может быть с учителем, с частичным привлечением учителя, без учителя и с подкреплением. Несмотря на то, что данный раздел машинного обучения появился еще в 1980-х, до недавнего времени его применение было сильно ограничено из-за недостака вычислительных мощностей существовавших компьютеров. Ситуация изменилась только в середине 2000-х.<br />
<br />
На создание моделей глубокого обучения оказали влияние некоторые процессы и паттерны, происходящие в биологических нейронных системах. Несмотря на это, данные модели имеют множество различий с биологическим мозгом (и в структуре и в функциях), что делает невозможным использование теорем и доказательств, применяющихся нейробиологии.<br />
<br />
== История ==<br />
* 1943 - Искусственный нейрон Маккаллока — Питтса<ref>[https://en.wikipedia.org/wiki/Artificial_neuron Artificial neuron, Wikipedia]</ref><br />
* 1949 - Принчип обучения нейронов Хебба<ref>[https://en.wikipedia.org/wiki/Hebbian_theory Hebbian theory, Wikipedia]</ref><br />
* 1957 - Модель перцептрона предложена Фрэнком Розенблаттом<ref>[https://en.wikipedia.org/wiki/Perceptron Perceptron, Wikipedia]</ref><br />
* 1960 - Дельта-правило обучения перцептрона<ref>[https://en.wikipedia.org/wiki/Delta_rule Delta rule, Wikipedia]</ref><br />
* 1969 - Выход книги Марвина Минска и Сеймура Паперта "Перцептроны"<ref>[https://en.wikipedia.org/wiki/Perceptrons_(book) Perceptrons book, WIkipedia]</ref><br />
* 1974 - Метод обратного распространения ошибки впервые предложен А. И. Галушкиным и Дж. Вербосом<ref>[https://en.wikipedia.org/wiki/Backpropagation Backpropagation, Wikipedia]</ref><br />
* 1980 - Первая свёрточная нейронная сеть предложена Кунихико Фукусимой<ref>[https://en.wikipedia.org/wiki/Convolutional_neural_network Convolutional_neural_network, Wikipedia]</ref><br />
* 1982 - Рекуррентные нейронные сети предложены Д. Хопфилдом<br />
* 1991 - "Проблема исчезающего градиента" была сформулирована С. Хочрейтом<br />
* 1997 - Долгая краткосрочная память предложена С. Хочрейтом и Ю. Шмидхубером<ref>[https://en.wikipedia.org/wiki/Long_short-term_memory Long short-term memory, Wikipedia]</ref><br />
* 1998 - Градиентный спуск для сверточных нейронных сетей предложена Я. Лекуном<br />
* 2006 - Глубокая модель предложена Г. Хинтоном, С. Осиндером и Я. Техом<br />
* 2012 - Предложение исключений(дропаута) Г. Хинтоном, А. Крижевски и И. Шутковичем<ref>[https://en.wikipedia.org/wiki/Dropout_(neural_networks) Dropout, Wikipedia]</ref><br />
* 2012 - Нейронные сети побеждают ImageNet<ref>[https://ru.wikipedia.org/wiki/ImageNet ImageNet, Wikipedia]</ref>. Начало эры нейронных сетей и глубокого обучения.<br />
<br />
== Определение == <br />
'''Глубокое обучение''' {{---}} это класс алгоритмов машинного обучения, который:<br />
<br />
* использует многослойную систему нелинейных фильтров для извлечения признаков с преобразованиями. Каждый последующий слой получает на входе выходные данные предыдущего слоя. <br />
* может сочетать алгоритмы обучения с учителем (пример {{---}} классификация) и без учителя (пример {{---}} анализ образца).<br />
* формирует в процессе обучения слои выявления признаков на нескольких уровнях представлений, которые соответствуют различным уровням абстракции; при этом признаки организованы иерархически - признаки более высокого уровня являются производными от признаков более низкого уровня.<br />
<br />
== Нейронные сети ==<br />
* Искусственные нейронные сети (англ. artificial neural networks (ANN))<ref>[https://en.wikipedia.org/wiki/Artificial_neural_network Artificial neural network, Wikipedia]</ref><br />
* Глубокие нейронные сети (англ. deep neural network (DNN))<ref>[https://en.wikipedia.org/wiki/Deep_learning#Deep_neural_networks Deep neural networks , Wikipedia]</ref><br />
<br />
== Применения ==<br />
* Распознавание речи<ref>[https://en.wikipedia.org/wiki/Speech_recognition Speech recognition, Wikipedia]</ref><br />
* Компьютерное зрение<ref>[http://neerc.ifmo.ru/wiki/index.php?title=Задача_нахождения_объектов_на_изображении Задача нахождения объектов на изображении]<sup>[на 06.12.18 не создан]</sup></ref><br />
* Обработка визуальных изображений<ref>[https://en.wikipedia.org/wiki/Deep_learning#Visual_art_processing Visual art processing , Wikipedia]</ref><br />
* Обработка естественного языка<ref>[https://en.wikipedia.org/wiki/Natural_language_processing Natural language processing, Wikipedia]</ref><br />
* Обнаружение новых лекарственных препаратов<br />
* Рекомендательные системы<ref>[https://en.wikipedia.org/wiki/Recommender_system Recommender system, Wikipedia]</ref><br />
* Предсказание генномных онтологий в биоинформатике<ref>[https://en.wikipedia.org/wiki/Deep_learning#Bioinformatics Deep learning in bioinformatics, Wikipedia]</ref><br />
<br />
Полный список возможных применений глубокого обучения<ref>[https://en.wikipedia.org/wiki/Deep_learning#Applications Applications of deep learning, Wikipedia]</ref>.<br />
<br />
== Sigmoid function ==<br />
У ступенчатых функций есть определенное количество ограничений, связанных с ее линейностью. Если функция активации является линейной, то независимо от количества складываемых скрытых слоев в нейронной сети, конечный результат по-прежнему будет являеться линейной комбинацией исходных входных данных. Эта линейность означает, что она не может реально охватить сложность нелинейных задач, таких как оператор XOR или различные паттерны, разделенные кривыми или кругами. Другой проблемой является то, что перцептрон с ступенчатой функцией не очень «стабилен», то есть может перейти из состояния 0 в 1 и из 0 в 1 при небольших изменениях в любом из весов входного слоя. <br />
<br />
Для того, чтобы избежать данных проблем, в нейронных сетях используется sigmoid функция в качестве активационной. <br />
<br />
[[Файл:sigmoid_function.png|border|500px|thumb|center|Рис 1. Sigmoid Function]]<br />
<br />
Функция sigmoid, в отличие от ступенчатой функции, вводит нелинейность в выбранную модель нейронной сети. Нелинейность означает, что выход, получаемых из нейрона, который является произведением некоторых входов <math>x (x_1, x_2, ..., x_m)</math> и весов <math>w (w_1, w_2, ..., w_m)</math> плюс смещение, а затем помещаемый в sigmoid функцию, не может быть представлен линейной комбинацией входов <math>x (x_1, x_2, ..., x_m)</math>.<br />
<br />
== Rectified Linear Units (ReLU) ==<br />
Несмотря на множество сильных сторон sigmoid функции, у нее есть значительные недостатки. Производная такой функции крайне мала во всех точках, кроме сравнительно небольшого промежутка. Это сильно усложняет процесс улучшения весов с помощью градиентного спуска. Эта проблема усугубляется в случае, если модель содержит больше слоев. Данная проблема называется проблемой исчезающего градиента.<ref>[https://en.wikipedia.org/wiki/Vanishing_gradient_problem Vanishing gradient problem, Wikipedia]</ref><br />
<br />
Функция ReLU имеет производную равную 0 для всех отрицательных значениях и 1 для положительных. Таким образом, когда обучение происходит на датасетах разумного размера, обычно находятся точки данных, дающие положительные значения для любого выбранного узла. Таким образом, средняя производная редко бывает близка к 0, что позволяет продолжать градиентный спуск.<br />
<br />
'''Rectified Linear Unit''' {{---}} это наиболее часто используемая активационная функция при глубоком обучении. Данная функция возвращает 0, если принимает отрицательный вход, в случае же положительного входа, функция возвращает само число. Таким образом функция может быть записана как <math>f(x)=max(0,x)</math>.<br />
<br />
[[Файл:Relu.png|500px|thumb|center|Рис 2. Rectified Linear Units]]<br />
<br />
Функция ReLU отлично работает в большинстве приложений, в результате чего она получила широкое распространение. Данная функция позволяет правильно учитывать нелинейности и взаимодействия.<br />
<br />
== Фреймворки для глубокого обучения ==<br />
* TensorFlow<ref>[https://en.wikipedia.org/wiki/TensorFlow TensorFlow, Wikipedia]</ref><br />
* Microsoft Cognitive Toolkit<ref>[https://en.wikipedia.org/wiki/Microsoft_Cognitive_Toolkit Microsoft Cognitive Toolkit, Wikipedia]</ref><br />
* Wolfram Mathematica<ref>[https://en.wikipedia.org/wiki/Wolfram_Mathematica Wolfram Mathematica, Wikipedia]</ref><br />
* Keras<ref>[https://en.wikipedia.org/wiki/Keras Keras, Wikipedia]</ref><br />
* Deeplearning4j<ref>[https://en.wikipedia.org/wiki/Deeplearning4j Deeplearning4j, Wikipedia]</ref><br />
* Caffe<ref>[https://en.wikipedia.org/wiki/Caffe_(software) Caffe, Wikipedia]</ref><br />
* Torch/PyTorch<ref>[https://habr.com/post/334380 PyTorch — ваш новый фреймворк глубокого обучения, habr]</ref><br />
* MXNet<ref>[https://mxnet.apache.org MXNet, official site]</ref><br />
* Chainer<ref>[https://chainer.org Chainer, official site]</ref><br />
Сопоставление фреймворков, библиотек и отдельных программ для глубокого обучения<ref>[https://en.wikipedia.org/wiki/Comparison_of_deep_learning_software Comparison of deep learning software, Wikipedia]</ref>.<br />
<br />
== См. также ==<br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Нейронные_сети,_перцептрон Нейронные сети, перцептрон]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Сверточные_нейронные_сети Сверточные нейронные сети]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Рекуррентные_нейронные_сети Рекуррентные нейронные сети ]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Обучение_с_подкреплением Обучение с подкреплением ]<sup>[на 06.12.18 не создан]</sup><br />
<br />
== Примечания ==<br />
<references/><br />
<br />
== Источники информации ==<br />
* [https://en.wikipedia.org/wiki/Deep_learning Deep learning, Wikipedia]<br />
* [https://ru.wikipedia.org/wiki/Глубокое_обучение Глубокое обучение, Wikipedia]<br />
* [http://www.deeplearningbook.org/ Deep Learning Book, MIT]<br />
* [https://towardsdatascience.com/multi-layer-neural-networks-with-sigmoid-function-deep-learning-for-rookies-2-bf464f09eb7f Multi-Layer Neural Networks with Sigmoid Function, Towards Data Science]<br />
* [https://www.kaggle.com/dansbecker/rectified-linear-units-relu-in-deep-learning Rectified Linear Units (ReLU) in Deep Learning, Kaggle]</div>80.76.244.114http://neerc.ifmo.ru/wiki/index.php?title=%D0%93%D0%BB%D1%83%D0%B1%D0%BE%D0%BA%D0%BE%D0%B5_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5&diff=67628Глубокое обучение2018-12-07T16:22:13Z<p>80.76.244.114: /* История */</p>
<hr />
<div>'''Глубокое обучение''' (англ. deep learning) {{---}} совокупность широкого семейства методов машинного обучения, основанных на обучении представлениям, а не специализированным алгоритмам под конкретные задачи. Глубокое обучение может быть с учителем, с частичным привлечением учителя, без учителя и с подкреплением. Несмотря на то, что данный раздел машинного обучения появился еще в 1980-х, до недавнего времени его применение было сильно ограничено из-за недостака вычислительных мощностей существовавших компьютеров. Ситуация изменилась только в середине 2000-х.<br />
<br />
На создание моделей глубокого обучения оказали влияние некоторые процессы и паттерны, происходящие в биологических нейронных системах. Несмотря на это, данные модели имеют множество различий с биологическим мозгом (и в структуре и в функциях), что делает невозможным использование теорем и доказательств, применяющихся нейробиологии.<br />
<br />
== История ==<br />
* 1943 - Искусственный нейрон Маккаллока — Питтса<ref>[https://en.wikipedia.org/wiki/Artificial_neuron Artificial neuron, Wikipedia]</ref><br />
* 1949 - Принчип обучения нейронов Хебба<ref>[https://en.wikipedia.org/wiki/Hebbian_theory Hebbian theory, Wikipedia]</ref><br />
* 1957 - Модель перцептрона предложена Фрэнком Розенблаттом<ref>[https://en.wikipedia.org/wiki/Perceptron Perceptron, Wikipedia]</ref><br />
* 1960 - Дельта-правило обучения перцептрона<ref>[https://en.wikipedia.org/wiki/Delta_rule Delta rule, Wikipedia]</ref><br />
* 1969 - Выход книги Марвина Минска и Сеймура Паперта "Перцептроны"<ref>[https://en.wikipedia.org/wiki/Perceptrons_(book) Perceptrons book, WIkipedia]<ref><br />
* 1974 - Метод обратного распространения ошибки впервые предложен А. И. Галушкиным и Дж. Вербосом<ref>[https://en.wikipedia.org/wiki/Backpropagation Backpropagation, Wikipedia]</ref><br />
* 1980 - Первая свёрточная нейронная сеть предложена Кунихико Фукусимой<ref>[https://en.wikipedia.org/wiki/Convolutional_neural_network Convolutional_neural_network, Wikipedia]</ref><br />
* 1982 - Рекуррентные нейронные сети предложены Д. Хопфилдом<br />
* 1991 - "Проблема исчезающего градиента" была сформулирована С. Хочрейтом<br />
* 1997 - Долгая краткосрочная память предложена С. Хочрейтом и Ю. Шмидхубером<ref>[https://en.wikipedia.org/wiki/Long_short-term_memory Long short-term memory, Wikipedia]</ref><br />
* 1998 - Градиентный спуск для сверточных нейронных сетей предложена Я. Лекуном<br />
* 2006 - Глубокая модель предложена Г. Хинтоном, С. Осиндером и Я. Техом<br />
* 2012 - Предложение исключений(дропаута) Г. Хинтоном, А. Крижевски и И. Шутковичем<ref>[https://en.wikipedia.org/wiki/Dropout_(neural_networks) Dropout, Wikipedia]</ref><br />
* 2012 - Нейронные сети побеждают ImageNet<ref>[https://ru.wikipedia.org/wiki/ImageNet ImageNet, Wikipedia]</ref>. Начало эры нейронных сетей и глубокого обучения.<br />
<br />
== Определение == <br />
'''Глубокое обучение''' {{---}} это класс алгоритмов машинного обучения, который:<br />
<br />
* использует многослойную систему нелинейных фильтров для извлечения признаков с преобразованиями. Каждый последующий слой получает на входе выходные данные предыдущего слоя. <br />
* может сочетать алгоритмы обучения с учителем (пример {{---}} классификация) и без учителя (пример {{---}} анализ образца).<br />
* формирует в процессе обучения слои выявления признаков на нескольких уровнях представлений, которые соответствуют различным уровням абстракции; при этом признаки организованы иерархически - признаки более высокого уровня являются производными от признаков более низкого уровня.<br />
<br />
== Нейронные сети ==<br />
* Искусственные нейронные сети (англ. artificial neural networks (ANN))<ref>[https://en.wikipedia.org/wiki/Artificial_neural_network Artificial neural network, Wikipedia]</ref><br />
* Глубокие нейронные сети (англ. deep neural network (DNN))<ref>[https://en.wikipedia.org/wiki/Deep_learning#Deep_neural_networks Deep neural networks , Wikipedia]</ref><br />
<br />
== Применения ==<br />
* Распознавание речи<ref>[https://en.wikipedia.org/wiki/Speech_recognition Speech recognition, Wikipedia]</ref><br />
* Компьютерное зрение<ref>[http://neerc.ifmo.ru/wiki/index.php?title=Задача_нахождения_объектов_на_изображении Задача нахождения объектов на изображении]<sup>[на 06.12.18 не создан]</sup></ref><br />
* Обработка визуальных изображений<ref>[https://en.wikipedia.org/wiki/Deep_learning#Visual_art_processing Visual art processing , Wikipedia]</ref><br />
* Обработка естественного языка<ref>[https://en.wikipedia.org/wiki/Natural_language_processing Natural language processing, Wikipedia]</ref><br />
* Обнаружение новых лекарственных препаратов<br />
* Рекомендательные системы<ref>[https://en.wikipedia.org/wiki/Recommender_system Recommender system, Wikipedia]</ref><br />
* Предсказание генномных онтологий в биоинформатике<ref>[https://en.wikipedia.org/wiki/Deep_learning#Bioinformatics Deep learning in bioinformatics, Wikipedia]</ref><br />
<br />
Полный список возможных применений глубокого обучения<ref>[https://en.wikipedia.org/wiki/Deep_learning#Applications Applications of deep learning, Wikipedia]</ref>.<br />
<br />
== Sigmoid function ==<br />
У ступенчатых функций есть определенное количество ограничений, связанных с ее линейностью. Если функция активации является линейной, то независимо от количества складываемых скрытых слоев в нейронной сети, конечный результат по-прежнему будет являеться линейной комбинацией исходных входных данных. Эта линейность означает, что она не может реально охватить сложность нелинейных задач, таких как оператор XOR или различные паттерны, разделенные кривыми или кругами. Другой проблемой является то, что перцептрон с ступенчатой функцией не очень «стабилен», то есть может перейти из состояния 0 в 1 и из 0 в 1 при небольших изменениях в любом из весов входного слоя. <br />
<br />
Для того, чтобы избежать данных проблем, в нейронных сетях используется sigmoid функция в качестве активационной. <br />
<br />
[[Файл:sigmoid_function.png|border|500px|thumb|center|Рис 1. Sigmoid Function]]<br />
<br />
Функция sigmoid, в отличие от ступенчатой функции, вводит нелинейность в выбранную модель нейронной сети. Нелинейность означает, что выход, получаемых из нейрона, который является произведением некоторых входов <math>x (x_1, x_2, ..., x_m)</math> и весов <math>w (w_1, w_2, ..., w_m)</math> плюс смещение, а затем помещаемый в sigmoid функцию, не может быть представлен линейной комбинацией входов <math>x (x_1, x_2, ..., x_m)</math>.<br />
<br />
== Rectified Linear Units (ReLU) ==<br />
Несмотря на множество сильных сторон sigmoid функции, у нее есть значительные недостатки. Производная такой функции крайне мала во всех точках, кроме сравнительно небольшого промежутка. Это сильно усложняет процесс улучшения весов с помощью градиентного спуска. Эта проблема усугубляется в случае, если модель содержит больше слоев. Данная проблема называется проблемой исчезающего градиента.<ref>[https://en.wikipedia.org/wiki/Vanishing_gradient_problem Vanishing gradient problem, Wikipedia]</ref><br />
<br />
Функция ReLU имеет производную равную 0 для всех отрицательных значениях и 1 для положительных. Таким образом, когда обучение происходит на датасетах разумного размера, обычно находятся точки данных, дающие положительные значения для любого выбранного узла. Таким образом, средняя производная редко бывает близка к 0, что позволяет продолжать градиентный спуск.<br />
<br />
'''Rectified Linear Unit''' {{---}} это наиболее часто используемая активационная функция при глубоком обучении. Данная функция возвращает 0, если принимает отрицательный вход, в случае же положительного входа, функция возвращает само число. Таким образом функция может быть записана как <math>f(x)=max(0,x)</math>.<br />
<br />
[[Файл:Relu.png|500px|thumb|center|Рис 2. Rectified Linear Units]]<br />
<br />
Функция ReLU отлично работает в большинстве приложений, в результате чего она получила широкое распространение. Данная функция позволяет правильно учитывать нелинейности и взаимодействия.<br />
<br />
== Фреймворки для глубокого обучения ==<br />
* TensorFlow<ref>[https://en.wikipedia.org/wiki/TensorFlow TensorFlow, Wikipedia]</ref><br />
* Microsoft Cognitive Toolkit<ref>[https://en.wikipedia.org/wiki/Microsoft_Cognitive_Toolkit Microsoft Cognitive Toolkit, Wikipedia]</ref><br />
* Wolfram Mathematica<ref>[https://en.wikipedia.org/wiki/Wolfram_Mathematica Wolfram Mathematica, Wikipedia]</ref><br />
* Keras<ref>[https://en.wikipedia.org/wiki/Keras Keras, Wikipedia]</ref><br />
* Deeplearning4j<ref>[https://en.wikipedia.org/wiki/Deeplearning4j Deeplearning4j, Wikipedia]</ref><br />
* Caffe<ref>[https://en.wikipedia.org/wiki/Caffe_(software) Caffe, Wikipedia]</ref><br />
* Torch/PyTorch<ref>[https://habr.com/post/334380 PyTorch — ваш новый фреймворк глубокого обучения, habr]</ref><br />
* MXNet<ref>[https://mxnet.apache.org MXNet, official site]</ref><br />
* Chainer<ref>[https://chainer.org Chainer, official site]</ref><br />
Сопоставление фреймворков, библиотек и отдельных программ для глубокого обучения<ref>[https://en.wikipedia.org/wiki/Comparison_of_deep_learning_software Comparison of deep learning software, Wikipedia]</ref>.<br />
<br />
== См. также ==<br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Нейронные_сети,_перцептрон Нейронные сети, перцептрон]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Сверточные_нейронные_сети Сверточные нейронные сети]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Рекуррентные_нейронные_сети Рекуррентные нейронные сети ]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Обучение_с_подкреплением Обучение с подкреплением ]<sup>[на 06.12.18 не создан]</sup><br />
<br />
== Примечания ==<br />
<references/><br />
<br />
== Источники информации ==<br />
* [https://en.wikipedia.org/wiki/Deep_learning Deep learning, Wikipedia]<br />
* [https://ru.wikipedia.org/wiki/Глубокое_обучение Глубокое обучение, Wikipedia]<br />
* [http://www.deeplearningbook.org/ Deep Learning Book, MIT]<br />
* [https://towardsdatascience.com/multi-layer-neural-networks-with-sigmoid-function-deep-learning-for-rookies-2-bf464f09eb7f Multi-Layer Neural Networks with Sigmoid Function, Towards Data Science]<br />
* [https://www.kaggle.com/dansbecker/rectified-linear-units-relu-in-deep-learning Rectified Linear Units (ReLU) in Deep Learning, Kaggle]</div>80.76.244.114http://neerc.ifmo.ru/wiki/index.php?title=%D0%93%D0%BB%D1%83%D0%B1%D0%BE%D0%BA%D0%BE%D0%B5_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5&diff=67627Глубокое обучение2018-12-07T15:52:42Z<p>80.76.244.114: /* ПО для глубокого обучения */</p>
<hr />
<div>'''Глубокое обучение''' (англ. deep learning) {{---}} совокупность широкого семейства методов машинного обучения, основанных на обучении представлениям, а не специализированным алгоритмам под конкретные задачи. Глубокое обучение может быть с учителем, с частичным привлечением учителя, без учителя и с подкреплением. Несмотря на то, что данный раздел машинного обучения появился еще в 1980-х, до недавнего времени его применение было сильно ограничено из-за недостака вычислительных мощностей существовавших компьютеров. Ситуация изменилась только в середине 2000-х.<br />
<br />
На создание моделей глубокого обучения оказали влияние некоторые процессы и паттерны, происходящие в биологических нейронных системах. Несмотря на это, данные модели имеют множество различий с биологическим мозгом (и в структуре и в функциях), что делает невозможным использование теорем и доказательств, применяющихся нейробиологии.<br />
<br />
== История ==<br />
Стоит отметить, что первый общий рабочий алгоритм для глубоких многослойных перцептронов прямого распространения был опубликован в книге советских учёных Алексея Григорьевича Ивахненко и Валентина Григорьевича Лапы «Кибернетические предсказывающие устройства». Сам термин «глубокое обучение» появился в научном сообществе машинного обучения в 1986 году в работе израильско-американской ученой Рины Дехтер «Learning While Searching in Constraint-Satisfaction-Problems»<ref>[https://www.researchgate.net/publication/221605378_Learning_While_Searching_in_Constraint-Satisfaction-Problems Learning While Searching in Constraint-Satisfaction-Problems]</ref>. <br />
<br />
Многие архитектуры глубокого обучения берут своё начало с искусственной нейронной сети Neocognitron<ref>[https://en.wikipedia.org/wiki/Neocognitron Neocognitron, Wikipedia]</ref>, представленной в 1980 году Кунихикой Фукусимой. Особенное влияние данная сеть оказала на архитектуры, использующиеся для компьютерного зрения. В 1989 году Яну Лекуну удалось использовать алгоритм обратного распространения ошибки для обучения глубоких нейросетей для решения задачи распознавания рукописных ZIP-кодов<ref>[https://www.ics.uci.edu/~welling/teaching/273ASpring09/lecun-89e.pdf Backpropagation Applied to Handwritten Zip Code Recognition]</ref>. Хотя алгоритм работал, на его обучение потребовалось 3 дня, что существенно ограничевало применимость данного метода. Из-за низкой скорости обучения нейронные сети в 1990-х годах уступили место методу опорных векторов.<br />
<br />
Популярность глубокое обучение приобрело в середине 2000-х годов. Этому способствовали несколько факторов: <br />
* появились более мощные компьютеры, способные обучать большие нейронные сети;<br />
* появились новые датасеты, достаточные по объёму, чтобы обучение больших сетей имело смысл;<br />
* произошли существенные продвижения в теории искусственных нейронных сетей. В появившихся статьях авторы показали, что можно эффективно предобучать многослойную нейронную сеть, если обучать каждый слой отдельно при помощи ограниченной машины Больцмана, а затем дообучать при помощи метода обратного распространения ошибки;<br />
* технология привлекли внимание крупных медиа, {{---}} первым из мировых СМИ об этом написал The New York Times.<br />
<br />
== Определение == <br />
'''Глубокое обучение''' {{---}} это класс алгоритмов машинного обучения, который:<br />
<br />
* использует многослойную систему нелинейных фильтров для извлечения признаков с преобразованиями. Каждый последующий слой получает на входе выходные данные предыдущего слоя. <br />
* может сочетать алгоритмы обучения с учителем (пример {{---}} классификация) и без учителя (пример {{---}} анализ образца).<br />
* формирует в процессе обучения слои выявления признаков на нескольких уровнях представлений, которые соответствуют различным уровням абстракции; при этом признаки организованы иерархически - признаки более высокого уровня являются производными от признаков более низкого уровня.<br />
<br />
== Нейронные сети ==<br />
* Искусственные нейронные сети (англ. artificial neural networks (ANN))<ref>[https://en.wikipedia.org/wiki/Artificial_neural_network Artificial neural network, Wikipedia]</ref><br />
* Глубокие нейронные сети (англ. deep neural network (DNN))<ref>[https://en.wikipedia.org/wiki/Deep_learning#Deep_neural_networks Deep neural networks , Wikipedia]</ref><br />
<br />
== Применения ==<br />
* Распознавание речи<ref>[https://en.wikipedia.org/wiki/Speech_recognition Speech recognition, Wikipedia]</ref><br />
* Компьютерное зрение<ref>[http://neerc.ifmo.ru/wiki/index.php?title=Задача_нахождения_объектов_на_изображении Задача нахождения объектов на изображении]<sup>[на 06.12.18 не создан]</sup></ref><br />
* Обработка визуальных изображений<ref>[https://en.wikipedia.org/wiki/Deep_learning#Visual_art_processing Visual art processing , Wikipedia]</ref><br />
* Обработка естественного языка<ref>[https://en.wikipedia.org/wiki/Natural_language_processing Natural language processing, Wikipedia]</ref><br />
* Обнаружение новых лекарственных препаратов<br />
* Рекомендательные системы<ref>[https://en.wikipedia.org/wiki/Recommender_system Recommender system, Wikipedia]</ref><br />
* Предсказание генномных онтологий в биоинформатике<ref>[https://en.wikipedia.org/wiki/Deep_learning#Bioinformatics Deep learning in bioinformatics, Wikipedia]</ref><br />
<br />
Полный список возможных применений глубокого обучения<ref>[https://en.wikipedia.org/wiki/Deep_learning#Applications Applications of deep learning, Wikipedia]</ref>.<br />
<br />
== Sigmoid function ==<br />
У ступенчатых функций есть определенное количество ограничений, связанных с ее линейностью. Если функция активации является линейной, то независимо от количества складываемых скрытых слоев в нейронной сети, конечный результат по-прежнему будет являеться линейной комбинацией исходных входных данных. Эта линейность означает, что она не может реально охватить сложность нелинейных задач, таких как оператор XOR или различные паттерны, разделенные кривыми или кругами. Другой проблемой является то, что перцептрон с ступенчатой функцией не очень «стабилен», то есть может перейти из состояния 0 в 1 и из 0 в 1 при небольших изменениях в любом из весов входного слоя. <br />
<br />
Для того, чтобы избежать данных проблем, в нейронных сетях используется sigmoid функция в качестве активационной. <br />
<br />
[[Файл:sigmoid_function.png|border|500px|thumb|center|Рис 1. Sigmoid Function]]<br />
<br />
Функция sigmoid, в отличие от ступенчатой функции, вводит нелинейность в выбранную модель нейронной сети. Нелинейность означает, что выход, получаемых из нейрона, который является произведением некоторых входов <math>x (x_1, x_2, ..., x_m)</math> и весов <math>w (w_1, w_2, ..., w_m)</math> плюс смещение, а затем помещаемый в sigmoid функцию, не может быть представлен линейной комбинацией входов <math>x (x_1, x_2, ..., x_m)</math>.<br />
<br />
== Rectified Linear Units (ReLU) ==<br />
Несмотря на множество сильных сторон sigmoid функции, у нее есть значительные недостатки. Производная такой функции крайне мала во всех точках, кроме сравнительно небольшого промежутка. Это сильно усложняет процесс улучшения весов с помощью градиентного спуска. Эта проблема усугубляется в случае, если модель содержит больше слоев. Данная проблема называется проблемой исчезающего градиента.<ref>[https://en.wikipedia.org/wiki/Vanishing_gradient_problem Vanishing gradient problem, Wikipedia]</ref><br />
<br />
Функция ReLU имеет производную равную 0 для всех отрицательных значениях и 1 для положительных. Таким образом, когда обучение происходит на датасетах разумного размера, обычно находятся точки данных, дающие положительные значения для любого выбранного узла. Таким образом, средняя производная редко бывает близка к 0, что позволяет продолжать градиентный спуск.<br />
<br />
'''Rectified Linear Unit''' {{---}} это наиболее часто используемая активационная функция при глубоком обучении. Данная функция возвращает 0, если принимает отрицательный вход, в случае же положительного входа, функция возвращает само число. Таким образом функция может быть записана как <math>f(x)=max(0,x)</math>.<br />
<br />
[[Файл:Relu.png|500px|thumb|center|Рис 2. Rectified Linear Units]]<br />
<br />
Функция ReLU отлично работает в большинстве приложений, в результате чего она получила широкое распространение. Данная функция позволяет правильно учитывать нелинейности и взаимодействия.<br />
<br />
== Фреймворки для глубокого обучения ==<br />
* TensorFlow<ref>[https://en.wikipedia.org/wiki/TensorFlow TensorFlow, Wikipedia]</ref><br />
* Microsoft Cognitive Toolkit<ref>[https://en.wikipedia.org/wiki/Microsoft_Cognitive_Toolkit Microsoft Cognitive Toolkit, Wikipedia]</ref><br />
* Wolfram Mathematica<ref>[https://en.wikipedia.org/wiki/Wolfram_Mathematica Wolfram Mathematica, Wikipedia]</ref><br />
* Keras<ref>[https://en.wikipedia.org/wiki/Keras Keras, Wikipedia]</ref><br />
* Deeplearning4j<ref>[https://en.wikipedia.org/wiki/Deeplearning4j Deeplearning4j, Wikipedia]</ref><br />
* Caffe<ref>[https://en.wikipedia.org/wiki/Caffe_(software) Caffe, Wikipedia]</ref><br />
* Torch/PyTorch<ref>[https://habr.com/post/334380 PyTorch — ваш новый фреймворк глубокого обучения, habr]</ref><br />
* MXNet<ref>[https://mxnet.apache.org MXNet, official site]</ref><br />
* Chainer<ref>[https://chainer.org Chainer, official site]</ref><br />
Сопоставление фреймворков, библиотек и отдельных программ для глубокого обучения<ref>[https://en.wikipedia.org/wiki/Comparison_of_deep_learning_software Comparison of deep learning software, Wikipedia]</ref>.<br />
<br />
== См. также ==<br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Нейронные_сети,_перцептрон Нейронные сети, перцептрон]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Сверточные_нейронные_сети Сверточные нейронные сети]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Рекуррентные_нейронные_сети Рекуррентные нейронные сети ]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Обучение_с_подкреплением Обучение с подкреплением ]<sup>[на 06.12.18 не создан]</sup><br />
<br />
== Примечания ==<br />
<references/><br />
<br />
== Источники информации ==<br />
* [https://en.wikipedia.org/wiki/Deep_learning Deep learning, Wikipedia]<br />
* [https://ru.wikipedia.org/wiki/Глубокое_обучение Глубокое обучение, Wikipedia]<br />
* [http://www.deeplearningbook.org/ Deep Learning Book, MIT]<br />
* [https://towardsdatascience.com/multi-layer-neural-networks-with-sigmoid-function-deep-learning-for-rookies-2-bf464f09eb7f Multi-Layer Neural Networks with Sigmoid Function, Towards Data Science]<br />
* [https://www.kaggle.com/dansbecker/rectified-linear-units-relu-in-deep-learning Rectified Linear Units (ReLU) in Deep Learning, Kaggle]</div>80.76.244.114http://neerc.ifmo.ru/wiki/index.php?title=%D0%93%D0%BB%D1%83%D0%B1%D0%BE%D0%BA%D0%BE%D0%B5_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5&diff=67626Глубокое обучение2018-12-07T15:49:41Z<p>80.76.244.114: /* Применения */</p>
<hr />
<div>'''Глубокое обучение''' (англ. deep learning) {{---}} совокупность широкого семейства методов машинного обучения, основанных на обучении представлениям, а не специализированным алгоритмам под конкретные задачи. Глубокое обучение может быть с учителем, с частичным привлечением учителя, без учителя и с подкреплением. Несмотря на то, что данный раздел машинного обучения появился еще в 1980-х, до недавнего времени его применение было сильно ограничено из-за недостака вычислительных мощностей существовавших компьютеров. Ситуация изменилась только в середине 2000-х.<br />
<br />
На создание моделей глубокого обучения оказали влияние некоторые процессы и паттерны, происходящие в биологических нейронных системах. Несмотря на это, данные модели имеют множество различий с биологическим мозгом (и в структуре и в функциях), что делает невозможным использование теорем и доказательств, применяющихся нейробиологии.<br />
<br />
== История ==<br />
Стоит отметить, что первый общий рабочий алгоритм для глубоких многослойных перцептронов прямого распространения был опубликован в книге советских учёных Алексея Григорьевича Ивахненко и Валентина Григорьевича Лапы «Кибернетические предсказывающие устройства». Сам термин «глубокое обучение» появился в научном сообществе машинного обучения в 1986 году в работе израильско-американской ученой Рины Дехтер «Learning While Searching in Constraint-Satisfaction-Problems»<ref>[https://www.researchgate.net/publication/221605378_Learning_While_Searching_in_Constraint-Satisfaction-Problems Learning While Searching in Constraint-Satisfaction-Problems]</ref>. <br />
<br />
Многие архитектуры глубокого обучения берут своё начало с искусственной нейронной сети Neocognitron<ref>[https://en.wikipedia.org/wiki/Neocognitron Neocognitron, Wikipedia]</ref>, представленной в 1980 году Кунихикой Фукусимой. Особенное влияние данная сеть оказала на архитектуры, использующиеся для компьютерного зрения. В 1989 году Яну Лекуну удалось использовать алгоритм обратного распространения ошибки для обучения глубоких нейросетей для решения задачи распознавания рукописных ZIP-кодов<ref>[https://www.ics.uci.edu/~welling/teaching/273ASpring09/lecun-89e.pdf Backpropagation Applied to Handwritten Zip Code Recognition]</ref>. Хотя алгоритм работал, на его обучение потребовалось 3 дня, что существенно ограничевало применимость данного метода. Из-за низкой скорости обучения нейронные сети в 1990-х годах уступили место методу опорных векторов.<br />
<br />
Популярность глубокое обучение приобрело в середине 2000-х годов. Этому способствовали несколько факторов: <br />
* появились более мощные компьютеры, способные обучать большие нейронные сети;<br />
* появились новые датасеты, достаточные по объёму, чтобы обучение больших сетей имело смысл;<br />
* произошли существенные продвижения в теории искусственных нейронных сетей. В появившихся статьях авторы показали, что можно эффективно предобучать многослойную нейронную сеть, если обучать каждый слой отдельно при помощи ограниченной машины Больцмана, а затем дообучать при помощи метода обратного распространения ошибки;<br />
* технология привлекли внимание крупных медиа, {{---}} первым из мировых СМИ об этом написал The New York Times.<br />
<br />
== Определение == <br />
'''Глубокое обучение''' {{---}} это класс алгоритмов машинного обучения, который:<br />
<br />
* использует многослойную систему нелинейных фильтров для извлечения признаков с преобразованиями. Каждый последующий слой получает на входе выходные данные предыдущего слоя. <br />
* может сочетать алгоритмы обучения с учителем (пример {{---}} классификация) и без учителя (пример {{---}} анализ образца).<br />
* формирует в процессе обучения слои выявления признаков на нескольких уровнях представлений, которые соответствуют различным уровням абстракции; при этом признаки организованы иерархически - признаки более высокого уровня являются производными от признаков более низкого уровня.<br />
<br />
== Нейронные сети ==<br />
* Искусственные нейронные сети (англ. artificial neural networks (ANN))<ref>[https://en.wikipedia.org/wiki/Artificial_neural_network Artificial neural network, Wikipedia]</ref><br />
* Глубокие нейронные сети (англ. deep neural network (DNN))<ref>[https://en.wikipedia.org/wiki/Deep_learning#Deep_neural_networks Deep neural networks , Wikipedia]</ref><br />
<br />
== Применения ==<br />
* Распознавание речи<ref>[https://en.wikipedia.org/wiki/Speech_recognition Speech recognition, Wikipedia]</ref><br />
* Компьютерное зрение<ref>[http://neerc.ifmo.ru/wiki/index.php?title=Задача_нахождения_объектов_на_изображении Задача нахождения объектов на изображении]<sup>[на 06.12.18 не создан]</sup></ref><br />
* Обработка визуальных изображений<ref>[https://en.wikipedia.org/wiki/Deep_learning#Visual_art_processing Visual art processing , Wikipedia]</ref><br />
* Обработка естественного языка<ref>[https://en.wikipedia.org/wiki/Natural_language_processing Natural language processing, Wikipedia]</ref><br />
* Обнаружение новых лекарственных препаратов<br />
* Рекомендательные системы<ref>[https://en.wikipedia.org/wiki/Recommender_system Recommender system, Wikipedia]</ref><br />
* Предсказание генномных онтологий в биоинформатике<ref>[https://en.wikipedia.org/wiki/Deep_learning#Bioinformatics Deep learning in bioinformatics, Wikipedia]</ref><br />
<br />
Полный список возможных применений глубокого обучения<ref>[https://en.wikipedia.org/wiki/Deep_learning#Applications Applications of deep learning, Wikipedia]</ref>.<br />
<br />
== Sigmoid function ==<br />
У ступенчатых функций есть определенное количество ограничений, связанных с ее линейностью. Если функция активации является линейной, то независимо от количества складываемых скрытых слоев в нейронной сети, конечный результат по-прежнему будет являеться линейной комбинацией исходных входных данных. Эта линейность означает, что она не может реально охватить сложность нелинейных задач, таких как оператор XOR или различные паттерны, разделенные кривыми или кругами. Другой проблемой является то, что перцептрон с ступенчатой функцией не очень «стабилен», то есть может перейти из состояния 0 в 1 и из 0 в 1 при небольших изменениях в любом из весов входного слоя. <br />
<br />
Для того, чтобы избежать данных проблем, в нейронных сетях используется sigmoid функция в качестве активационной. <br />
<br />
[[Файл:sigmoid_function.png|border|500px|thumb|center|Рис 1. Sigmoid Function]]<br />
<br />
Функция sigmoid, в отличие от ступенчатой функции, вводит нелинейность в выбранную модель нейронной сети. Нелинейность означает, что выход, получаемых из нейрона, который является произведением некоторых входов <math>x (x_1, x_2, ..., x_m)</math> и весов <math>w (w_1, w_2, ..., w_m)</math> плюс смещение, а затем помещаемый в sigmoid функцию, не может быть представлен линейной комбинацией входов <math>x (x_1, x_2, ..., x_m)</math>.<br />
<br />
== Rectified Linear Units (ReLU) ==<br />
Несмотря на множество сильных сторон sigmoid функции, у нее есть значительные недостатки. Производная такой функции крайне мала во всех точках, кроме сравнительно небольшого промежутка. Это сильно усложняет процесс улучшения весов с помощью градиентного спуска. Эта проблема усугубляется в случае, если модель содержит больше слоев. Данная проблема называется проблемой исчезающего градиента.<ref>[https://en.wikipedia.org/wiki/Vanishing_gradient_problem Vanishing gradient problem, Wikipedia]</ref><br />
<br />
Функция ReLU имеет производную равную 0 для всех отрицательных значениях и 1 для положительных. Таким образом, когда обучение происходит на датасетах разумного размера, обычно находятся точки данных, дающие положительные значения для любого выбранного узла. Таким образом, средняя производная редко бывает близка к 0, что позволяет продолжать градиентный спуск.<br />
<br />
'''Rectified Linear Unit''' {{---}} это наиболее часто используемая активационная функция при глубоком обучении. Данная функция возвращает 0, если принимает отрицательный вход, в случае же положительного входа, функция возвращает само число. Таким образом функция может быть записана как <math>f(x)=max(0,x)</math>.<br />
<br />
[[Файл:Relu.png|500px|thumb|center|Рис 2. Rectified Linear Units]]<br />
<br />
Функция ReLU отлично работает в большинстве приложений, в результате чего она получила широкое распространение. Данная функция позволяет правильно учитывать нелинейности и взаимодействия.<br />
<br />
== ПО для глубокого обучения ==<br />
* TensorFlow<ref>[https://en.wikipedia.org/wiki/TensorFlow TensorFlow, Wikipedia]</ref><br />
* Microsoft Cognitive Toolkit<ref>[https://en.wikipedia.org/wiki/Microsoft_Cognitive_Toolkit Microsoft Cognitive Toolkit, Wikipedia]</ref><br />
* Wolfram Mathematica<ref>[https://en.wikipedia.org/wiki/Wolfram_Mathematica Wolfram Mathematica, Wikipedia]</ref><br />
* Keras<ref>[https://en.wikipedia.org/wiki/Keras Keras, Wikipedia]</ref><br />
* Deeplearning4j<ref>[https://en.wikipedia.org/wiki/Deeplearning4j Deeplearning4j, Wikipedia]</ref><br />
* Caffe<ref>[https://en.wikipedia.org/wiki/Caffe_(software) Caffe, Wikipedia]</ref><br />
* PyTorch<ref>[https://habr.com/post/334380 PyTorch — ваш новый фреймворк глубокого обучения, habr]</ref><br />
Сопоставление фреймворков, библиотек и отдельных программ для глубокого обучения<ref>[https://en.wikipedia.org/wiki/Comparison_of_deep_learning_software Comparison of deep learning software, Wikipedia]</ref>.<br />
<br />
== См. также ==<br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Нейронные_сети,_перцептрон Нейронные сети, перцептрон]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Сверточные_нейронные_сети Сверточные нейронные сети]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Рекуррентные_нейронные_сети Рекуррентные нейронные сети ]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Обучение_с_подкреплением Обучение с подкреплением ]<sup>[на 06.12.18 не создан]</sup><br />
<br />
== Примечания ==<br />
<references/><br />
<br />
== Источники информации ==<br />
* [https://en.wikipedia.org/wiki/Deep_learning Deep learning, Wikipedia]<br />
* [https://ru.wikipedia.org/wiki/Глубокое_обучение Глубокое обучение, Wikipedia]<br />
* [http://www.deeplearningbook.org/ Deep Learning Book, MIT]<br />
* [https://towardsdatascience.com/multi-layer-neural-networks-with-sigmoid-function-deep-learning-for-rookies-2-bf464f09eb7f Multi-Layer Neural Networks with Sigmoid Function, Towards Data Science]<br />
* [https://www.kaggle.com/dansbecker/rectified-linear-units-relu-in-deep-learning Rectified Linear Units (ReLU) in Deep Learning, Kaggle]</div>80.76.244.114http://neerc.ifmo.ru/wiki/index.php?title=%D0%93%D0%BB%D1%83%D0%B1%D0%BE%D0%BA%D0%BE%D0%B5_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5&diff=67625Глубокое обучение2018-12-07T15:40:39Z<p>80.76.244.114: /* Программы для глубокого обучения */</p>
<hr />
<div>'''Глубокое обучение''' (англ. deep learning) {{---}} совокупность широкого семейства методов машинного обучения, основанных на обучении представлениям, а не специализированным алгоритмам под конкретные задачи. Глубокое обучение может быть с учителем, с частичным привлечением учителя, без учителя и с подкреплением. Несмотря на то, что данный раздел машинного обучения появился еще в 1980-х, до недавнего времени его применение было сильно ограничено из-за недостака вычислительных мощностей существовавших компьютеров. Ситуация изменилась только в середине 2000-х.<br />
<br />
На создание моделей глубокого обучения оказали влияние некоторые процессы и паттерны, происходящие в биологических нейронных системах. Несмотря на это, данные модели имеют множество различий с биологическим мозгом (и в структуре и в функциях), что делает невозможным использование теорем и доказательств, применяющихся нейробиологии.<br />
<br />
== История ==<br />
Стоит отметить, что первый общий рабочий алгоритм для глубоких многослойных перцептронов прямого распространения был опубликован в книге советских учёных Алексея Григорьевича Ивахненко и Валентина Григорьевича Лапы «Кибернетические предсказывающие устройства». Сам термин «глубокое обучение» появился в научном сообществе машинного обучения в 1986 году в работе израильско-американской ученой Рины Дехтер «Learning While Searching in Constraint-Satisfaction-Problems»<ref>[https://www.researchgate.net/publication/221605378_Learning_While_Searching_in_Constraint-Satisfaction-Problems Learning While Searching in Constraint-Satisfaction-Problems]</ref>. <br />
<br />
Многие архитектуры глубокого обучения берут своё начало с искусственной нейронной сети Neocognitron<ref>[https://en.wikipedia.org/wiki/Neocognitron Neocognitron, Wikipedia]</ref>, представленной в 1980 году Кунихикой Фукусимой. Особенное влияние данная сеть оказала на архитектуры, использующиеся для компьютерного зрения. В 1989 году Яну Лекуну удалось использовать алгоритм обратного распространения ошибки для обучения глубоких нейросетей для решения задачи распознавания рукописных ZIP-кодов<ref>[https://www.ics.uci.edu/~welling/teaching/273ASpring09/lecun-89e.pdf Backpropagation Applied to Handwritten Zip Code Recognition]</ref>. Хотя алгоритм работал, на его обучение потребовалось 3 дня, что существенно ограничевало применимость данного метода. Из-за низкой скорости обучения нейронные сети в 1990-х годах уступили место методу опорных векторов.<br />
<br />
Популярность глубокое обучение приобрело в середине 2000-х годов. Этому способствовали несколько факторов: <br />
* появились более мощные компьютеры, способные обучать большие нейронные сети;<br />
* появились новые датасеты, достаточные по объёму, чтобы обучение больших сетей имело смысл;<br />
* произошли существенные продвижения в теории искусственных нейронных сетей. В появившихся статьях авторы показали, что можно эффективно предобучать многослойную нейронную сеть, если обучать каждый слой отдельно при помощи ограниченной машины Больцмана, а затем дообучать при помощи метода обратного распространения ошибки;<br />
* технология привлекли внимание крупных медиа, {{---}} первым из мировых СМИ об этом написал The New York Times.<br />
<br />
== Определение == <br />
'''Глубокое обучение''' {{---}} это класс алгоритмов машинного обучения, который:<br />
<br />
* использует многослойную систему нелинейных фильтров для извлечения признаков с преобразованиями. Каждый последующий слой получает на входе выходные данные предыдущего слоя. <br />
* может сочетать алгоритмы обучения с учителем (пример {{---}} классификация) и без учителя (пример {{---}} анализ образца).<br />
* формирует в процессе обучения слои выявления признаков на нескольких уровнях представлений, которые соответствуют различным уровням абстракции; при этом признаки организованы иерархически - признаки более высокого уровня являются производными от признаков более низкого уровня.<br />
<br />
== Нейронные сети ==<br />
* Искусственные нейронные сети (англ. artificial neural networks (ANN))<ref>[https://en.wikipedia.org/wiki/Artificial_neural_network Artificial neural network, Wikipedia]</ref><br />
* Глубокие нейронные сети (англ. deep neural network (DNN))<ref>[https://en.wikipedia.org/wiki/Deep_learning#Deep_neural_networks Deep neural networks , Wikipedia]</ref><br />
<br />
== Применения ==<br />
* Распознавание речи<br />
* Компьютерное зрение<ref>[http://neerc.ifmo.ru/wiki/index.php?title=Задача_нахождения_объектов_на_изображении Задача нахождения объектов на изображении]<sup>[на 06.12.18 не создан]</sup></ref><br />
* Обработка визуальных изображений<br />
* Обработка естественного языка<br />
* Обнаружение новых лекарственных препаратов<br />
* Рекомендательные системы<br />
* Предсказание генномных онтологий в биоинформатике<br />
<br />
== Sigmoid function ==<br />
У ступенчатых функций есть определенное количество ограничений, связанных с ее линейностью. Если функция активации является линейной, то независимо от количества складываемых скрытых слоев в нейронной сети, конечный результат по-прежнему будет являеться линейной комбинацией исходных входных данных. Эта линейность означает, что она не может реально охватить сложность нелинейных задач, таких как оператор XOR или различные паттерны, разделенные кривыми или кругами. Другой проблемой является то, что перцептрон с ступенчатой функцией не очень «стабилен», то есть может перейти из состояния 0 в 1 и из 0 в 1 при небольших изменениях в любом из весов входного слоя. <br />
<br />
Для того, чтобы избежать данных проблем, в нейронных сетях используется sigmoid функция в качестве активационной. <br />
<br />
[[Файл:sigmoid_function.png|border|500px|thumb|center|Рис 1. Sigmoid Function]]<br />
<br />
Функция sigmoid, в отличие от ступенчатой функции, вводит нелинейность в выбранную модель нейронной сети. Нелинейность означает, что выход, получаемых из нейрона, который является произведением некоторых входов <math>x (x_1, x_2, ..., x_m)</math> и весов <math>w (w_1, w_2, ..., w_m)</math> плюс смещение, а затем помещаемый в sigmoid функцию, не может быть представлен линейной комбинацией входов <math>x (x_1, x_2, ..., x_m)</math>.<br />
<br />
== Rectified Linear Units (ReLU) ==<br />
Несмотря на множество сильных сторон sigmoid функции, у нее есть значительные недостатки. Производная такой функции крайне мала во всех точках, кроме сравнительно небольшого промежутка. Это сильно усложняет процесс улучшения весов с помощью градиентного спуска. Эта проблема усугубляется в случае, если модель содержит больше слоев. Данная проблема называется проблемой исчезающего градиента.<ref>[https://en.wikipedia.org/wiki/Vanishing_gradient_problem Vanishing gradient problem, Wikipedia]</ref><br />
<br />
Функция ReLU имеет производную равную 0 для всех отрицательных значениях и 1 для положительных. Таким образом, когда обучение происходит на датасетах разумного размера, обычно находятся точки данных, дающие положительные значения для любого выбранного узла. Таким образом, средняя производная редко бывает близка к 0, что позволяет продолжать градиентный спуск.<br />
<br />
'''Rectified Linear Unit''' {{---}} это наиболее часто используемая активационная функция при глубоком обучении. Данная функция возвращает 0, если принимает отрицательный вход, в случае же положительного входа, функция возвращает само число. Таким образом функция может быть записана как <math>f(x)=max(0,x)</math>.<br />
<br />
[[Файл:Relu.png|500px|thumb|center|Рис 2. Rectified Linear Units]]<br />
<br />
Функция ReLU отлично работает в большинстве приложений, в результате чего она получила широкое распространение. Данная функция позволяет правильно учитывать нелинейности и взаимодействия.<br />
<br />
== ПО для глубокого обучения ==<br />
* TensorFlow<ref>[https://en.wikipedia.org/wiki/TensorFlow TensorFlow, Wikipedia]</ref><br />
* Microsoft Cognitive Toolkit<ref>[https://en.wikipedia.org/wiki/Microsoft_Cognitive_Toolkit Microsoft Cognitive Toolkit, Wikipedia]</ref><br />
* Wolfram Mathematica<ref>[https://en.wikipedia.org/wiki/Wolfram_Mathematica Wolfram Mathematica, Wikipedia]</ref><br />
* Keras<ref>[https://en.wikipedia.org/wiki/Keras Keras, Wikipedia]</ref><br />
* Deeplearning4j<ref>[https://en.wikipedia.org/wiki/Deeplearning4j Deeplearning4j, Wikipedia]</ref><br />
* Caffe<ref>[https://en.wikipedia.org/wiki/Caffe_(software) Caffe, Wikipedia]</ref><br />
* PyTorch<ref>[https://habr.com/post/334380 PyTorch — ваш новый фреймворк глубокого обучения, habr]</ref><br />
Сопоставление фреймворков, библиотек и отдельных программ для глубокого обучения<ref>[https://en.wikipedia.org/wiki/Comparison_of_deep_learning_software Comparison of deep learning software, Wikipedia]</ref>.<br />
<br />
== См. также ==<br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Нейронные_сети,_перцептрон Нейронные сети, перцептрон]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Сверточные_нейронные_сети Сверточные нейронные сети]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Рекуррентные_нейронные_сети Рекуррентные нейронные сети ]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Обучение_с_подкреплением Обучение с подкреплением ]<sup>[на 06.12.18 не создан]</sup><br />
<br />
== Примечания ==<br />
<references/><br />
<br />
== Источники информации ==<br />
* [https://en.wikipedia.org/wiki/Deep_learning Deep learning, Wikipedia]<br />
* [https://ru.wikipedia.org/wiki/Глубокое_обучение Глубокое обучение, Wikipedia]<br />
* [http://www.deeplearningbook.org/ Deep Learning Book, MIT]<br />
* [https://towardsdatascience.com/multi-layer-neural-networks-with-sigmoid-function-deep-learning-for-rookies-2-bf464f09eb7f Multi-Layer Neural Networks with Sigmoid Function, Towards Data Science]<br />
* [https://www.kaggle.com/dansbecker/rectified-linear-units-relu-in-deep-learning Rectified Linear Units (ReLU) in Deep Learning, Kaggle]</div>80.76.244.114http://neerc.ifmo.ru/wiki/index.php?title=%D0%93%D0%BB%D1%83%D0%B1%D0%BE%D0%BA%D0%BE%D0%B5_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5&diff=67624Глубокое обучение2018-12-07T15:33:59Z<p>80.76.244.114: </p>
<hr />
<div>'''Глубокое обучение''' (англ. deep learning) {{---}} совокупность широкого семейства методов машинного обучения, основанных на обучении представлениям, а не специализированным алгоритмам под конкретные задачи. Глубокое обучение может быть с учителем, с частичным привлечением учителя, без учителя и с подкреплением. Несмотря на то, что данный раздел машинного обучения появился еще в 1980-х, до недавнего времени его применение было сильно ограничено из-за недостака вычислительных мощностей существовавших компьютеров. Ситуация изменилась только в середине 2000-х.<br />
<br />
На создание моделей глубокого обучения оказали влияние некоторые процессы и паттерны, происходящие в биологических нейронных системах. Несмотря на это, данные модели имеют множество различий с биологическим мозгом (и в структуре и в функциях), что делает невозможным использование теорем и доказательств, применяющихся нейробиологии.<br />
<br />
== История ==<br />
Стоит отметить, что первый общий рабочий алгоритм для глубоких многослойных перцептронов прямого распространения был опубликован в книге советских учёных Алексея Григорьевича Ивахненко и Валентина Григорьевича Лапы «Кибернетические предсказывающие устройства». Сам термин «глубокое обучение» появился в научном сообществе машинного обучения в 1986 году в работе израильско-американской ученой Рины Дехтер «Learning While Searching in Constraint-Satisfaction-Problems»<ref>[https://www.researchgate.net/publication/221605378_Learning_While_Searching_in_Constraint-Satisfaction-Problems Learning While Searching in Constraint-Satisfaction-Problems]</ref>. <br />
<br />
Многие архитектуры глубокого обучения берут своё начало с искусственной нейронной сети Neocognitron<ref>[https://en.wikipedia.org/wiki/Neocognitron Neocognitron, Wikipedia]</ref>, представленной в 1980 году Кунихикой Фукусимой. Особенное влияние данная сеть оказала на архитектуры, использующиеся для компьютерного зрения. В 1989 году Яну Лекуну удалось использовать алгоритм обратного распространения ошибки для обучения глубоких нейросетей для решения задачи распознавания рукописных ZIP-кодов<ref>[https://www.ics.uci.edu/~welling/teaching/273ASpring09/lecun-89e.pdf Backpropagation Applied to Handwritten Zip Code Recognition]</ref>. Хотя алгоритм работал, на его обучение потребовалось 3 дня, что существенно ограничевало применимость данного метода. Из-за низкой скорости обучения нейронные сети в 1990-х годах уступили место методу опорных векторов.<br />
<br />
Популярность глубокое обучение приобрело в середине 2000-х годов. Этому способствовали несколько факторов: <br />
* появились более мощные компьютеры, способные обучать большие нейронные сети;<br />
* появились новые датасеты, достаточные по объёму, чтобы обучение больших сетей имело смысл;<br />
* произошли существенные продвижения в теории искусственных нейронных сетей. В появившихся статьях авторы показали, что можно эффективно предобучать многослойную нейронную сеть, если обучать каждый слой отдельно при помощи ограниченной машины Больцмана, а затем дообучать при помощи метода обратного распространения ошибки;<br />
* технология привлекли внимание крупных медиа, {{---}} первым из мировых СМИ об этом написал The New York Times.<br />
<br />
== Определение == <br />
'''Глубокое обучение''' {{---}} это класс алгоритмов машинного обучения, который:<br />
<br />
* использует многослойную систему нелинейных фильтров для извлечения признаков с преобразованиями. Каждый последующий слой получает на входе выходные данные предыдущего слоя. <br />
* может сочетать алгоритмы обучения с учителем (пример {{---}} классификация) и без учителя (пример {{---}} анализ образца).<br />
* формирует в процессе обучения слои выявления признаков на нескольких уровнях представлений, которые соответствуют различным уровням абстракции; при этом признаки организованы иерархически - признаки более высокого уровня являются производными от признаков более низкого уровня.<br />
<br />
== Нейронные сети ==<br />
* Искусственные нейронные сети (англ. artificial neural networks (ANN))<ref>[https://en.wikipedia.org/wiki/Artificial_neural_network Artificial neural network, Wikipedia]</ref><br />
* Глубокие нейронные сети (англ. deep neural network (DNN))<ref>[https://en.wikipedia.org/wiki/Deep_learning#Deep_neural_networks Deep neural networks , Wikipedia]</ref><br />
<br />
== Применения ==<br />
* Распознавание речи<br />
* Компьютерное зрение<ref>[http://neerc.ifmo.ru/wiki/index.php?title=Задача_нахождения_объектов_на_изображении Задача нахождения объектов на изображении]<sup>[на 06.12.18 не создан]</sup></ref><br />
* Обработка визуальных изображений<br />
* Обработка естественного языка<br />
* Обнаружение новых лекарственных препаратов<br />
* Рекомендательные системы<br />
* Предсказание генномных онтологий в биоинформатике<br />
<br />
== Sigmoid function ==<br />
У ступенчатых функций есть определенное количество ограничений, связанных с ее линейностью. Если функция активации является линейной, то независимо от количества складываемых скрытых слоев в нейронной сети, конечный результат по-прежнему будет являеться линейной комбинацией исходных входных данных. Эта линейность означает, что она не может реально охватить сложность нелинейных задач, таких как оператор XOR или различные паттерны, разделенные кривыми или кругами. Другой проблемой является то, что перцептрон с ступенчатой функцией не очень «стабилен», то есть может перейти из состояния 0 в 1 и из 0 в 1 при небольших изменениях в любом из весов входного слоя. <br />
<br />
Для того, чтобы избежать данных проблем, в нейронных сетях используется sigmoid функция в качестве активационной. <br />
<br />
[[Файл:sigmoid_function.png|border|500px|thumb|center|Рис 1. Sigmoid Function]]<br />
<br />
Функция sigmoid, в отличие от ступенчатой функции, вводит нелинейность в выбранную модель нейронной сети. Нелинейность означает, что выход, получаемых из нейрона, который является произведением некоторых входов <math>x (x_1, x_2, ..., x_m)</math> и весов <math>w (w_1, w_2, ..., w_m)</math> плюс смещение, а затем помещаемый в sigmoid функцию, не может быть представлен линейной комбинацией входов <math>x (x_1, x_2, ..., x_m)</math>.<br />
<br />
== Rectified Linear Units (ReLU) ==<br />
Несмотря на множество сильных сторон sigmoid функции, у нее есть значительные недостатки. Производная такой функции крайне мала во всех точках, кроме сравнительно небольшого промежутка. Это сильно усложняет процесс улучшения весов с помощью градиентного спуска. Эта проблема усугубляется в случае, если модель содержит больше слоев. Данная проблема называется проблемой исчезающего градиента.<ref>[https://en.wikipedia.org/wiki/Vanishing_gradient_problem Vanishing gradient problem, Wikipedia]</ref><br />
<br />
Функция ReLU имеет производную равную 0 для всех отрицательных значениях и 1 для положительных. Таким образом, когда обучение происходит на датасетах разумного размера, обычно находятся точки данных, дающие положительные значения для любого выбранного узла. Таким образом, средняя производная редко бывает близка к 0, что позволяет продолжать градиентный спуск.<br />
<br />
'''Rectified Linear Unit''' {{---}} это наиболее часто используемая активационная функция при глубоком обучении. Данная функция возвращает 0, если принимает отрицательный вход, в случае же положительного входа, функция возвращает само число. Таким образом функция может быть записана как <math>f(x)=max(0,x)</math>.<br />
<br />
[[Файл:Relu.png|500px|thumb|center|Рис 2. Rectified Linear Units]]<br />
<br />
Функция ReLU отлично работает в большинстве приложений, в результате чего она получила широкое распространение. Данная функция позволяет правильно учитывать нелинейности и взаимодействия.<br />
<br />
== Программы для глубокого обучения ==<br />
* TensorFlow<ref>[https://en.wikipedia.org/wiki/TensorFlow TensorFlow, Wikipedia]</ref><br />
* Microsoft Cognitive Toolkit<ref>[https://en.wikipedia.org/wiki/Microsoft_Cognitive_Toolkit Microsoft Cognitive Toolkit, Wikipedia]</ref><br />
* Wolfram Mathematica<ref>[https://en.wikipedia.org/wiki/Wolfram_Mathematica Wolfram Mathematica, Wikipedia]</ref><br />
* Keras<ref>[https://en.wikipedia.org/wiki/Keras Keras, Wikipedia]</ref><br />
* Deeplearning4j<ref>[https://en.wikipedia.org/wiki/Deeplearning4j Deeplearning4j, Wikipedia]</ref><br />
* Caffe<ref>[https://en.wikipedia.org/wiki/Caffe_(software) Caffe, Wikipedia]</ref><br />
<br />
Сопоставление фреймворков, библиотек и отдельных программ для глубокого обучения<ref>[https://en.wikipedia.org/wiki/Comparison_of_deep_learning_software Comparison of deep learning software, Wikipedia]</ref>.<br />
== См. также ==<br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Нейронные_сети,_перцептрон Нейронные сети, перцептрон]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Сверточные_нейронные_сети Сверточные нейронные сети]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Рекуррентные_нейронные_сети Рекуррентные нейронные сети ]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Обучение_с_подкреплением Обучение с подкреплением ]<sup>[на 06.12.18 не создан]</sup><br />
<br />
== Примечания ==<br />
<references/><br />
<br />
== Источники информации ==<br />
* [https://en.wikipedia.org/wiki/Deep_learning Deep learning, Wikipedia]<br />
* [https://ru.wikipedia.org/wiki/Глубокое_обучение Глубокое обучение, Wikipedia]<br />
* [http://www.deeplearningbook.org/ Deep Learning Book, MIT]<br />
* [https://towardsdatascience.com/multi-layer-neural-networks-with-sigmoid-function-deep-learning-for-rookies-2-bf464f09eb7f Multi-Layer Neural Networks with Sigmoid Function, Towards Data Science]<br />
* [https://www.kaggle.com/dansbecker/rectified-linear-units-relu-in-deep-learning Rectified Linear Units (ReLU) in Deep Learning, Kaggle]</div>80.76.244.114http://neerc.ifmo.ru/wiki/index.php?title=%D0%93%D0%BB%D1%83%D0%B1%D0%BE%D0%BA%D0%BE%D0%B5_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5&diff=67524Глубокое обучение2018-12-04T19:39:12Z<p>80.76.244.114: /* Rectified Linear Units (ReLU) */</p>
<hr />
<div>'''Глубокое обучение''' (англ. deep learning) {{---}} совокупность широкого семейства методов машинного обучения, основанных на обучении представлениям, а не специализированным алгоритмам под конкретные задачи. Глубокое обучение может быть с учителем, с частичным привлечением учителя, без учителя и с подкреплением. Несмотря на то, что данный раздел машинного обучения появился еще в 1980х, до недавнего времени его применение было сильно ограничено из-за недостака вычислительных мощностей существовавших компьютеров. Ситуация изменилась только в середине 2000х.<br />
<br />
На создание моделей глубокого обучения оказали влияние некоторые процессы и паттерны, происходящие в биологических нейронных системах. Несмотря на это, данные модели имеют множество различий от биологического мозга (и в структуре и в функциях), что делает невозможным использование теорем и доказательств, применяющихся нейробиологии.<br />
<br />
== История ==<br />
Стоит отметить, что первый общий рабочий алгоритм для глубоких многослойных перцептронов прямого распространения был опубликован в книге советских учёных Алексея Григорьевича Ивахненко и Валентина Григорьевича Лапы «Кибернетические предсказывающие устройства». Сам термин «глубокое обучение» появился в научном сообществе машинного обучения в 1986 году в работе израильско-американской ученой Рины Дехтер «Learning While Searching in Constraint-Satisfaction-Problems»<ref>[https://www.researchgate.net/publication/221605378_Learning_While_Searching_in_Constraint-Satisfaction-Problems Learning While Searching in Constraint-Satisfaction-Problems]</ref>. <br />
<br />
Многие архитектуры глубокого обучения берут своё начало с искусственной нейронной сети Neocognitron<ref>[https://en.wikipedia.org/wiki/Neocognitron Neocognitron, Wikipedia]</ref>, представленной в 1980 году Кунихикой Фукусимой. Особенное влияние данная сеть оказала на архитектуры, использующиеся для компьютерного зрения. В 1989 году Яну Лекуну удалось использовать алгоритм обратного распространения ошибки для обучения глубоких нейросетей для решения задачи распознавания рукописных ZIP-кодов<ref>[https://www.ics.uci.edu/~welling/teaching/273ASpring09/lecun-89e.pdf Backpropagation Applied to Handwritten Zip Code Recognition]</ref>. Хотя алгоритм работал, на его обучение потребовалось 3 дня, что существенно ограничевало применимость данного метода. Из-за низкой скоростя обучения нейронные сети в 1990-х годах уступили место методу опорных векторов.<br />
<br />
Популярность глубокое обучение приобрело в середине 2000-х годов. Этому способстовали несколько факторов: <br />
* появились более мощные компьютеры, способные обучать большие нейронные сети;<br />
* появились новые датасеты, достаточные по объёму, чтобы обучение больших сетей имело смысл;<br />
* произошли существенные продвижения в теории искусственных нейронных сетей. В появихшихся статьях авторы показали, что можно эффективно предобучать многослойную нейронную сеть, если обучать каждый слой отдельно при помощи ограниченной машины Больцмана, а затем дообучать при помощи метода обратного распространения ошибки;<br />
* технология привлекли внимание крупных медиа, — первым из мировых СМИ об этом написал The New York Times.<br />
<br />
== Определение == <br />
'''Глубокое обучение''' {{---}} это класс алгоритмов машинного обучения, который:<br />
<br />
* использует многослойную систему нелинейных фильтров для извлечения признаков с преобразованиями. Каждый последующий слой получает на входе выходные данные предыдущего слоя. <br />
* может сочетать алгоритмы обучения с учителем (пример {{---}} классификация) и без учителя (пример {{---}} анализ образца).<br />
* формирует в процессе обучения слои выявления признаков на нескольких уровнях представлений, которые соответствуют различным уровням абстракции; при этом признаки организованы иерархически - признаки более высокого уровня являются производными от признаков более низкого уровня.<br />
<br />
== Нейронные сети ==<br />
* Искусственные нейронные сети (англ. artificial neural networks (ANN))<ref>[https://en.wikipedia.org/wiki/Artificial_neural_network Artificial neural network, Wikipedia]</ref><br />
* Глубокие нейронные сети (англ. deep neural network (DNN))<ref>[https://en.wikipedia.org/wiki/Deep_learning#Deep_neural_networks Deep neural networks , Wikipedia]</ref><br />
<br />
== Применения ==<br />
* Распознавание речи<br />
* Компьютерное зрение<ref>[http://neerc.ifmo.ru/wiki/index.php?title=Задача_нахождения_объектов_на_изображении Задача нахождения объектов на изображении]<sup>[на 06.12.18 не создан]</sup></ref><br />
* Обработка визуальных изображений<br />
* Обработка естественного языка<br />
* Обнаружение новых лекарственных препаратов<br />
* Рекомендательные системы<br />
* Предсказание генномных онтологий в биоинформатике<br />
<br />
== Sigmoid function ==<br />
У ступенчатых функций есть определенное количество ограничений, связанных с ее линейностью. Если функция активации является линейной, то независимо от количества складываемых скрытых слоев в нейронной сети, конечный результат по-прежнему будет являеться линейной комбинацией исходных входных данных. Эта линейность означает, что она не может реально охватить сложность нелинейных задач, таких как оператор XOR или различные паттерны, разделенные кривыми или кругами. Другой проблемой является то, что перцептрон с ступенчатой функцией не очень «стабилен», то есть может перейти из состояния 0 в 1 и из 0 в 1 при небольших изменениях в любом из весов входного слоя. <br />
<br />
Для того, чтобы избежать данных проблем, в нейронных сетях используется sigmoid функция в качестве активационной. <br />
<br />
[[Файл:sigmoid_function.png|border|500px|thumb|center|Рис 1. Sigmoid Function]]<br />
<br />
Функция sigmoid, в отличие от ступенчатой функции, вводит нелинейность в выбранную модель нейронной сети. Нелинейность означает, что выход, получаемых из нейрона, который является произведением некоторых входов <math>x (x_1, x_2, ..., x_m)</math> и весов <math>w (w_1, w_2, ..., w_m)</math> плюс смещение, а затем помещаемый в sigmoid функцию, не может быть представлен линейной комбинацией входов <math>x (x_1, x_2, ..., x_m)</math>.<br />
<br />
== Rectified Linear Units (ReLU) ==<br />
Несмотря на множество сильных сторон sigmoid функции, у нее есть значительные недостатки. Производная такой функции крайне мала во всех точках, кроме сравнительно небольшого промежутка. Это сильно усложняет процесс улучшения весов с помощью градиентного спуска. Эта проблема усугубляется в случае, если модель содержит больше слоев. Данная проблема называется проблемой исчезающего градиента.<ref>[https://en.wikipedia.org/wiki/Vanishing_gradient_problem Vanishing gradient problem, Wikipedia]</ref><br />
<br />
Функция ReLU имеет производную равную 0 для всех отрицательных значениях и 1 для положительных. Таким образом, когда обучение происходит на датасетах разумного размера, обычно находятся точки данных, дающие положительные значения для любого выбранного узла. Таким образом, средняя производная редко бывает близка к 0, что позволяет продолжать градиентный спуск.<br />
<br />
'''Rectified Linear Unit''' {{---}} это наиболее часто используемая активационная функция при глубоком обучении. Данная функция возвращает 0, если принимает отрицательный вход, в случае же положительного входа, функция возвращает само число. Таким образом функция может быть записана как <math>f(x)=max(0,x)</math>.<br />
<br />
[[Файл:Relu.png|500px|thumb|center|Рис 2. Rectified Linear Units]]<br />
<br />
Функция ReLU отлично работает в большинстве приложений, в результате чего она получила широкое распространение. Данная функция позволяет правильно учитывать нелинейности и взаимодействия.<br />
<br />
== Программы для глубокого обучения ==<br />
* TensorFlow<ref>[https://en.wikipedia.org/wiki/TensorFlow TensorFlow, Wikipedia]</ref><br />
* Microsoft Cognitive Toolkit<ref>[https://en.wikipedia.org/wiki/Microsoft_Cognitive_Toolkit Microsoft Cognitive Toolkit, Wikipedia]</ref><br />
* Wolfram Mathematica<ref>[https://en.wikipedia.org/wiki/Wolfram_Mathematica Wolfram Mathematica, Wikipedia]</ref><br />
* Keras<ref>[https://en.wikipedia.org/wiki/Keras Keras, Wikipedia]</ref><br />
* Deeplearning4j<ref>[https://en.wikipedia.org/wiki/Deeplearning4j Deeplearning4j, Wikipedia]</ref><br />
* Caffe<ref>[https://en.wikipedia.org/wiki/Caffe_(software) Caffe, Wikipedia]</ref><br />
<br />
Сопоставление фреймворков, библиотек и отдельных программ для глубокого обучения<ref>[https://en.wikipedia.org/wiki/Comparison_of_deep_learning_software Comparison of deep learning software, Wikipedia]</ref>.<br />
== См. также ==<br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Нейронные_сети,_перцептрон Нейронные сети, перцептрон]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Сверточные_нейронные_сети Сверточные нейронные сети]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Рекуррентные_нейронные_сети Рекуррентные нейронные сети ]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Обучение_с_подкреплением Обучение с подкреплением ]<sup>[на 06.12.18 не создан]</sup><br />
<br />
== Примечания ==<br />
<references/><br />
<br />
== Источники информации ==<br />
* [https://en.wikipedia.org/wiki/Deep_learning Deep learning, Wikipedia]<br />
* [https://ru.wikipedia.org/wiki/Глубокое_обучение Глубокое обучение, Wikipedia]<br />
* [http://www.deeplearningbook.org/ Deep Learning Book, MIT]<br />
* [https://towardsdatascience.com/multi-layer-neural-networks-with-sigmoid-function-deep-learning-for-rookies-2-bf464f09eb7f Multi-Layer Neural Networks with Sigmoid Function, Towards Data Science]<br />
* [https://www.kaggle.com/dansbecker/rectified-linear-units-relu-in-deep-learning Rectified Linear Units (ReLU) in Deep Learning, Kaggle]</div>80.76.244.114http://neerc.ifmo.ru/wiki/index.php?title=%D0%93%D0%BB%D1%83%D0%B1%D0%BE%D0%BA%D0%BE%D0%B5_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5&diff=67523Глубокое обучение2018-12-04T19:38:20Z<p>80.76.244.114: /* См. также */</p>
<hr />
<div>'''Глубокое обучение''' (англ. deep learning) {{---}} совокупность широкого семейства методов машинного обучения, основанных на обучении представлениям, а не специализированным алгоритмам под конкретные задачи. Глубокое обучение может быть с учителем, с частичным привлечением учителя, без учителя и с подкреплением. Несмотря на то, что данный раздел машинного обучения появился еще в 1980х, до недавнего времени его применение было сильно ограничено из-за недостака вычислительных мощностей существовавших компьютеров. Ситуация изменилась только в середине 2000х.<br />
<br />
На создание моделей глубокого обучения оказали влияние некоторые процессы и паттерны, происходящие в биологических нейронных системах. Несмотря на это, данные модели имеют множество различий от биологического мозга (и в структуре и в функциях), что делает невозможным использование теорем и доказательств, применяющихся нейробиологии.<br />
<br />
== История ==<br />
Стоит отметить, что первый общий рабочий алгоритм для глубоких многослойных перцептронов прямого распространения был опубликован в книге советских учёных Алексея Григорьевича Ивахненко и Валентина Григорьевича Лапы «Кибернетические предсказывающие устройства». Сам термин «глубокое обучение» появился в научном сообществе машинного обучения в 1986 году в работе израильско-американской ученой Рины Дехтер «Learning While Searching in Constraint-Satisfaction-Problems»<ref>[https://www.researchgate.net/publication/221605378_Learning_While_Searching_in_Constraint-Satisfaction-Problems Learning While Searching in Constraint-Satisfaction-Problems]</ref>. <br />
<br />
Многие архитектуры глубокого обучения берут своё начало с искусственной нейронной сети Neocognitron<ref>[https://en.wikipedia.org/wiki/Neocognitron Neocognitron, Wikipedia]</ref>, представленной в 1980 году Кунихикой Фукусимой. Особенное влияние данная сеть оказала на архитектуры, использующиеся для компьютерного зрения. В 1989 году Яну Лекуну удалось использовать алгоритм обратного распространения ошибки для обучения глубоких нейросетей для решения задачи распознавания рукописных ZIP-кодов<ref>[https://www.ics.uci.edu/~welling/teaching/273ASpring09/lecun-89e.pdf Backpropagation Applied to Handwritten Zip Code Recognition]</ref>. Хотя алгоритм работал, на его обучение потребовалось 3 дня, что существенно ограничевало применимость данного метода. Из-за низкой скоростя обучения нейронные сети в 1990-х годах уступили место методу опорных векторов.<br />
<br />
Популярность глубокое обучение приобрело в середине 2000-х годов. Этому способстовали несколько факторов: <br />
* появились более мощные компьютеры, способные обучать большие нейронные сети;<br />
* появились новые датасеты, достаточные по объёму, чтобы обучение больших сетей имело смысл;<br />
* произошли существенные продвижения в теории искусственных нейронных сетей. В появихшихся статьях авторы показали, что можно эффективно предобучать многослойную нейронную сеть, если обучать каждый слой отдельно при помощи ограниченной машины Больцмана, а затем дообучать при помощи метода обратного распространения ошибки;<br />
* технология привлекли внимание крупных медиа, — первым из мировых СМИ об этом написал The New York Times.<br />
<br />
== Определение == <br />
'''Глубокое обучение''' {{---}} это класс алгоритмов машинного обучения, который:<br />
<br />
* использует многослойную систему нелинейных фильтров для извлечения признаков с преобразованиями. Каждый последующий слой получает на входе выходные данные предыдущего слоя. <br />
* может сочетать алгоритмы обучения с учителем (пример {{---}} классификация) и без учителя (пример {{---}} анализ образца).<br />
* формирует в процессе обучения слои выявления признаков на нескольких уровнях представлений, которые соответствуют различным уровням абстракции; при этом признаки организованы иерархически - признаки более высокого уровня являются производными от признаков более низкого уровня.<br />
<br />
== Нейронные сети ==<br />
* Искусственные нейронные сети (англ. artificial neural networks (ANN))<ref>[https://en.wikipedia.org/wiki/Artificial_neural_network Artificial neural network, Wikipedia]</ref><br />
* Глубокие нейронные сети (англ. deep neural network (DNN))<ref>[https://en.wikipedia.org/wiki/Deep_learning#Deep_neural_networks Deep neural networks , Wikipedia]</ref><br />
<br />
== Применения ==<br />
* Распознавание речи<br />
* Компьютерное зрение<ref>[http://neerc.ifmo.ru/wiki/index.php?title=Задача_нахождения_объектов_на_изображении Задача нахождения объектов на изображении]<sup>[на 06.12.18 не создан]</sup></ref><br />
* Обработка визуальных изображений<br />
* Обработка естественного языка<br />
* Обнаружение новых лекарственных препаратов<br />
* Рекомендательные системы<br />
* Предсказание генномных онтологий в биоинформатике<br />
<br />
== Sigmoid function ==<br />
У ступенчатых функций есть определенное количество ограничений, связанных с ее линейностью. Если функция активации является линейной, то независимо от количества складываемых скрытых слоев в нейронной сети, конечный результат по-прежнему будет являеться линейной комбинацией исходных входных данных. Эта линейность означает, что она не может реально охватить сложность нелинейных задач, таких как оператор XOR или различные паттерны, разделенные кривыми или кругами. Другой проблемой является то, что перцептрон с ступенчатой функцией не очень «стабилен», то есть может перейти из состояния 0 в 1 и из 0 в 1 при небольших изменениях в любом из весов входного слоя. <br />
<br />
Для того, чтобы избежать данных проблем, в нейронных сетях используется sigmoid функция в качестве активационной. <br />
<br />
[[Файл:sigmoid_function.png|border|500px|thumb|center|Рис 1. Sigmoid Function]]<br />
<br />
Функция sigmoid, в отличие от ступенчатой функции, вводит нелинейность в выбранную модель нейронной сети. Нелинейность означает, что выход, получаемых из нейрона, который является произведением некоторых входов <math>x (x_1, x_2, ..., x_m)</math> и весов <math>w (w_1, w_2, ..., w_m)</math> плюс смещение, а затем помещаемый в sigmoid функцию, не может быть представлен линейной комбинацией входов <math>x (x_1, x_2, ..., x_m)</math>.<br />
<br />
== Rectified Linear Units (ReLU) ==<br />
Несмотря на множество сильных сторон sigmoid function, у нее есть значительные недостатки. Производная такой функции крайне мала во всех точках, кроме сравнительно небольшого промежутка. Это сильно усложняет процесс улучшения весов с помощью градиентного спуска. Эта проблема усугубляется в случае, если модель содержит больше слоев. Данная проблема называется проблемой исчезающего градиента.<ref>[https://en.wikipedia.org/wiki/Vanishing_gradient_problem Vanishing gradient problem, Wikipedia]</ref><br />
<br />
Функция ReLU имеет производную равную 0 для всех отрицательных значениях и 1 для положительных. Таким образом, когда обучение происходит на датасетах разумного размера, обычно находятся точки данных, дающие положительные значения для любого выбранного узла. Таким образом, средняя производная редко бывает близка к 0, что позволяет продолжать градиентный спуск.<br />
<br />
'''Rectified Linear Unit''' {{---}} это наиболее часто используемая активационная функция при глубоком обучении. Данная функция возвращает 0, если принимает отрицательный вход, в случае же положительного входа, функция возвращает само число. Таким образом функция может быть записана как <math>f(x)=max(0,x)</math>.<br />
<br />
[[Файл:Relu.png|500px|thumb|center|Рис 2. Rectified Linear Units]]<br />
<br />
Функция ReLU отлично работает в большинстве приложений, в результате чего она получила широкое распространение. Данная функция позволяет правильно учитывать нелинейности и взаимодействия.<br />
<br />
== Программы для глубокого обучения ==<br />
* TensorFlow<ref>[https://en.wikipedia.org/wiki/TensorFlow TensorFlow, Wikipedia]</ref><br />
* Microsoft Cognitive Toolkit<ref>[https://en.wikipedia.org/wiki/Microsoft_Cognitive_Toolkit Microsoft Cognitive Toolkit, Wikipedia]</ref><br />
* Wolfram Mathematica<ref>[https://en.wikipedia.org/wiki/Wolfram_Mathematica Wolfram Mathematica, Wikipedia]</ref><br />
* Keras<ref>[https://en.wikipedia.org/wiki/Keras Keras, Wikipedia]</ref><br />
* Deeplearning4j<ref>[https://en.wikipedia.org/wiki/Deeplearning4j Deeplearning4j, Wikipedia]</ref><br />
* Caffe<ref>[https://en.wikipedia.org/wiki/Caffe_(software) Caffe, Wikipedia]</ref><br />
<br />
Сопоставление фреймворков, библиотек и отдельных программ для глубокого обучения<ref>[https://en.wikipedia.org/wiki/Comparison_of_deep_learning_software Comparison of deep learning software, Wikipedia]</ref>.<br />
== См. также ==<br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Нейронные_сети,_перцептрон Нейронные сети, перцептрон]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Сверточные_нейронные_сети Сверточные нейронные сети]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Рекуррентные_нейронные_сети Рекуррентные нейронные сети ]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Обучение_с_подкреплением Обучение с подкреплением ]<sup>[на 06.12.18 не создан]</sup><br />
<br />
== Примечания ==<br />
<references/><br />
<br />
== Источники информации ==<br />
* [https://en.wikipedia.org/wiki/Deep_learning Deep learning, Wikipedia]<br />
* [https://ru.wikipedia.org/wiki/Глубокое_обучение Глубокое обучение, Wikipedia]<br />
* [http://www.deeplearningbook.org/ Deep Learning Book, MIT]<br />
* [https://towardsdatascience.com/multi-layer-neural-networks-with-sigmoid-function-deep-learning-for-rookies-2-bf464f09eb7f Multi-Layer Neural Networks with Sigmoid Function, Towards Data Science]<br />
* [https://www.kaggle.com/dansbecker/rectified-linear-units-relu-in-deep-learning Rectified Linear Units (ReLU) in Deep Learning, Kaggle]</div>80.76.244.114http://neerc.ifmo.ru/wiki/index.php?title=%D0%93%D0%BB%D1%83%D0%B1%D0%BE%D0%BA%D0%BE%D0%B5_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5&diff=67522Глубокое обучение2018-12-04T19:38:09Z<p>80.76.244.114: /* Применения */</p>
<hr />
<div>'''Глубокое обучение''' (англ. deep learning) {{---}} совокупность широкого семейства методов машинного обучения, основанных на обучении представлениям, а не специализированным алгоритмам под конкретные задачи. Глубокое обучение может быть с учителем, с частичным привлечением учителя, без учителя и с подкреплением. Несмотря на то, что данный раздел машинного обучения появился еще в 1980х, до недавнего времени его применение было сильно ограничено из-за недостака вычислительных мощностей существовавших компьютеров. Ситуация изменилась только в середине 2000х.<br />
<br />
На создание моделей глубокого обучения оказали влияние некоторые процессы и паттерны, происходящие в биологических нейронных системах. Несмотря на это, данные модели имеют множество различий от биологического мозга (и в структуре и в функциях), что делает невозможным использование теорем и доказательств, применяющихся нейробиологии.<br />
<br />
== История ==<br />
Стоит отметить, что первый общий рабочий алгоритм для глубоких многослойных перцептронов прямого распространения был опубликован в книге советских учёных Алексея Григорьевича Ивахненко и Валентина Григорьевича Лапы «Кибернетические предсказывающие устройства». Сам термин «глубокое обучение» появился в научном сообществе машинного обучения в 1986 году в работе израильско-американской ученой Рины Дехтер «Learning While Searching in Constraint-Satisfaction-Problems»<ref>[https://www.researchgate.net/publication/221605378_Learning_While_Searching_in_Constraint-Satisfaction-Problems Learning While Searching in Constraint-Satisfaction-Problems]</ref>. <br />
<br />
Многие архитектуры глубокого обучения берут своё начало с искусственной нейронной сети Neocognitron<ref>[https://en.wikipedia.org/wiki/Neocognitron Neocognitron, Wikipedia]</ref>, представленной в 1980 году Кунихикой Фукусимой. Особенное влияние данная сеть оказала на архитектуры, использующиеся для компьютерного зрения. В 1989 году Яну Лекуну удалось использовать алгоритм обратного распространения ошибки для обучения глубоких нейросетей для решения задачи распознавания рукописных ZIP-кодов<ref>[https://www.ics.uci.edu/~welling/teaching/273ASpring09/lecun-89e.pdf Backpropagation Applied to Handwritten Zip Code Recognition]</ref>. Хотя алгоритм работал, на его обучение потребовалось 3 дня, что существенно ограничевало применимость данного метода. Из-за низкой скоростя обучения нейронные сети в 1990-х годах уступили место методу опорных векторов.<br />
<br />
Популярность глубокое обучение приобрело в середине 2000-х годов. Этому способстовали несколько факторов: <br />
* появились более мощные компьютеры, способные обучать большие нейронные сети;<br />
* появились новые датасеты, достаточные по объёму, чтобы обучение больших сетей имело смысл;<br />
* произошли существенные продвижения в теории искусственных нейронных сетей. В появихшихся статьях авторы показали, что можно эффективно предобучать многослойную нейронную сеть, если обучать каждый слой отдельно при помощи ограниченной машины Больцмана, а затем дообучать при помощи метода обратного распространения ошибки;<br />
* технология привлекли внимание крупных медиа, — первым из мировых СМИ об этом написал The New York Times.<br />
<br />
== Определение == <br />
'''Глубокое обучение''' {{---}} это класс алгоритмов машинного обучения, который:<br />
<br />
* использует многослойную систему нелинейных фильтров для извлечения признаков с преобразованиями. Каждый последующий слой получает на входе выходные данные предыдущего слоя. <br />
* может сочетать алгоритмы обучения с учителем (пример {{---}} классификация) и без учителя (пример {{---}} анализ образца).<br />
* формирует в процессе обучения слои выявления признаков на нескольких уровнях представлений, которые соответствуют различным уровням абстракции; при этом признаки организованы иерархически - признаки более высокого уровня являются производными от признаков более низкого уровня.<br />
<br />
== Нейронные сети ==<br />
* Искусственные нейронные сети (англ. artificial neural networks (ANN))<ref>[https://en.wikipedia.org/wiki/Artificial_neural_network Artificial neural network, Wikipedia]</ref><br />
* Глубокие нейронные сети (англ. deep neural network (DNN))<ref>[https://en.wikipedia.org/wiki/Deep_learning#Deep_neural_networks Deep neural networks , Wikipedia]</ref><br />
<br />
== Применения ==<br />
* Распознавание речи<br />
* Компьютерное зрение<ref>[http://neerc.ifmo.ru/wiki/index.php?title=Задача_нахождения_объектов_на_изображении Задача нахождения объектов на изображении]<sup>[на 06.12.18 не создан]</sup></ref><br />
* Обработка визуальных изображений<br />
* Обработка естественного языка<br />
* Обнаружение новых лекарственных препаратов<br />
* Рекомендательные системы<br />
* Предсказание генномных онтологий в биоинформатике<br />
<br />
== Sigmoid function ==<br />
У ступенчатых функций есть определенное количество ограничений, связанных с ее линейностью. Если функция активации является линейной, то независимо от количества складываемых скрытых слоев в нейронной сети, конечный результат по-прежнему будет являеться линейной комбинацией исходных входных данных. Эта линейность означает, что она не может реально охватить сложность нелинейных задач, таких как оператор XOR или различные паттерны, разделенные кривыми или кругами. Другой проблемой является то, что перцептрон с ступенчатой функцией не очень «стабилен», то есть может перейти из состояния 0 в 1 и из 0 в 1 при небольших изменениях в любом из весов входного слоя. <br />
<br />
Для того, чтобы избежать данных проблем, в нейронных сетях используется sigmoid функция в качестве активационной. <br />
<br />
[[Файл:sigmoid_function.png|border|500px|thumb|center|Рис 1. Sigmoid Function]]<br />
<br />
Функция sigmoid, в отличие от ступенчатой функции, вводит нелинейность в выбранную модель нейронной сети. Нелинейность означает, что выход, получаемых из нейрона, который является произведением некоторых входов <math>x (x_1, x_2, ..., x_m)</math> и весов <math>w (w_1, w_2, ..., w_m)</math> плюс смещение, а затем помещаемый в sigmoid функцию, не может быть представлен линейной комбинацией входов <math>x (x_1, x_2, ..., x_m)</math>.<br />
<br />
== Rectified Linear Units (ReLU) ==<br />
Несмотря на множество сильных сторон sigmoid function, у нее есть значительные недостатки. Производная такой функции крайне мала во всех точках, кроме сравнительно небольшого промежутка. Это сильно усложняет процесс улучшения весов с помощью градиентного спуска. Эта проблема усугубляется в случае, если модель содержит больше слоев. Данная проблема называется проблемой исчезающего градиента.<ref>[https://en.wikipedia.org/wiki/Vanishing_gradient_problem Vanishing gradient problem, Wikipedia]</ref><br />
<br />
Функция ReLU имеет производную равную 0 для всех отрицательных значениях и 1 для положительных. Таким образом, когда обучение происходит на датасетах разумного размера, обычно находятся точки данных, дающие положительные значения для любого выбранного узла. Таким образом, средняя производная редко бывает близка к 0, что позволяет продолжать градиентный спуск.<br />
<br />
'''Rectified Linear Unit''' {{---}} это наиболее часто используемая активационная функция при глубоком обучении. Данная функция возвращает 0, если принимает отрицательный вход, в случае же положительного входа, функция возвращает само число. Таким образом функция может быть записана как <math>f(x)=max(0,x)</math>.<br />
<br />
[[Файл:Relu.png|500px|thumb|center|Рис 2. Rectified Linear Units]]<br />
<br />
Функция ReLU отлично работает в большинстве приложений, в результате чего она получила широкое распространение. Данная функция позволяет правильно учитывать нелинейности и взаимодействия.<br />
<br />
== Программы для глубокого обучения ==<br />
* TensorFlow<ref>[https://en.wikipedia.org/wiki/TensorFlow TensorFlow, Wikipedia]</ref><br />
* Microsoft Cognitive Toolkit<ref>[https://en.wikipedia.org/wiki/Microsoft_Cognitive_Toolkit Microsoft Cognitive Toolkit, Wikipedia]</ref><br />
* Wolfram Mathematica<ref>[https://en.wikipedia.org/wiki/Wolfram_Mathematica Wolfram Mathematica, Wikipedia]</ref><br />
* Keras<ref>[https://en.wikipedia.org/wiki/Keras Keras, Wikipedia]</ref><br />
* Deeplearning4j<ref>[https://en.wikipedia.org/wiki/Deeplearning4j Deeplearning4j, Wikipedia]</ref><br />
* Caffe<ref>[https://en.wikipedia.org/wiki/Caffe_(software) Caffe, Wikipedia]</ref><br />
<br />
Сопоставление фреймворков, библиотек и отдельных программ для глубокого обучения<ref>[https://en.wikipedia.org/wiki/Comparison_of_deep_learning_software Comparison of deep learning software, Wikipedia]</ref>.<br />
== См. также ==<br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Нейронные_сети,_перцептрон Нейронные сети, перцептрон]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Сверточные_нейронные_сети Сверточные нейронные сети]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Рекуррентные_нейронные_сети Рекуррентные нейронные сети ]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Задача_нахождения_объектов_на_изображении Задача нахождения объектов на изображении]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Обучение_с_подкреплением Обучение с подкреплением ]<sup>[на 06.12.18 не создан]</sup><br />
<br />
== Примечания ==<br />
<references/><br />
<br />
== Источники информации ==<br />
* [https://en.wikipedia.org/wiki/Deep_learning Deep learning, Wikipedia]<br />
* [https://ru.wikipedia.org/wiki/Глубокое_обучение Глубокое обучение, Wikipedia]<br />
* [http://www.deeplearningbook.org/ Deep Learning Book, MIT]<br />
* [https://towardsdatascience.com/multi-layer-neural-networks-with-sigmoid-function-deep-learning-for-rookies-2-bf464f09eb7f Multi-Layer Neural Networks with Sigmoid Function, Towards Data Science]<br />
* [https://www.kaggle.com/dansbecker/rectified-linear-units-relu-in-deep-learning Rectified Linear Units (ReLU) in Deep Learning, Kaggle]</div>80.76.244.114http://neerc.ifmo.ru/wiki/index.php?title=%D0%93%D0%BB%D1%83%D0%B1%D0%BE%D0%BA%D0%BE%D0%B5_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5&diff=67517Глубокое обучение2018-12-04T19:31:11Z<p>80.76.244.114: </p>
<hr />
<div>'''Глубокое обучение''' (англ. deep learning) {{---}} совокупность широкого семейства методов машинного обучения, основанных на обучении представлениям, а не специализированным алгоритмам под конкретные задачи. Глубокое обучение может быть с учителем, с частичным привлечением учителя, без учителя и с подкреплением. Несмотря на то, что данный раздел машинного обучения появился еще в 1980х, до недавнего времени его применение было сильно ограничено из-за недостака вычислительных мощностей существовавших компьютеров. Ситуация изменилась только в середине 2000х.<br />
<br />
На создание моделей глубокого обучения оказали влияние некоторые процессы и паттерны, происходящие в биологических нейронных системах. Несмотря на это, данные модели имеют множество различий от биологического мозга (и в структуре и в функциях), что делает невозможным использование теорем и доказательств, применяющихся нейробиологии.<br />
<br />
== История ==<br />
Термин «глубокое обучение» появился в научном сообществе машинного обучения в 1986 году в работе израильско-американского ученой Рины Дехтер «Learning While Searching in Constraint-Satisfaction-Problems»<ref>[https://www.researchgate.net/publication/221605378_Learning_While_Searching_in_Constraint-Satisfaction-Problems Learning While Searching in Constraint-Satisfaction-Problems]</ref>. Стоит отметить, что первый общий рабочий алгоритм для глубоких многослойных перцептронов прямого распространения был опубликован в книге советских учёных Алексея Григорьевича Ивахненко и Валентина Григорьевича Лапы «Кибернетические предсказывающие устройства».<br />
<br />
Многие архитектуры глубокого обучения появились с искусственной нейронной сети Neocognitron<ref>[https://en.wikipedia.org/wiki/Neocognitron Neocognitron, Wikipedia]</ref>, представленной в 1980 году Кунихикой Фукусимой. Особенное влияние данная сеть оказала на архитектуры, использующиеся для компьютерного зрения. В 1989 году Яну Лекуну удалось использовать алгоритм обратного распространения ошибки для обучения глубоких нейросетей для решения задачи распознавания рукописных ZIP-кодов<ref>[https://www.ics.uci.edu/~welling/teaching/273ASpring09/lecun-89e.pdf Backpropagation Applied to Handwritten Zip Code Recognition]</ref>. Хотя алгоритм работал, на его обучение потребовалось 3 дня, что существенно ограничевало применимость данного метода. Из-за низкой скоростя обучения нейронные сети в 1990-х годах уступили место методу опорных векторов.<br />
<br />
Популярность глубокое обучение приобрело в середине 2000-х годов. Этому способстовали несколько факторов: <br />
* появились более мощные компьютеры, способные обучать большие нейронные сети;<br />
* появились новые датасеты, достаточные по объёму, чтобы обучение больших сетей имело смысл;<br />
* произошли существенные продвижения в теории искусственных нейронных сетей. В появихшихся статьях авторы показали, что можно эффективно предобучать многослойную нейронную сеть, если обучать каждый слой отдельно при помощи ограниченной машины Больцмана, а затем дообучать при помощи метода обратного распространения ошибки;<br />
* технология привлекли внимание крупных медиа, — первым из мировых СМИ об этом написал The New York Times.<br />
<br />
== Определение == <br />
'''Глубокое обучение''' {{---}} это класс алгоритмов машинного обучения, который:<br />
<br />
* использует многослойную систему нелинейных фильтров для извлечения признаков с преобразованиями. Каждый последующий слой получает на входе выходные данные предыдущего слоя. <br />
* может сочетать алгоритмы обучения с учителем (пример {{---}} классификация) и без учителя (пример {{---}} анализ образца).<br />
* формирует в процессе обучения слои выявления признаков на нескольких уровнях представлений, которые соответствуют различным уровням абстракции; При этом признаки организованы иерархически - признаки более высокого уровня являются производными от признаков более низкого уровня.<br />
<br />
== Нейронные сети ==<br />
* Искусственные нейронные сети (англ. artificial neural networks (ANN))<ref>[https://en.wikipedia.org/wiki/Artificial_neural_network Artificial neural network, Wikipedia]</ref><br />
* Глубокие нейронные сети (англ. deep neural network (DNN))<ref>[https://en.wikipedia.org/wiki/Deep_learning#Deep_neural_networks Deep neural networks , Wikipedia]</ref><br />
<br />
== Применения ==<br />
* Распознавание речи<br />
* Компьютерное зрение<br />
* Обработка визуальных изображений<br />
* Обработка естественного языка<br />
* Обнаружение новых лекарственных препаратов<br />
* Рекомендательные системы<br />
* Предсказание генномных онтологий в биоинформатике<br />
<br />
== Sigmoid function ==<br />
У ступенчатых функций есть определенное количество ограничений, связанных с ее линейностью. Если функция активации является линейной, то независимо от количества складываемых скрытых слоев в нейронной сети, конечный результат по-прежнему будет являеться линейной комбинацией исходных входных данных. Эта линейность означает, что она не может реально охватить сложность нелинейных задач, таких как оператор XOR или различные паттерны, разделенные кривыми или кругами. Другой проблемой является то, что перцептрон с ступенчатой функцией не очень «стабилен», то есть может перейти из состояния 0 в 1 и из 0 в 1 при небольших изменениях в любом из весов входного слоя. <br />
<br />
Для того, чтобы избежать данных проблем, в нейронных сетях используется sigmoid функция в качестве активационной. <br />
<br />
[[Файл:sigmoid_function.png|border|500px|thumb|center|Рис 1. Sigmoid Function]]<br />
<br />
Функция sigmoid, в отличие от ступенчатой функции, вводит нелинейность в выбранную модель нейронной сети. Нелинейность означает, что выход, получаемых из нейрона, который является произведением некоторых входов <math>x (x_1, x_2, ..., x_m)</math> и весов <math>w (w_1, w_2, ..., w_m)</math> плюс смещение, а затем помещаемый в sigmoid функцию, не может быть представлен линейной комбинацией входов <math>x (x_1, x_2, ..., x_m)</math>.<br />
<br />
== Rectified Linear Units (ReLU) ==<br />
Несмотря на множество сильных сторон sigmoid function, у нее есть значительные недостатки. Производная такой функции крайне мала во всех точках, кроме сравнительно небольшого промежутка. Это сильно усложняет процесс улучшения весов с помощью градиентного спуска. Эта проблема усугубляется в случае, если модель содержит больше слоев. Данная проблема называется проблемой исчезающего градиента.<ref>[https://en.wikipedia.org/wiki/Vanishing_gradient_problem Vanishing gradient problem, Wikipedia]</ref><br />
<br />
Функция ReLU имеет производную равную 0 для всех отрицательных значениях и 1 для положительных. Таким образом, когда обучение происходит на датасетах разумного размера, обычно находятся точки данных, дающие положительные значения для любого выбранного узла. Таким образом, средняя производная редко бывает близка к 0, что позволяет продолжать градиентный спуск.<br />
<br />
'''Rectified Linear Unit''' {{---}} это наиболее часто используемая активационная функция при глубоком обучении. Данная функция возвращает 0, если принимает отрицательный вход, в случае же положительного входа, функция возвращает само число. Таким образом функция может быть записана как <math>f(x)=max(0,x)</math>.<br />
<br />
[[Файл:Relu.png|500px|thumb|center|Рис 2. Rectified Linear Units]]<br />
<br />
Функция ReLU отлично работает в большинстве приложений, в результате чего она получила широкое распространение. Данная функция позволяет правильно учитывать нелинейности и взаимодействия.<br />
<br />
== Программы для глубокого обучения ==<br />
* TensorFlow<ref>[https://en.wikipedia.org/wiki/TensorFlow TensorFlow, Wikipedia]</ref><br />
* Microsoft Cognitive Toolkit<ref>[https://en.wikipedia.org/wiki/Microsoft_Cognitive_Toolkit Microsoft Cognitive Toolkit, Wikipedia]</ref><br />
* Wolfram Mathematica<ref>[https://en.wikipedia.org/wiki/Wolfram_Mathematica Wolfram Mathematica, Wikipedia]</ref><br />
* Keras<ref>[https://en.wikipedia.org/wiki/Keras Keras, Wikipedia]</ref><br />
* Deeplearning4j<ref>[https://en.wikipedia.org/wiki/Deeplearning4j Deeplearning4j, Wikipedia]</ref><br />
* Caffe<ref>[https://en.wikipedia.org/wiki/Caffe_(software) Caffe, Wikipedia]</ref><br />
<br />
Сопоставление фреймворков, библиотек и отдельных программ для глубокого обучения<ref>[https://en.wikipedia.org/wiki/Comparison_of_deep_learning_software Comparison of deep learning software, Wikipedia]</ref>.<br />
== См. также ==<br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Нейронные_сети,_перцептрон Нейронные сети, перцептрон]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Сверточные_нейронные_сети Сверточные нейронные сети]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Рекуррентные_нейронные_сети Рекуррентные нейронные сети ]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Задача_нахождения_объектов_на_изображении Задача нахождения объектов на изображении]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Обучение_с_подкреплением Обучение с подкреплением ]<sup>[на 06.12.18 не создан]</sup><br />
<br />
== Примечания ==<br />
<references/><br />
<br />
== Источники информации ==<br />
* [https://en.wikipedia.org/wiki/Deep_learning Deep learning, Wikipedia]<br />
* [https://ru.wikipedia.org/wiki/Глубокое_обучение Глубокое обучение, Wikipedia]<br />
* [http://www.deeplearningbook.org/ Deep Learning Book, MIT]<br />
* [https://towardsdatascience.com/multi-layer-neural-networks-with-sigmoid-function-deep-learning-for-rookies-2-bf464f09eb7f Multi-Layer Neural Networks with Sigmoid Function, Towards Data Science]<br />
* [https://www.kaggle.com/dansbecker/rectified-linear-units-relu-in-deep-learning Rectified Linear Units (ReLU) in Deep Learning, Kaggle]</div>80.76.244.114http://neerc.ifmo.ru/wiki/index.php?title=%D0%93%D0%BB%D1%83%D0%B1%D0%BE%D0%BA%D0%BE%D0%B5_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5&diff=67516Глубокое обучение2018-12-04T19:21:54Z<p>80.76.244.114: /* Sigmoid function */</p>
<hr />
<div>'''Глубокое обучение''' (англ. deep learning) {{---}} совокупность широкого семейства методов машинного обучения, основанных на обучении представлениям, а не специализированным алгоритмам под конкретные задачи. Глубокое обучение может быть с учителем, с частичным привлечением учителя, без учителя и с подкреплением. Несмотря на то, что данный раздел машинного обучения появился еще в 1980х, до недавнего времени его применение было сильно ограничено из-за недостака вычислительных мощностей существовавших компьютеров. Ситуация изменилась только в середине 2000х.<br />
<br />
На создание моделей глубокого обучения оказали влияние некоторые процессы и паттерны, происходящие в биологических нейронных системах. Несмотря на это, данные модели имеют множество различий от биологического мозга (и в структуре и в функциях), что делает невозможным использование теорем и доказательств, применяющихся нейробиологии.<br />
<br />
== История ==<br />
Термин «глубокое обучение» появился в научном сообществе машинного обучения в 1986 году в работе израильско-американского ученой Рины Дехтер «Learning While Searching in Constraint-Satisfaction-Problems»<ref>[https://www.researchgate.net/publication/221605378_Learning_While_Searching_in_Constraint-Satisfaction-Problems Learning While Searching in Constraint-Satisfaction-Problems]</ref>. Стоит отметить, что первый общий рабочий алгоритм для глубоких многослойных перцептронов прямого распространения был опубликован в книге советских учёных Алексея Григорьевича Ивахненко и Валентина Григорьевича Лапы «Кибернетические предсказывающие устройства».<br />
<br />
Многие архитектуры глубокого обучения появились с искусственной нейронной сети Neocognitron<ref>[https://en.wikipedia.org/wiki/Neocognitron Neocognitron, Wikipedia]</ref>, представленной в 1980 году Кунихикой Фукусимой. Особенное влияние данная сеть оказала на архитектуры, использующиеся для компьютерного зрения. В 1989 году Яну Лекуну удалось использовать алгоритм обратного распространения ошибки для обучения глубоких нейросетей для решения задачи распознавания рукописных ZIP-кодов<ref>[https://www.ics.uci.edu/~welling/teaching/273ASpring09/lecun-89e.pdf Backpropagation Applied to Handwritten Zip Code Recognition]</ref>. Хотя алгоритм работал, на его обучение потребовалось 3 дня, что существенно ограничевало применимость данного метода. Из-за низкой скоростя обучения нейронные сети в 1990-х годах уступили место методу опорных векторов.<br />
<br />
Популярность глубокое обучение приобрело в середине 2000-х годов. Этому способстовали несколько факторов: <br />
* появились более мощные компьютеры, способные обучать большие нейронные сети;<br />
* появились новые датасеты, достаточные по объёму, чтобы обучение больших сетей имело смысл;<br />
* произошли существенные продвижения в теории искусственных нейронных сетей. В появихшихся статьях авторы показали, что можно эффективно предобучать многослойную нейронную сеть, если обучать каждый слой отдельно при помощи ограниченной машины Больцмана, а затем дообучать при помощи метода обратного распространения ошибки;<br />
* технология привлекли внимание крупных медиа, — первым из мировых СМИ об этом написал The New York Times.<br />
<br />
== Определение == <br />
'''Глубокое обучение''' {{---}} это класс алгоритмов машинного обучения, который:<br />
<br />
* использует многослойную систему нелинейных фильтров для извлечения признаков с преобразованиями. Каждый последующий слой получает на входе выходные данные предыдущего слоя. <br />
* может сочетать алгоритмы обучения с учителем (пример {{---}} классификация) и без учителя (пример {{---}} анализ образца).<br />
* формирует в процессе обучения слои выявления признаков на нескольких уровнях представлений, которые соответствуют различным уровням абстракции; При этом признаки организованы иерархически - признаки более высокого уровня являются производными от признаков более низкого уровня.<br />
<br />
== Нейронные сети ==<br />
* Искусственные нейронные сети (англ. artificial neural networks (ANN))<ref>[https://en.wikipedia.org/wiki/Artificial_neural_network Artificial neural network, Wikipedia]</ref><br />
* Глубокие нейронные сети (англ. deep neural network (DNN))<ref>[https://en.wikipedia.org/wiki/Deep_learning#Deep_neural_networks Deep neural networks , Wikipedia]</ref><br />
<br />
== Применения ==<br />
* Распознавание речи<br />
* Компьютерное зрение<br />
* Обработка визуальных изображений<br />
* Обработка естественного языка<br />
* Обнаружение новых лекарственных препаратов<br />
* Рекомендательные системы<br />
* Предсказание генномных онтологий в биоинформатике<br />
<br />
== Sigmoid function ==<br />
У ступенчатых функций есть определенное количество ограничений, связанных с ее линейностью. Если функция активации является линейной, то независимо от количества складываемых скрытых слоев в нейронной сети, конечный результат по-прежнему будет являеться линейной комбинацией исходных входных данных. Эта линейность означает, что она не может реально охватить сложность нелинейных задач, таких как оператор XOR или различные паттерны, разделенные кривыми или кругами. Другой проблемой является то, что перцептрон с ступенчатой функцией не очень «стабилен», то есть может перейти из состояния 0 в 1 и из 0 в 1 при небольших изменениях в любом из весов входного слоя. <br />
<br />
Для того, чтобы избежать данных проблем, в нейронных сетях используется sigmoid функция в качестве активационной. <br />
<br />
[[Файл:sigmoid_function.png|border|500px|thumb|center|Рис 1. Sigmoid Function]]<br />
<br />
Функция sigmoid, в отличие от ступенчатой функции, вводит нелинейность в выбранную модель нейронной сети. Нелинейность означает, что выход, получаемых из нейрона, который является произведением некоторых входов <math>x (x_1, x_2, ..., x_m)</math> и весов <math>w (w_1, w_2, ..., w_m)</math> плюс смещение, а затем помещаемый в sigmoid функцию, не может быть представлен линейной комбинацией входов <math>x (x_1, x_2, ..., x_m)</math>.<br />
<br />
== Rectified Linear Units (ReLU) ==<br />
Несмотря на множество сильных сторон sigmoid function, у нее есть значительные недостатки. Производная такой функции крайне мала во всех точках, кроме сравнительно небольшого промежутка. Это сильно усложняет процесс улучшения весов с помощью градиентного спуска. Эта проблема усугубляется в случае, если модель содержит больше слоев. Данная проблема называется проблемой исчезающего градиента.<ref>[https://en.wikipedia.org/wiki/Vanishing_gradient_problem Vanishing gradient problem, Wikipedia]</ref><br />
<br />
Функция ReLU имеет производную равную 0 для всех отрицательных значениях и 1 для положительных. Таким образом, когда обучение происходит на датасетах разумного размера, обычно находятся точки данных, дающие положительные значения для любого выбранного узла. Таким образом, средняя производная редко бывает близка к 0, что позволяет продолжать градиентный спуск.<br />
<br />
'''Rectified Linear Unit''' {{---}} это наиболее часто используемая активационная функция при глубоком обучении. Данная функция возвращает 0, если принимает отрицательный вход, в случае же положительного входа, функция возвращает само число. Таким образом функция может быть записана как <math>f(x)=max(0,x)</math>.<br />
<br />
[[Файл:Relu.png|500px|thumb|center|Рис 2. Rectified Linear Units]]<br />
<br />
Функция ReLU отлично работает в большинстве приложений, в результате чего она получила широкое распространение. Данная функция позволяет правильно учитывать нелинейности и взаимодействия.<br />
<br />
== См. также ==<br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Нейронные_сети,_перцептрон Нейронные сети, перцептрон]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Сверточные_нейронные_сети Сверточные нейронные сети]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Рекуррентные_нейронные_сети Рекуррентные нейронные сети ]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Задача_нахождения_объектов_на_изображении Задача нахождения объектов на изображении]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Обучение_с_подкреплением Обучение с подкреплением ]<sup>[на 06.12.18 не создан]</sup><br />
<br />
== Примечания ==<br />
<references/><br />
<br />
== Источники информации ==<br />
* [https://en.wikipedia.org/wiki/Deep_learning Deep learning, Wikipedia]<br />
* [https://ru.wikipedia.org/wiki/Глубокое_обучение Глубокое обучение, Wikipedia]<br />
* [http://www.deeplearningbook.org/ Deep Learning Book, MIT]<br />
* [https://towardsdatascience.com/multi-layer-neural-networks-with-sigmoid-function-deep-learning-for-rookies-2-bf464f09eb7f Multi-Layer Neural Networks with Sigmoid Function, Towards Data Science]</div>80.76.244.114http://neerc.ifmo.ru/wiki/index.php?title=%D0%93%D0%BB%D1%83%D0%B1%D0%BE%D0%BA%D0%BE%D0%B5_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5&diff=67515Глубокое обучение2018-12-04T19:20:33Z<p>80.76.244.114: /* Rectified Linear Units (ReLU) */</p>
<hr />
<div>'''Глубокое обучение''' (англ. deep learning) {{---}} совокупность широкого семейства методов машинного обучения, основанных на обучении представлениям, а не специализированным алгоритмам под конкретные задачи. Глубокое обучение может быть с учителем, с частичным привлечением учителя, без учителя и с подкреплением. Несмотря на то, что данный раздел машинного обучения появился еще в 1980х, до недавнего времени его применение было сильно ограничено из-за недостака вычислительных мощностей существовавших компьютеров. Ситуация изменилась только в середине 2000х.<br />
<br />
На создание моделей глубокого обучения оказали влияние некоторые процессы и паттерны, происходящие в биологических нейронных системах. Несмотря на это, данные модели имеют множество различий от биологического мозга (и в структуре и в функциях), что делает невозможным использование теорем и доказательств, применяющихся нейробиологии.<br />
<br />
== История ==<br />
Термин «глубокое обучение» появился в научном сообществе машинного обучения в 1986 году в работе израильско-американского ученой Рины Дехтер «Learning While Searching in Constraint-Satisfaction-Problems»<ref>[https://www.researchgate.net/publication/221605378_Learning_While_Searching_in_Constraint-Satisfaction-Problems Learning While Searching in Constraint-Satisfaction-Problems]</ref>. Стоит отметить, что первый общий рабочий алгоритм для глубоких многослойных перцептронов прямого распространения был опубликован в книге советских учёных Алексея Григорьевича Ивахненко и Валентина Григорьевича Лапы «Кибернетические предсказывающие устройства».<br />
<br />
Многие архитектуры глубокого обучения появились с искусственной нейронной сети Neocognitron<ref>[https://en.wikipedia.org/wiki/Neocognitron Neocognitron, Wikipedia]</ref>, представленной в 1980 году Кунихикой Фукусимой. Особенное влияние данная сеть оказала на архитектуры, использующиеся для компьютерного зрения. В 1989 году Яну Лекуну удалось использовать алгоритм обратного распространения ошибки для обучения глубоких нейросетей для решения задачи распознавания рукописных ZIP-кодов<ref>[https://www.ics.uci.edu/~welling/teaching/273ASpring09/lecun-89e.pdf Backpropagation Applied to Handwritten Zip Code Recognition]</ref>. Хотя алгоритм работал, на его обучение потребовалось 3 дня, что существенно ограничевало применимость данного метода. Из-за низкой скоростя обучения нейронные сети в 1990-х годах уступили место методу опорных векторов.<br />
<br />
Популярность глубокое обучение приобрело в середине 2000-х годов. Этому способстовали несколько факторов: <br />
* появились более мощные компьютеры, способные обучать большие нейронные сети;<br />
* появились новые датасеты, достаточные по объёму, чтобы обучение больших сетей имело смысл;<br />
* произошли существенные продвижения в теории искусственных нейронных сетей. В появихшихся статьях авторы показали, что можно эффективно предобучать многослойную нейронную сеть, если обучать каждый слой отдельно при помощи ограниченной машины Больцмана, а затем дообучать при помощи метода обратного распространения ошибки;<br />
* технология привлекли внимание крупных медиа, — первым из мировых СМИ об этом написал The New York Times.<br />
<br />
== Определение == <br />
'''Глубокое обучение''' {{---}} это класс алгоритмов машинного обучения, который:<br />
<br />
* использует многослойную систему нелинейных фильтров для извлечения признаков с преобразованиями. Каждый последующий слой получает на входе выходные данные предыдущего слоя. <br />
* может сочетать алгоритмы обучения с учителем (пример {{---}} классификация) и без учителя (пример {{---}} анализ образца).<br />
* формирует в процессе обучения слои выявления признаков на нескольких уровнях представлений, которые соответствуют различным уровням абстракции; При этом признаки организованы иерархически - признаки более высокого уровня являются производными от признаков более низкого уровня.<br />
<br />
== Нейронные сети ==<br />
* Искусственные нейронные сети (англ. artificial neural networks (ANN))<ref>[https://en.wikipedia.org/wiki/Artificial_neural_network Artificial neural network, Wikipedia]</ref><br />
* Глубокие нейронные сети (англ. deep neural network (DNN))<ref>[https://en.wikipedia.org/wiki/Deep_learning#Deep_neural_networks Deep neural networks , Wikipedia]</ref><br />
<br />
== Применения ==<br />
* Распознавание речи<br />
* Компьютерное зрение<br />
* Обработка визуальных изображений<br />
* Обработка естественного языка<br />
* Обнаружение новых лекарственных препаратов<br />
* Рекомендательные системы<br />
* Предсказание генномных онтологий в биоинформатике<br />
<br />
== Sigmoid function ==<br />
У ступенчатых функций есть определенное количество ограничений, связанных с ее линейностью. Если функция активации является линейной, то независимо от количества складываемых скрытых слоев в нейронной сети, конечный результат по-прежнему будет являеться линейной комбинацией исходных входных данных. Эта линейность означает, что она не может реально охватить сложность нелинейных задач, таких как оператор XOR или различные паттерны, разделенные кривыми или кругами. Другой проблемой является то, что перцептрон с ступенчатой функцией не очень «стабилен», то есть может перейти из состояния 0 в 1 и из 0 в 1 при небольших изменениях в любом из весов входного слоя. <br />
<br />
Для того, чтобы избежать данных проблем, в нейронных сетях используется sigmoid function в качестве активационной. <br />
<br />
[[Файл:sigmoid_function.png|border|500px|thumb|center|Рис 1. Sigmoid Function]]<br />
<br />
Sigmoid function, в отличие от ступенчатой функции, вводит нелинейность в выбранную модель нейронной сети. Нелинейность означает, что выход, получаемых из нейрона, который является произведением некоторых входов <math>x (x_1, x_2, ..., x_m)</math> и весов <math>w (w_1, w_2, ..., w_m)</math> плюс смещение, а затем помещаемый в sigmoid function, не может быть представлен линейной комбинацией входов <math>x (x_1, x_2, ..., x_m)</math>.<br />
<br />
== Rectified Linear Units (ReLU) ==<br />
Несмотря на множество сильных сторон sigmoid function, у нее есть значительные недостатки. Производная такой функции крайне мала во всех точках, кроме сравнительно небольшого промежутка. Это сильно усложняет процесс улучшения весов с помощью градиентного спуска. Эта проблема усугубляется в случае, если модель содержит больше слоев. Данная проблема называется проблемой исчезающего градиента.<ref>[https://en.wikipedia.org/wiki/Vanishing_gradient_problem Vanishing gradient problem, Wikipedia]</ref><br />
<br />
Функция ReLU имеет производную равную 0 для всех отрицательных значениях и 1 для положительных. Таким образом, когда обучение происходит на датасетах разумного размера, обычно находятся точки данных, дающие положительные значения для любого выбранного узла. Таким образом, средняя производная редко бывает близка к 0, что позволяет продолжать градиентный спуск.<br />
<br />
'''Rectified Linear Unit''' {{---}} это наиболее часто используемая активационная функция при глубоком обучении. Данная функция возвращает 0, если принимает отрицательный вход, в случае же положительного входа, функция возвращает само число. Таким образом функция может быть записана как <math>f(x)=max(0,x)</math>.<br />
<br />
[[Файл:Relu.png|500px|thumb|center|Рис 2. Rectified Linear Units]]<br />
<br />
Функция ReLU отлично работает в большинстве приложений, в результате чего она получила широкое распространение. Данная функция позволяет правильно учитывать нелинейности и взаимодействия.<br />
<br />
== См. также ==<br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Нейронные_сети,_перцептрон Нейронные сети, перцептрон]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Сверточные_нейронные_сети Сверточные нейронные сети]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Рекуррентные_нейронные_сети Рекуррентные нейронные сети ]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Задача_нахождения_объектов_на_изображении Задача нахождения объектов на изображении]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Обучение_с_подкреплением Обучение с подкреплением ]<sup>[на 06.12.18 не создан]</sup><br />
<br />
== Примечания ==<br />
<references/><br />
<br />
== Источники информации ==<br />
* [https://en.wikipedia.org/wiki/Deep_learning Deep learning, Wikipedia]<br />
* [https://ru.wikipedia.org/wiki/Глубокое_обучение Глубокое обучение, Wikipedia]<br />
* [http://www.deeplearningbook.org/ Deep Learning Book, MIT]<br />
* [https://towardsdatascience.com/multi-layer-neural-networks-with-sigmoid-function-deep-learning-for-rookies-2-bf464f09eb7f Multi-Layer Neural Networks with Sigmoid Function, Towards Data Science]</div>80.76.244.114http://neerc.ifmo.ru/wiki/index.php?title=%D0%93%D0%BB%D1%83%D0%B1%D0%BE%D0%BA%D0%BE%D0%B5_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5&diff=67511Глубокое обучение2018-12-04T18:40:32Z<p>80.76.244.114: </p>
<hr />
<div>'''Глубокое обучение''' (англ. deep learning) {{---}} совокупность широкого семейства методов машинного обучения, основанных на обучении представлениям, а не специализированным алгоритмам под конкретные задачи. Глубокое обучение может быть с учителем, с частичным привлечением учителя, без учителя и с подкреплением. Несмотря на то, что данный раздел машинного обучения появился еще в 1980х, до недавнего времени его применение было сильно ограничено из-за недостака вычислительных мощностей существовавших компьютеров. Ситуация изменилась только в середине 2000х.<br />
<br />
На создание моделей глубокого обучения оказали влияние некоторые процессы и паттерны, происходящие в биологических нейронных системах. Несмотря на это, данные модели имеют множество различий от биологического мозга (и в структуре и в функциях), что делает невозможным использование теорем и доказательств, применяющихся нейробиологии.<br />
<br />
== История ==<br />
Термин «глубокое обучение» появился в научном сообществе машинного обучения в 1986 году в работе израильско-американского ученой Рины Дехтер «Learning While Searching in Constraint-Satisfaction-Problems»<ref>[https://www.researchgate.net/publication/221605378_Learning_While_Searching_in_Constraint-Satisfaction-Problems Learning While Searching in Constraint-Satisfaction-Problems]</ref>. Стоит отметить, что первый общий рабочий алгоритм для глубоких многослойных перцептронов прямого распространения был опубликован в книге советских учёных Алексея Григорьевича Ивахненко и Валентина Григорьевича Лапы «Кибернетические предсказывающие устройства».<br />
<br />
Многие архитектуры глубокого обучения появились с искусственной нейронной сети Neocognitron<ref>[https://en.wikipedia.org/wiki/Neocognitron Neocognitron, Wikipedia]</ref>, представленной в 1980 году Кунихикой Фукусимой. Особенное влияние данная сеть оказала на архитектуры, использующиеся для компьютерного зрения. В 1989 году Яну Лекуну удалось использовать алгоритм обратного распространения ошибки для обучения глубоких нейросетей для решения задачи распознавания рукописных ZIP-кодов<ref>[https://www.ics.uci.edu/~welling/teaching/273ASpring09/lecun-89e.pdf Backpropagation Applied to Handwritten Zip Code Recognition]</ref>. Хотя алгоритм работал, на его обучение потребовалось 3 дня, что существенно ограничевало применимость данного метода. Из-за низкой скоростя обучения нейронные сети в 1990-х годах уступили место методу опорных векторов.<br />
<br />
Популярность глубокое обучение приобрело в середине 2000-х годов. Этому способстовали несколько факторов: <br />
* появились более мощные компьютеры, способные обучать большие нейронные сети;<br />
* появились новые датасеты, достаточные по объёму, чтобы обучение больших сетей имело смысл;<br />
* произошли существенные продвижения в теории искусственных нейронных сетей. В появихшихся статьях авторы показали, что можно эффективно предобучать многослойную нейронную сеть, если обучать каждый слой отдельно при помощи ограниченной машины Больцмана, а затем дообучать при помощи метода обратного распространения ошибки;<br />
* технология привлекли внимание крупных медиа, — первым из мировых СМИ об этом написал The New York Times.<br />
<br />
== Определение == <br />
'''Глубокое обучение''' {{---}} это класс алгоритмов машинного обучения, который:<br />
<br />
* использует многослойную систему нелинейных фильтров для извлечения признаков с преобразованиями. Каждый последующий слой получает на входе выходные данные предыдущего слоя. <br />
* может сочетать алгоритмы обучения с учителем (пример {{---}} классификация) и без учителя (пример {{---}} анализ образца).<br />
* формирует в процессе обучения слои выявления признаков на нескольких уровнях представлений, которые соответствуют различным уровням абстракции; При этом признаки организованы иерархически - признаки более высокого уровня являются производными от признаков более низкого уровня.<br />
<br />
== Нейронные сети ==<br />
* Искусственные нейронные сети (англ. artificial neural networks (ANN))<ref>[https://en.wikipedia.org/wiki/Artificial_neural_network Artificial neural network, Wikipedia]</ref><br />
* Глубокие нейронные сети (англ. deep neural network (DNN))<ref>[https://en.wikipedia.org/wiki/Deep_learning#Deep_neural_networks Deep neural networks , Wikipedia]</ref><br />
<br />
== Применения ==<br />
* Распознавание речи<br />
* Компьютерное зрение<br />
* Обработка визуальных изображений<br />
* Обработка естественного языка<br />
* Обнаружение новых лекарственных препаратов<br />
* Рекомендательные системы<br />
* Предсказание генномных онтологий в биоинформатике<br />
<br />
== Sigmoid function ==<br />
У ступенчатых функций есть определенное количество ограничений, связанных с ее линейностью. Если функция активации является линейной, то независимо от количества складываемых скрытых слоев в нейронной сети, конечный результат по-прежнему будет являеться линейной комбинацией исходных входных данных. Эта линейность означает, что она не может реально охватить сложность нелинейных задач, таких как оператор XOR или различные паттерны, разделенные кривыми или кругами. Другой проблемой является то, что перцептрон с ступенчатой функцией не очень «стабилен», то есть может перейти из состояния 0 в 1 и из 0 в 1 при небольших изменениях в любом из весов входного слоя. <br />
<br />
Для того, чтобы избежать данных проблем, в нейронных сетях используется sigmoid function в качестве активационной. <br />
<br />
[[Файл:sigmoid_function.png|border|500px|thumb|center|Рис 1. Sigmoid Function]]<br />
<br />
Sigmoid function, в отличие от ступенчатой функции, вводит нелинейность в выбранную модель нейронной сети. Нелинейность означает, что выход, получаемых из нейрона, который является произведением некоторых входов <math>x (x_1, x_2, ..., x_m)</math> и весов <math>w (w_1, w_2, ..., w_m)</math> плюс смещение, а затем помещаемый в sigmoid function, не может быть представлен линейной комбинацией входов <math>x (x_1, x_2, ..., x_m)</math>.<br />
<br />
== Rectified Linear Units (ReLU) ==<br />
...<br />
<br />
== См. также ==<br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Нейронные_сети,_перцептрон Нейронные сети, перцептрон]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Сверточные_нейронные_сети Сверточные нейронные сети]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Рекуррентные_нейронные_сети Рекуррентные нейронные сети ]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Задача_нахождения_объектов_на_изображении Задача нахождения объектов на изображении]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Обучение_с_подкреплением Обучение с подкреплением ]<sup>[на 06.12.18 не создан]</sup><br />
<br />
== Примечания ==<br />
<references/><br />
<br />
== Источники информации ==<br />
* [https://en.wikipedia.org/wiki/Deep_learning Deep learning, Wikipedia]<br />
* [https://ru.wikipedia.org/wiki/Глубокое_обучение Глубокое обучение, Wikipedia]<br />
* [http://www.deeplearningbook.org/ Deep Learning Book, MIT]</div>80.76.244.114http://neerc.ifmo.ru/wiki/index.php?title=%D0%93%D0%BB%D1%83%D0%B1%D0%BE%D0%BA%D0%BE%D0%B5_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5&diff=67509Глубокое обучение2018-12-04T18:37:30Z<p>80.76.244.114: /* Sigmoid function */</p>
<hr />
<div>'''Глубокое обучение''' (англ. deep learning) {{---}} совокупность широкого семейства методов машинного обучения, основанных на обучении представлениям, а не специализированным алгоритмам под конкретные задачи. Глубокое обучение может быть с учителем, с частичным привлечением учителя, без учителя и с подкреплением. Несмотря на то, что данный раздел машинного обучения появился еще в 1980х, до недавнего времени его применение было сильно ограничено из-за недостака вычислительных мощностей существовавших компьютеров. Ситуация изменилась только в середине 2000х.<br />
<br />
На создание моделей глубокого обучения оказали влияние некоторые процессы и паттерны, происходящие в биологических нейронных системах. Несмотря на это, данные модели имеют множество различий от биологического мозга (и в структуре и в функциях), что делает невозможным использование теорем и доказательств, применяющихся нейробиологии.<br />
<br />
== История ==<br />
Термин «глубокое обучение» появился в научном сообществе машинного обучения в 1986 году в работе израильско-американского ученой Рины Дехтер «Learning While Searching in Constraint-Satisfaction-Problems»<ref>[https://www.researchgate.net/publication/221605378_Learning_While_Searching_in_Constraint-Satisfaction-Problems Learning While Searching in Constraint-Satisfaction-Problems]</ref>. Стоит отметить, что первый общий рабочий алгоритм для глубоких многослойных перцептронов прямого распространения был опубликован в книге советских учёных Алексея Григорьевича Ивахненко и Валентина Григорьевича Лапы «Кибернетические предсказывающие устройства».<br />
<br />
Многие архитектуры глубокого обучения появились с искусственной нейронной сети Neocognitron<ref>[https://en.wikipedia.org/wiki/Neocognitron Neocognitron, Wikipedia]</ref>, представленной в 1980 году Кунихикой Фукусимой. Особенное влияние данная сеть оказала на архитектуры, использующиеся для компьютерного зрения. В 1989 году Яну Лекуну удалось использовать алгоритм обратного распространения ошибки для обучения глубоких нейросетей для решения задачи распознавания рукописных ZIP-кодов<ref>[https://www.ics.uci.edu/~welling/teaching/273ASpring09/lecun-89e.pdf Backpropagation Applied to Handwritten Zip Code Recognition]</ref>. Хотя алгоритм работал, на его обучение потребовалось 3 дня, что существенно ограничевало применимость данного метода. Из-за низкой скоростя обучения нейронные сети в 1990-х годах уступили место методу опорных векторов.<br />
<br />
Популярность глубокое обучение приобрело в середине 2000-х годов. Этому способстовали несколько факторов: <br />
* появились более мощные компьютеры, способные обучать большие нейронные сети;<br />
* появились новые датасеты, достаточные по объёму, чтобы обучение больших сетей имело смысл;<br />
* произошли существенные продвижения в теории искусственных нейронных сетей. В появихшихся статьях авторы показали, что можно эффективно предобучать многослойную нейронную сеть, если обучать каждый слой отдельно при помощи ограниченной машины Больцмана, а затем дообучать при помощи метода обратного распространения ошибки;<br />
* технология привлекли внимание крупных медиа, — первым из мировых СМИ об этом написал The New York Times.<br />
<br />
== Определение == <br />
'''Глубокое обучение''' {{---}} это класс алгоритмов машинного обучения, который:<br />
<br />
* использует многослойную систему нелинейных фильтров для извлечения признаков с преобразованиями. Каждый последующий слой получает на входе выходные данные предыдущего слоя. <br />
* может сочетать алгоритмы обучения с учителем (пример {{---}} классификация) и без учителя (пример {{---}} анализ образца).<br />
* формирует в процессе обучения слои выявления признаков на нескольких уровнях представлений, которые соответствуют различным уровням абстракции; При этом признаки организованы иерархически - признаки более высокого уровня являются производными от признаков более низкого уровня.<br />
<br />
== Нейронные сети ==<br />
* Искусственные нейронные сети (англ. artificial neural networks (ANN))<ref>[https://en.wikipedia.org/wiki/Artificial_neural_network Artificial neural network, Wikipedia]</ref><br />
* Глубокие нейронные сети (англ. deep neural network (DNN))<ref>[https://en.wikipedia.org/wiki/Deep_learning#Deep_neural_networks Deep neural networks , Wikipedia]</ref><br />
<br />
== Применения ==<br />
* Распознавание речи<br />
* Компьютерное зрение<br />
* Обработка визуальных изображений<br />
* Обработка естественного языка<br />
* Обнаружение новых лекарственных препаратов<br />
* Рекомендательные системы<br />
* Предсказание генномных онтологий в биоинформатике<br />
<br />
== Sigmoid function ==<br />
У ступенчатых функций есть определенное количество ограничений, связанных с ее линейностью. Если функция активации является линейной, то независимо от количества складываемых скрытых слоев в нейронной сети, конечный результат по-прежнему будет являеться линейной комбинацией исходных входных данных. Эта линейность означает, что она не может реально охватить сложность нелинейных задач, таких как оператор XOR или различные паттерны, разделенные кривыми или кругами. Другой проблемой является то, что перцептрон с ступенчатой функцией не очень «стабилен», то есть может перейти из состояния 0 в 1 и из 0 в 1 при небольших изменениях в любом из весов входного слоя. <br />
<br />
Для того, чтобы избежать данных проблем, в нейронных сетях используется sigmoid function в качестве активационной. <br />
<br />
*сюда картинку*<br />
<br />
Sigmoid function, в отличие от ступенчатой функции, вводит нелинейность в выбранную модель нейронной сети. Нелинейность означает, что выход, получаемых из нейрона, который является произведением некоторых входов <math>x (x_1, x_2, ..., x_m)</math> и весов <math>w (w_1, w_2, ..., w_m)</math> плюс смещение, а затем помещаемый в sigmoid function, не может быть представлен линейной комбинацией входов <math>x (x_1, x_2, ..., x_m)</math>.<br />
<br />
== Rectified Linear Units (ReLU) ==<br />
...<br />
<br />
== См. также ==<br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Нейронные_сети,_перцептрон Нейронные сети, перцептрон]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Сверточные_нейронные_сети Сверточные нейронные сети]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Рекуррентные_нейронные_сети Рекуррентные нейронные сети ]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Задача_нахождения_объектов_на_изображении Задача нахождения объектов на изображении]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Обучение_с_подкреплением Обучение с подкреплением ]<sup>[на 06.12.18 не создан]</sup><br />
<br />
== Примечания ==<br />
<references/><br />
<br />
== Источники информации ==<br />
* [https://en.wikipedia.org/wiki/Deep_learning Deep learning, Wikipedia]<br />
* [https://ru.wikipedia.org/wiki/Глубокое_обучение Глубокое обучение, Wikipedia]<br />
* [http://www.deeplearningbook.org/ Deep Learning Book, MIT]</div>80.76.244.114http://neerc.ifmo.ru/wiki/index.php?title=%D0%93%D0%BB%D1%83%D0%B1%D0%BE%D0%BA%D0%BE%D0%B5_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5&diff=67508Глубокое обучение2018-12-04T18:36:13Z<p>80.76.244.114: /* Sigmoid function */</p>
<hr />
<div>'''Глубокое обучение''' (англ. deep learning) {{---}} совокупность широкого семейства методов машинного обучения, основанных на обучении представлениям, а не специализированным алгоритмам под конкретные задачи. Глубокое обучение может быть с учителем, с частичным привлечением учителя, без учителя и с подкреплением. Несмотря на то, что данный раздел машинного обучения появился еще в 1980х, до недавнего времени его применение было сильно ограничено из-за недостака вычислительных мощностей существовавших компьютеров. Ситуация изменилась только в середине 2000х.<br />
<br />
На создание моделей глубокого обучения оказали влияние некоторые процессы и паттерны, происходящие в биологических нейронных системах. Несмотря на это, данные модели имеют множество различий от биологического мозга (и в структуре и в функциях), что делает невозможным использование теорем и доказательств, применяющихся нейробиологии.<br />
<br />
== История ==<br />
Термин «глубокое обучение» появился в научном сообществе машинного обучения в 1986 году в работе израильско-американского ученой Рины Дехтер «Learning While Searching in Constraint-Satisfaction-Problems»<ref>[https://www.researchgate.net/publication/221605378_Learning_While_Searching_in_Constraint-Satisfaction-Problems Learning While Searching in Constraint-Satisfaction-Problems]</ref>. Стоит отметить, что первый общий рабочий алгоритм для глубоких многослойных перцептронов прямого распространения был опубликован в книге советских учёных Алексея Григорьевича Ивахненко и Валентина Григорьевича Лапы «Кибернетические предсказывающие устройства».<br />
<br />
Многие архитектуры глубокого обучения появились с искусственной нейронной сети Neocognitron<ref>[https://en.wikipedia.org/wiki/Neocognitron Neocognitron, Wikipedia]</ref>, представленной в 1980 году Кунихикой Фукусимой. Особенное влияние данная сеть оказала на архитектуры, использующиеся для компьютерного зрения. В 1989 году Яну Лекуну удалось использовать алгоритм обратного распространения ошибки для обучения глубоких нейросетей для решения задачи распознавания рукописных ZIP-кодов<ref>[https://www.ics.uci.edu/~welling/teaching/273ASpring09/lecun-89e.pdf Backpropagation Applied to Handwritten Zip Code Recognition]</ref>. Хотя алгоритм работал, на его обучение потребовалось 3 дня, что существенно ограничевало применимость данного метода. Из-за низкой скоростя обучения нейронные сети в 1990-х годах уступили место методу опорных векторов.<br />
<br />
Популярность глубокое обучение приобрело в середине 2000-х годов. Этому способстовали несколько факторов: <br />
* появились более мощные компьютеры, способные обучать большие нейронные сети;<br />
* появились новые датасеты, достаточные по объёму, чтобы обучение больших сетей имело смысл;<br />
* произошли существенные продвижения в теории искусственных нейронных сетей. В появихшихся статьях авторы показали, что можно эффективно предобучать многослойную нейронную сеть, если обучать каждый слой отдельно при помощи ограниченной машины Больцмана, а затем дообучать при помощи метода обратного распространения ошибки;<br />
* технология привлекли внимание крупных медиа, — первым из мировых СМИ об этом написал The New York Times.<br />
<br />
== Определение == <br />
'''Глубокое обучение''' {{---}} это класс алгоритмов машинного обучения, который:<br />
<br />
* использует многослойную систему нелинейных фильтров для извлечения признаков с преобразованиями. Каждый последующий слой получает на входе выходные данные предыдущего слоя. <br />
* может сочетать алгоритмы обучения с учителем (пример {{---}} классификация) и без учителя (пример {{---}} анализ образца).<br />
* формирует в процессе обучения слои выявления признаков на нескольких уровнях представлений, которые соответствуют различным уровням абстракции; При этом признаки организованы иерархически - признаки более высокого уровня являются производными от признаков более низкого уровня.<br />
<br />
== Нейронные сети ==<br />
* Искусственные нейронные сети (англ. artificial neural networks (ANN))<ref>[https://en.wikipedia.org/wiki/Artificial_neural_network Artificial neural network, Wikipedia]</ref><br />
* Глубокие нейронные сети (англ. deep neural network (DNN))<ref>[https://en.wikipedia.org/wiki/Deep_learning#Deep_neural_networks Deep neural networks , Wikipedia]</ref><br />
<br />
== Применения ==<br />
* Распознавание речи<br />
* Компьютерное зрение<br />
* Обработка визуальных изображений<br />
* Обработка естественного языка<br />
* Обнаружение новых лекарственных препаратов<br />
* Рекомендательные системы<br />
* Предсказание генномных онтологий в биоинформатике<br />
<br />
== Sigmoid function ==<br />
У ступенчатых функций есть определенное количество ограничений, связанных с ее линейностью. Если функция активации является линейной, то независимо от количества складываемых скрытых слоев в нейронной сети, конечный результат по-прежнему будет являеться линейной комбинацией исходных входных данных. Эта линейность означает, что она не может реально охватить сложность нелинейных задач, таких как оператор XOR или различные паттерны, разделенные кривыми или кругами. Другой проблемой является то, что перцептрон с ступенчатой функцией не очень «стабилен», то есть может перейти из состояния 0 в 1 и из 0 в 1 при небольших изменениях в любом из весов входного слоя. <br />
<br />
Для того, чтобы избежать данных проблем, в нейронных сетях используется sigmoid function в качестве активационной. <br />
<br />
*сюда картинку*<br />
<br />
Sigmoid function, в отличие от ступенчатой функции, вводит нелинейность в выбранную модель нейронной сети. Нелинейность означает, что выход, получаемых из нейрона, который является произведением некоторых входов x <math>(x_1, x_2, ..., x_m)</math> и весов w <math>(w_1, w_2, ..., w_m)</math> плюс смещение, а затем помещаемый в sigmoid function, не может быть представлен линейной комбинацией входов x <math>(x_1, x_2, ..., x_m)</math>.<br />
<br />
== Rectified Linear Units (ReLU) ==<br />
...<br />
<br />
== См. также ==<br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Нейронные_сети,_перцептрон Нейронные сети, перцептрон]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Сверточные_нейронные_сети Сверточные нейронные сети]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Рекуррентные_нейронные_сети Рекуррентные нейронные сети ]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Задача_нахождения_объектов_на_изображении Задача нахождения объектов на изображении]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Обучение_с_подкреплением Обучение с подкреплением ]<sup>[на 06.12.18 не создан]</sup><br />
<br />
== Примечания ==<br />
<references/><br />
<br />
== Источники информации ==<br />
* [https://en.wikipedia.org/wiki/Deep_learning Deep learning, Wikipedia]<br />
* [https://ru.wikipedia.org/wiki/Глубокое_обучение Глубокое обучение, Wikipedia]<br />
* [http://www.deeplearningbook.org/ Deep Learning Book, MIT]</div>80.76.244.114http://neerc.ifmo.ru/wiki/index.php?title=%D0%93%D0%BB%D1%83%D0%B1%D0%BE%D0%BA%D0%BE%D0%B5_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5&diff=67507Глубокое обучение2018-12-04T18:12:46Z<p>80.76.244.114: /* Источники информации */ Добавить один</p>
<hr />
<div>'''Глубокое обучение''' (англ. deep learning) {{---}} совокупность широкого семейства методов машинного обучения, основанных на обучении представлениям, а не специализированным алгоритмам под конкретные задачи. Глубокое обучение может быть с учителем, с частичным привлечением учителя, без учителя и с подкреплением. Несмотря на то, что данный раздел машинного обучения появился еще в 1980х, до недавнего времени его применение было сильно ограничено из-за недостака вычислительных мощностей существовавших компьютеров. Ситуация изменилась только в середине 2000х.<br />
<br />
На создание моделей глубокого обучения оказали влияние некоторые процессы и паттерны, происходящие в биологических нейронных системах. Несмотря на это, данные модели имеют множество различий от биологического мозга (и в структуре и в функциях), что делает невозможным использование теорем и доказательств, применяющихся нейробиологии.<br />
<br />
== История ==<br />
Термин «глубокое обучение» появился в научном сообществе машинного обучения в 1986 году в работе израильско-американского ученой Рины Дехтер «Learning While Searching in Constraint-Satisfaction-Problems»<ref>[https://www.researchgate.net/publication/221605378_Learning_While_Searching_in_Constraint-Satisfaction-Problems Learning While Searching in Constraint-Satisfaction-Problems]</ref>. Стоит отметить, что первый общий рабочий алгоритм для глубоких многослойных перцептронов прямого распространения был опубликован в книге советских учёных Алексея Григорьевича Ивахненко и Валентина Григорьевича Лапы «Кибернетические предсказывающие устройства».<br />
<br />
Многие архитектуры глубокого обучения появились с искусственной нейронной сети Neocognitron<ref>[https://en.wikipedia.org/wiki/Neocognitron Neocognitron, Wikipedia]</ref>, представленной в 1980 году Кунихикой Фукусимой. Особенное влияние данная сеть оказала на архитектуры, использующиеся для компьютерного зрения. В 1989 году Яну Лекуну удалось использовать алгоритм обратного распространения ошибки для обучения глубоких нейросетей для решения задачи распознавания рукописных ZIP-кодов<ref>[https://www.ics.uci.edu/~welling/teaching/273ASpring09/lecun-89e.pdf Backpropagation Applied to Handwritten Zip Code Recognition]</ref>. Хотя алгоритм работал, на его обучение потребовалось 3 дня, что существенно ограничевало применимость данного метода. Из-за низкой скоростя обучения нейронные сети в 1990-х годах уступили место методу опорных векторов.<br />
<br />
Популярность глубокое обучение приобрело в середине 2000-х годов. Этому способстовали несколько факторов: <br />
* появились более мощные компьютеры, способные обучать большие нейронные сети;<br />
* появились новые датасеты, достаточные по объёму, чтобы обучение больших сетей имело смысл;<br />
* произошли существенные продвижения в теории искусственных нейронных сетей. В появихшихся статьях авторы показали, что можно эффективно предобучать многослойную нейронную сеть, если обучать каждый слой отдельно при помощи ограниченной машины Больцмана, а затем дообучать при помощи метода обратного распространения ошибки;<br />
* технология привлекли внимание крупных медиа, — первым из мировых СМИ об этом написал The New York Times.<br />
<br />
== Определение == <br />
'''Глубокое обучение''' {{---}} это класс алгоритмов машинного обучения, который:<br />
<br />
* использует многослойную систему нелинейных фильтров для извлечения признаков с преобразованиями. Каждый последующий слой получает на входе выходные данные предыдущего слоя. <br />
* может сочетать алгоритмы обучения с учителем (пример {{---}} классификация) и без учителя (пример {{---}} анализ образца).<br />
* формирует в процессе обучения слои выявления признаков на нескольких уровнях представлений, которые соответствуют различным уровням абстракции; При этом признаки организованы иерархически - признаки более высокого уровня являются производными от признаков более низкого уровня.<br />
<br />
== Нейронные сети ==<br />
* Искусственные нейронные сети (англ. artificial neural networks (ANN))<ref>[https://en.wikipedia.org/wiki/Artificial_neural_network Artificial neural network, Wikipedia]</ref><br />
* Глубокие нейронные сети (англ. deep neural network (DNN))<ref>[https://en.wikipedia.org/wiki/Deep_learning#Deep_neural_networks Deep neural networks , Wikipedia]</ref><br />
<br />
== Применения ==<br />
* Распознавание речи<br />
* Компьютерное зрение<br />
* Обработка визуальных изображений<br />
* Обработка естественного языка<br />
* Обнаружение новых лекарственных препаратов<br />
* Рекомендательные системы<br />
* Предсказание генномных онтологий в биоинформатике<br />
<br />
== Sigmoid function ==<br />
...<br />
<br />
== Rectified Linear Units (ReLU) ==<br />
...<br />
<br />
== См. также ==<br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Нейронные_сети,_перцептрон Нейронные сети, перцептрон]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Сверточные_нейронные_сети Сверточные нейронные сети]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Рекуррентные_нейронные_сети Рекуррентные нейронные сети ]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Задача_нахождения_объектов_на_изображении Задача нахождения объектов на изображении]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Обучение_с_подкреплением Обучение с подкреплением ]<sup>[на 06.12.18 не создан]</sup><br />
<br />
== Примечания ==<br />
<references/><br />
<br />
== Источники информации ==<br />
* [https://en.wikipedia.org/wiki/Deep_learning Deep learning, Wikipedia]<br />
* [https://ru.wikipedia.org/wiki/Глубокое_обучение Глубокое обучение, Wikipedia]<br />
* [http://www.deeplearningbook.org/ Deep Learning Book, MIT]</div>80.76.244.114http://neerc.ifmo.ru/wiki/index.php?title=%D0%93%D0%BB%D1%83%D0%B1%D0%BE%D0%BA%D0%BE%D0%B5_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5&diff=67506Глубокое обучение2018-12-04T18:10:59Z<p>80.76.244.114: /* См. также */ Заполнить раздел</p>
<hr />
<div>'''Глубокое обучение''' (англ. deep learning) {{---}} совокупность широкого семейства методов машинного обучения, основанных на обучении представлениям, а не специализированным алгоритмам под конкретные задачи. Глубокое обучение может быть с учителем, с частичным привлечением учителя, без учителя и с подкреплением. Несмотря на то, что данный раздел машинного обучения появился еще в 1980х, до недавнего времени его применение было сильно ограничено из-за недостака вычислительных мощностей существовавших компьютеров. Ситуация изменилась только в середине 2000х.<br />
<br />
На создание моделей глубокого обучения оказали влияние некоторые процессы и паттерны, происходящие в биологических нейронных системах. Несмотря на это, данные модели имеют множество различий от биологического мозга (и в структуре и в функциях), что делает невозможным использование теорем и доказательств, применяющихся нейробиологии.<br />
<br />
== История ==<br />
Термин «глубокое обучение» появился в научном сообществе машинного обучения в 1986 году в работе израильско-американского ученой Рины Дехтер «Learning While Searching in Constraint-Satisfaction-Problems»<ref>[https://www.researchgate.net/publication/221605378_Learning_While_Searching_in_Constraint-Satisfaction-Problems Learning While Searching in Constraint-Satisfaction-Problems]</ref>. Стоит отметить, что первый общий рабочий алгоритм для глубоких многослойных перцептронов прямого распространения был опубликован в книге советских учёных Алексея Григорьевича Ивахненко и Валентина Григорьевича Лапы «Кибернетические предсказывающие устройства».<br />
<br />
Многие архитектуры глубокого обучения появились с искусственной нейронной сети Neocognitron<ref>[https://en.wikipedia.org/wiki/Neocognitron Neocognitron, Wikipedia]</ref>, представленной в 1980 году Кунихикой Фукусимой. Особенное влияние данная сеть оказала на архитектуры, использующиеся для компьютерного зрения. В 1989 году Яну Лекуну удалось использовать алгоритм обратного распространения ошибки для обучения глубоких нейросетей для решения задачи распознавания рукописных ZIP-кодов<ref>[https://www.ics.uci.edu/~welling/teaching/273ASpring09/lecun-89e.pdf Backpropagation Applied to Handwritten Zip Code Recognition]</ref>. Хотя алгоритм работал, на его обучение потребовалось 3 дня, что существенно ограничевало применимость данного метода. Из-за низкой скоростя обучения нейронные сети в 1990-х годах уступили место методу опорных векторов.<br />
<br />
Популярность глубокое обучение приобрело в середине 2000-х годов. Этому способстовали несколько факторов: <br />
* появились более мощные компьютеры, способные обучать большие нейронные сети;<br />
* появились новые датасеты, достаточные по объёму, чтобы обучение больших сетей имело смысл;<br />
* произошли существенные продвижения в теории искусственных нейронных сетей. В появихшихся статьях авторы показали, что можно эффективно предобучать многослойную нейронную сеть, если обучать каждый слой отдельно при помощи ограниченной машины Больцмана, а затем дообучать при помощи метода обратного распространения ошибки;<br />
* технология привлекли внимание крупных медиа, — первым из мировых СМИ об этом написал The New York Times.<br />
<br />
== Определение == <br />
'''Глубокое обучение''' {{---}} это класс алгоритмов машинного обучения, который:<br />
<br />
* использует многослойную систему нелинейных фильтров для извлечения признаков с преобразованиями. Каждый последующий слой получает на входе выходные данные предыдущего слоя. <br />
* может сочетать алгоритмы обучения с учителем (пример {{---}} классификация) и без учителя (пример {{---}} анализ образца).<br />
* формирует в процессе обучения слои выявления признаков на нескольких уровнях представлений, которые соответствуют различным уровням абстракции; При этом признаки организованы иерархически - признаки более высокого уровня являются производными от признаков более низкого уровня.<br />
<br />
== Нейронные сети ==<br />
* Искусственные нейронные сети (англ. artificial neural networks (ANN))<ref>[https://en.wikipedia.org/wiki/Artificial_neural_network Artificial neural network, Wikipedia]</ref><br />
* Глубокие нейронные сети (англ. deep neural network (DNN))<ref>[https://en.wikipedia.org/wiki/Deep_learning#Deep_neural_networks Deep neural networks , Wikipedia]</ref><br />
<br />
== Применения ==<br />
* Распознавание речи<br />
* Компьютерное зрение<br />
* Обработка визуальных изображений<br />
* Обработка естественного языка<br />
* Обнаружение новых лекарственных препаратов<br />
* Рекомендательные системы<br />
* Предсказание генномных онтологий в биоинформатике<br />
<br />
== Sigmoid function ==<br />
...<br />
<br />
== Rectified Linear Units (ReLU) ==<br />
...<br />
<br />
== См. также ==<br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Нейронные_сети,_перцептрон Нейронные сети, перцептрон]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Сверточные_нейронные_сети Сверточные нейронные сети]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Рекуррентные_нейронные_сети Рекуррентные нейронные сети ]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Задача_нахождения_объектов_на_изображении Задача нахождения объектов на изображении]<sup>[на 06.12.18 не создан]</sup><br />
* [http://neerc.ifmo.ru/wiki/index.php?title=Обучение_с_подкреплением Обучение с подкреплением ]<sup>[на 06.12.18 не создан]</sup><br />
<br />
== Примечания ==<br />
<references/><br />
<br />
== Источники информации ==<br />
* [https://en.wikipedia.org/wiki/Deep_learning Deep learning, Wikipedia]<br />
* [https://ru.wikipedia.org/wiki/Глубокое_обучение Глубокое обучение, Wikipedia]</div>80.76.244.114http://neerc.ifmo.ru/wiki/index.php?title=%D0%93%D0%BB%D1%83%D0%B1%D0%BE%D0%BA%D0%BE%D0%B5_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5&diff=67505Глубокое обучение2018-12-04T18:06:28Z<p>80.76.244.114: /* Нейронные сети */ Заполнить раздел</p>
<hr />
<div>'''Глубокое обучение''' (англ. deep learning) {{---}} совокупность широкого семейства методов машинного обучения, основанных на обучении представлениям, а не специализированным алгоритмам под конкретные задачи. Глубокое обучение может быть с учителем, с частичным привлечением учителя, без учителя и с подкреплением. Несмотря на то, что данный раздел машинного обучения появился еще в 1980х, до недавнего времени его применение было сильно ограничено из-за недостака вычислительных мощностей существовавших компьютеров. Ситуация изменилась только в середине 2000х.<br />
<br />
На создание моделей глубокого обучения оказали влияние некоторые процессы и паттерны, происходящие в биологических нейронных системах. Несмотря на это, данные модели имеют множество различий от биологического мозга (и в структуре и в функциях), что делает невозможным использование теорем и доказательств, применяющихся нейробиологии.<br />
<br />
== История ==<br />
Термин «глубокое обучение» появился в научном сообществе машинного обучения в 1986 году в работе израильско-американского ученой Рины Дехтер «Learning While Searching in Constraint-Satisfaction-Problems»<ref>[https://www.researchgate.net/publication/221605378_Learning_While_Searching_in_Constraint-Satisfaction-Problems Learning While Searching in Constraint-Satisfaction-Problems]</ref>. Стоит отметить, что первый общий рабочий алгоритм для глубоких многослойных перцептронов прямого распространения был опубликован в книге советских учёных Алексея Григорьевича Ивахненко и Валентина Григорьевича Лапы «Кибернетические предсказывающие устройства».<br />
<br />
Многие архитектуры глубокого обучения появились с искусственной нейронной сети Neocognitron<ref>[https://en.wikipedia.org/wiki/Neocognitron Neocognitron, Wikipedia]</ref>, представленной в 1980 году Кунихикой Фукусимой. Особенное влияние данная сеть оказала на архитектуры, использующиеся для компьютерного зрения. В 1989 году Яну Лекуну удалось использовать алгоритм обратного распространения ошибки для обучения глубоких нейросетей для решения задачи распознавания рукописных ZIP-кодов<ref>[https://www.ics.uci.edu/~welling/teaching/273ASpring09/lecun-89e.pdf Backpropagation Applied to Handwritten Zip Code Recognition]</ref>. Хотя алгоритм работал, на его обучение потребовалось 3 дня, что существенно ограничевало применимость данного метода. Из-за низкой скоростя обучения нейронные сети в 1990-х годах уступили место методу опорных векторов.<br />
<br />
Популярность глубокое обучение приобрело в середине 2000-х годов. Этому способстовали несколько факторов: <br />
* появились более мощные компьютеры, способные обучать большие нейронные сети;<br />
* появились новые датасеты, достаточные по объёму, чтобы обучение больших сетей имело смысл;<br />
* произошли существенные продвижения в теории искусственных нейронных сетей. В появихшихся статьях авторы показали, что можно эффективно предобучать многослойную нейронную сеть, если обучать каждый слой отдельно при помощи ограниченной машины Больцмана, а затем дообучать при помощи метода обратного распространения ошибки;<br />
* технология привлекли внимание крупных медиа, — первым из мировых СМИ об этом написал The New York Times.<br />
<br />
== Определение == <br />
'''Глубокое обучение''' {{---}} это класс алгоритмов машинного обучения, который:<br />
<br />
* использует многослойную систему нелинейных фильтров для извлечения признаков с преобразованиями. Каждый последующий слой получает на входе выходные данные предыдущего слоя. <br />
* может сочетать алгоритмы обучения с учителем (пример {{---}} классификация) и без учителя (пример {{---}} анализ образца).<br />
* формирует в процессе обучения слои выявления признаков на нескольких уровнях представлений, которые соответствуют различным уровням абстракции; При этом признаки организованы иерархически - признаки более высокого уровня являются производными от признаков более низкого уровня.<br />
<br />
== Нейронные сети ==<br />
* Искусственные нейронные сети (англ. artificial neural networks (ANN))<ref>[https://en.wikipedia.org/wiki/Artificial_neural_network Artificial neural network, Wikipedia]</ref><br />
* Глубокие нейронные сети (англ. deep neural network (DNN))<ref>[https://en.wikipedia.org/wiki/Deep_learning#Deep_neural_networks Deep neural networks , Wikipedia]</ref><br />
<br />
== Применения ==<br />
* Распознавание речи<br />
* Компьютерное зрение<br />
* Обработка визуальных изображений<br />
* Обработка естественного языка<br />
* Обнаружение новых лекарственных препаратов<br />
* Рекомендательные системы<br />
* Предсказание генномных онтологий в биоинформатике<br />
<br />
== Sigmoid function ==<br />
...<br />
<br />
== Rectified Linear Units (ReLU) ==<br />
...<br />
<br />
== См. также ==<br />
...<br />
<br />
== Примечания ==<br />
<references/><br />
<br />
== Источники информации ==<br />
* [https://en.wikipedia.org/wiki/Deep_learning Deep learning, Wikipedia]<br />
* [https://ru.wikipedia.org/wiki/Глубокое_обучение Глубокое обучение, Wikipedia]</div>80.76.244.114http://neerc.ifmo.ru/wiki/index.php?title=%D0%93%D0%BB%D1%83%D0%B1%D0%BE%D0%BA%D0%BE%D0%B5_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5&diff=67504Глубокое обучение2018-12-04T18:00:55Z<p>80.76.244.114: Добавить применения</p>
<hr />
<div>'''Глубокое обучение''' (англ. deep learning) {{---}} совокупность широкого семейства методов машинного обучения, основанных на обучении представлениям, а не специализированным алгоритмам под конкретные задачи. Глубокое обучение может быть с учителем, с частичным привлечением учителя, без учителя и с подкреплением. Несмотря на то, что данный раздел машинного обучения появился еще в 1980х, до недавнего времени его применение было сильно ограничено из-за недостака вычислительных мощностей существовавших компьютеров. Ситуация изменилась только в середине 2000х.<br />
<br />
На создание моделей глубокого обучения оказали влияние некоторые процессы и паттерны, происходящие в биологических нейронных системах. Несмотря на это, данные модели имеют множество различий от биологического мозга (и в структуре и в функциях), что делает невозможным использование теорем и доказательств, применяющихся нейробиологии.<br />
<br />
== История ==<br />
Термин «глубокое обучение» появился в научном сообществе машинного обучения в 1986 году в работе израильско-американского ученой Рины Дехтер «Learning While Searching in Constraint-Satisfaction-Problems»<ref>[https://www.researchgate.net/publication/221605378_Learning_While_Searching_in_Constraint-Satisfaction-Problems Learning While Searching in Constraint-Satisfaction-Problems]</ref>. Стоит отметить, что первый общий рабочий алгоритм для глубоких многослойных перцептронов прямого распространения был опубликован в книге советских учёных Алексея Григорьевича Ивахненко и Валентина Григорьевича Лапы «Кибернетические предсказывающие устройства».<br />
<br />
Многие архитектуры глубокого обучения появились с искусственной нейронной сети Neocognitron<ref>[https://en.wikipedia.org/wiki/Neocognitron Neocognitron, Wikipedia]</ref>, представленной в 1980 году Кунихикой Фукусимой. Особенное влияние данная сеть оказала на архитектуры, использующиеся для компьютерного зрения. В 1989 году Яну Лекуну удалось использовать алгоритм обратного распространения ошибки для обучения глубоких нейросетей для решения задачи распознавания рукописных ZIP-кодов<ref>[https://www.ics.uci.edu/~welling/teaching/273ASpring09/lecun-89e.pdf Backpropagation Applied to Handwritten Zip Code Recognition]</ref>. Хотя алгоритм работал, на его обучение потребовалось 3 дня, что существенно ограничевало применимость данного метода. Из-за низкой скоростя обучения нейронные сети в 1990-х годах уступили место методу опорных векторов.<br />
<br />
Популярность глубокое обучение приобрело в середине 2000-х годов. Этому способстовали несколько факторов: <br />
* появились более мощные компьютеры, способные обучать большие нейронные сети;<br />
* появились новые датасеты, достаточные по объёму, чтобы обучение больших сетей имело смысл;<br />
* произошли существенные продвижения в теории искусственных нейронных сетей. В появихшихся статьях авторы показали, что можно эффективно предобучать многослойную нейронную сеть, если обучать каждый слой отдельно при помощи ограниченной машины Больцмана, а затем дообучать при помощи метода обратного распространения ошибки;<br />
* технология привлекли внимание крупных медиа, — первым из мировых СМИ об этом написал The New York Times.<br />
<br />
== Определение == <br />
'''Глубокое обучение''' {{---}} это класс алгоритмов машинного обучения, который:<br />
<br />
* использует многослойную систему нелинейных фильтров для извлечения признаков с преобразованиями. Каждый последующий слой получает на входе выходные данные предыдущего слоя. <br />
* может сочетать алгоритмы обучения с учителем (пример {{---}} классификация) и без учителя (пример {{---}} анализ образца).<br />
* формирует в процессе обучения слои выявления признаков на нескольких уровнях представлений, которые соответствуют различным уровням абстракции; При этом признаки организованы иерархически - признаки более высокого уровня являются производными от признаков более низкого уровня.<br />
<br />
== Разделы ==<br />
...<br />
<br />
== Применения ==<br />
* Распознавание речи<br />
* Компьютерное зрение<br />
* Обработка визуальных изображений<br />
* Обработка естественного языка<br />
* Обнаружение новых лекарственных препаратов<br />
* Рекомендательные системы<br />
* Предсказание генномных онтологий в биоинформатике<br />
<br />
== Sigmoid function ==<br />
...<br />
<br />
== Rectified Linear Units (ReLU) ==<br />
...<br />
<br />
== См. также ==<br />
...<br />
<br />
== Примечания ==<br />
<references/><br />
<br />
== Источники информации ==<br />
* [https://en.wikipedia.org/wiki/Deep_learning Deep learning, Wikipedia]<br />
* [https://ru.wikipedia.org/wiki/Глубокое_обучение Глубокое обучение, Wikipedia]</div>80.76.244.114http://neerc.ifmo.ru/wiki/index.php?title=%D0%93%D0%BB%D1%83%D0%B1%D0%BE%D0%BA%D0%BE%D0%B5_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5&diff=67503Глубокое обучение2018-12-04T17:51:48Z<p>80.76.244.114: /* Определение */ Сделать раздел</p>
<hr />
<div>'''Глубокое обучение''' (англ. deep learning) {{---}} совокупность широкого семейства методов машинного обучения, основанных на обучении представлениям, а не специализированным алгоритмам под конкретные задачи. Глубокое обучение может быть с учителем, с частичным привлечением учителя, без учителя и с подкреплением. Несмотря на то, что данный раздел машинного обучения появился еще в 1980х, до недавнего времени его применение было сильно ограничено из-за недостака вычислительных мощностей существовавших компьютеров. Ситуация изменилась только в середине 2000х.<br />
<br />
На создание моделей глубокого обучения оказали влияние некоторые процессы и паттерны, происходящие в биологических нейронных системах. Несмотря на это, данные модели имеют множество различий от биологического мозга (и в структуре и в функциях), что делает невозможным использование теорем и доказательств, применяющихся нейробиологии.<br />
<br />
== История ==<br />
Термин «глубокое обучение» появился в научном сообществе машинного обучения в 1986 году в работе израильско-американского ученой Рины Дехтер «Learning While Searching in Constraint-Satisfaction-Problems»<ref>[https://www.researchgate.net/publication/221605378_Learning_While_Searching_in_Constraint-Satisfaction-Problems Learning While Searching in Constraint-Satisfaction-Problems]</ref>. Стоит отметить, что первый общий рабочий алгоритм для глубоких многослойных перцептронов прямого распространения был опубликован в книге советских учёных Алексея Григорьевича Ивахненко и Валентина Григорьевича Лапы «Кибернетические предсказывающие устройства».<br />
<br />
Многие архитектуры глубокого обучения появились с искусственной нейронной сети Neocognitron<ref>[https://en.wikipedia.org/wiki/Neocognitron Neocognitron, Wikipedia]</ref>, представленной в 1980 году Кунихикой Фукусимой. Особенное влияние данная сеть оказала на архитектуры, использующиеся для компьютерного зрения. В 1989 году Яну Лекуну удалось использовать алгоритм обратного распространения ошибки для обучения глубоких нейросетей для решения задачи распознавания рукописных ZIP-кодов<ref>[https://www.ics.uci.edu/~welling/teaching/273ASpring09/lecun-89e.pdf Backpropagation Applied to Handwritten Zip Code Recognition]</ref>. Хотя алгоритм работал, на его обучение потребовалось 3 дня, что существенно ограничевало применимость данного метода. Из-за низкой скоростя обучения нейронные сети в 1990-х годах уступили место методу опорных векторов.<br />
<br />
Популярность глубокое обучение приобрело в середине 2000-х годов. Этому способстовали несколько факторов: <br />
* появились более мощные компьютеры, способные обучать большие нейронные сети;<br />
* появились новые датасеты, достаточные по объёму, чтобы обучение больших сетей имело смысл;<br />
* произошли существенные продвижения в теории искусственных нейронных сетей. В появихшихся статьях авторы показали, что можно эффективно предобучать многослойную нейронную сеть, если обучать каждый слой отдельно при помощи ограниченной машины Больцмана, а затем дообучать при помощи метода обратного распространения ошибки;<br />
* технология привлекли внимание крупных медиа, — первым из мировых СМИ об этом написал The New York Times.<br />
<br />
== Определение == <br />
'''Глубокое обучение''' {{---}} это класс алгоритмов машинного обучения, который:<br />
<br />
* использует многослойную систему нелинейных фильтров для извлечения признаков с преобразованиями. Каждый последующий слой получает на входе выходные данные предыдущего слоя. <br />
* может сочетать алгоритмы обучения с учителем (пример {{---}} классификация) и без учителя (пример {{---}} анализ образца).<br />
* формирует в процессе обучения слои выявления признаков на нескольких уровнях представлений, которые соответствуют различным уровням абстракции; При этом признаки организованы иерархически - признаки более высокого уровня являются производными от признаков более низкого уровня.<br />
<br />
== Разделы ==<br />
...<br />
<br />
== Задачи ==<br />
...<br />
<br />
== Sigmoid function ==<br />
...<br />
<br />
== Rectified Linear Units (ReLU) ==<br />
...<br />
<br />
== См. также ==<br />
...<br />
<br />
== Примечания ==<br />
<references/><br />
<br />
== Источники информации ==<br />
* [https://en.wikipedia.org/wiki/Deep_learning Deep learning, Wikipedia]<br />
* [https://ru.wikipedia.org/wiki/Глубокое_обучение Глубокое обучение, Wikipedia]</div>80.76.244.114http://neerc.ifmo.ru/wiki/index.php?title=%D0%93%D0%BB%D1%83%D0%B1%D0%BE%D0%BA%D0%BE%D0%B5_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5&diff=67500Глубокое обучение2018-12-04T16:53:56Z<p>80.76.244.114: /* Источники информации */</p>
<hr />
<div>'''Глубокое обучение''' (англ. deep learning) {{---}} совокупность широкого семейства методов машинного обучения, основанных на обучении представлениям, а не специализированным алгоритмам под конкретные задачи. Глубокое обучение может быть с учителем, с частичным привлечением учителя, без учителя и с подкреплением. Несмотря на то, что данный раздел машинного обучения появился еще в 1980х, до недавнего времени его применение было сильно ограничено из-за недостака вычислительных мощностей существовавших компьютеров. Ситуация изменилась только в середине 2000х.<br />
<br />
На создание моделей глубокого обучения оказали влияние некоторые процессы и паттерны, происходящие в биологических нейронных системах. Несмотря на это, данные модели имеют множество различий от биологического мозга (и в структуре и в функциях), что делает невозможным использование теорем и доказательств, применяющихся нейробиологии.<br />
<br />
== История ==<br />
...<br />
<br />
== Разделы ==<br />
...<br />
<br />
== Задачи ==<br />
...<br />
<br />
== Sigmoid function ==<br />
...<br />
<br />
== Rectified Linear Units (ReLU) ==<br />
...<br />
<br />
== См. также ==<br />
...<br />
<br />
== Примечания ==<br />
<references/><br />
<br />
== Источники информации ==<br />
* [https://en.wikipedia.org/wiki/Deep_learning Deep learning, Wikipedia]<br />
* [https://ru.wikipedia.org/wiki/Глубокое_обучение Глубокое обучение, Wikipedia]</div>80.76.244.114http://neerc.ifmo.ru/wiki/index.php?title=%D0%93%D0%BB%D1%83%D0%B1%D0%BE%D0%BA%D0%BE%D0%B5_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5&diff=67499Глубокое обучение2018-12-04T16:53:33Z<p>80.76.244.114: Добавить источники информции</p>
<hr />
<div>'''Глубокое обучение''' (англ. deep learning) {{---}} совокупность широкого семейства методов машинного обучения, основанных на обучении представлениям, а не специализированным алгоритмам под конкретные задачи. Глубокое обучение может быть с учителем, с частичным привлечением учителя, без учителя и с подкреплением. Несмотря на то, что данный раздел машинного обучения появился еще в 1980х, до недавнего времени его применение было сильно ограничено из-за недостака вычислительных мощностей существовавших компьютеров. Ситуация изменилась только в середине 2000х.<br />
<br />
На создание моделей глубокого обучения оказали влияние некоторые процессы и паттерны, происходящие в биологических нейронных системах. Несмотря на это, данные модели имеют множество различий от биологического мозга (и в структуре и в функциях), что делает невозможным использование теорем и доказательств, применяющихся нейробиологии.<br />
<br />
== История ==<br />
...<br />
<br />
== Разделы ==<br />
...<br />
<br />
== Задачи ==<br />
...<br />
<br />
== Sigmoid function ==<br />
...<br />
<br />
== Rectified Linear Units (ReLU) ==<br />
...<br />
<br />
== См. также ==<br />
...<br />
<br />
== Примечания ==<br />
<references/><br />
<br />
== Источники информации ==<br />
* [https://en.wikipedia.org/wiki/Deep_learning Deep learning, Wikipedia]<br />
* [https://en.wikipedia.org/wiki/Глубокое_обучение Глубокое обучение, Wikipedia]</div>80.76.244.114