GPT и BERT

 

 

 

Machine Learning

 

Главные достижения в области обработки естественного языка в 2017 году
https://habr.com/ru/company/mipt/blog/347524/
Автор оригинала: Valentin Malykh
https://medium.com/@madrugado/advances-in-nlp-in-2017-b00e927fcc57
 

Главные достижения в области обработки естественного языка в 2017 году
Автор оригинала: Valentin Malykh
Блог компании Московский физико-технический институт (МФТИ),
Блог компании Open Data Science,
Data Mining,
Математика,
Машинное обучение
Перевод
Всем привет. Сразу поделим аудиторию на две части — тех, кто любит смотреть видео, и тех, кто, как я, лучше воспринимает тексты. Чтобы не томить первых, запись моего выступления на Дата-Ёлке:




Там есть все основные моменты, но формат выступления не предполагает подробного рассмотрения статей. Любители ссылок и подробных разборов, добро пожаловать под кат.


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


Тренды

В 2017-ом году в развитии нашей области (обработки естественного языка, NLP) я выделяю две основных тенденции:


ускорение и параллелизация — все модели стремятся ускорить, в том числе за счет большей параллельности;
обучение без учителя — подходы с обучением без учителя уже давно популярны в машинном зрении, но относительно редки в NLP  (в качестве редкого, но яркого примера использования этих идей можно привести, пожалуй, word2vec); в этом году использование таких подходов стало весьма популярно.

Теперь разберем подробнее главные идеи этого года.


Attention Is All You Need

image
Эта уже известная работа знаменует собой второе пришествие полносвязных сетей в область NLP. Её авторами являются сотрудники компании Google (кстати, один из авторов, Илья Полосухин, будет выступать на нашем хакатоне DeepHack.Babel). Идея, лежащая в основе архитектуры Transformer (именно она изображена на картинке), проста, как все гениальное: давайте забудем о рекуррентности и всяком таком и просто используем внимание (attention), чтобы добиться результата.


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


И вот Transformer — архитектура для машинного перевода, не имеющая никакой рекуррентности. И только внимание, которое делает всю работу.


image


Давайте сначала вспомним, как выглядит стандартный подход к вниманию, предложенный Дмитрием Богдановым (Dzmitry Bahdanau).


image


Идея механизма внимания в том, что мы должны сфокусироваться на некотором релевантном входе в кодировщик (encoder), чтобы произвести лучшее декодирование. В самом простом случае, релевантность определяется как похожесть каждого входа к текущему выходу. Эта похожесть определяется в свою очередь, как сумма входов с весами, где веса суммируются в 1, и наибольший вес соответствует наиболее релевантному входу.


На картинке выше представлен классический подход авторства Дмитрия Богданова: у нас есть один набор входов — скрытое состояние кодировщика (h), а также набор коэффициентов для этих входов (а). Эти коэффициенты рассчитываются каждый раз, на основании некоторого другого входа, отличного от скрытых состояний.


В отличие от классического подхода, авторы этой работы предложили так называемый self-attention на входных данных. Слово "self" в данном случае означает, что внимание применяется к к тем же данным, на которых оно вычисляется. В то же время в классическом подходе внимание вычисляется по некоторому дополнительному входу относительно тех данных, к которым оно применяется.


Более того, этот self-attention называется Multi-Head, т.к. выполняет одну операцию несколько раз в параллель. Эта особенность может напомнить сверточные фильтры, т.к. каждая из "голов" смотрит на разные места входной последовательности. Другая важная особенность — это то, что в это варианте внимание принимает на вход три сущности, а не две, как в стандартном подходе. Как можно увидеть на картинке выше, сначала вычисляется "sub-attention" на входах Q (запрос) и K (ключ), а потом выход sub-attention комбинируется с V (значение) из входа. Эта особенность отсылает нас к понятию памяти, разновидностью которой и является механизм внимания.


Помимо самого важного, есть еще две существенные особенности:


кодирование позиции (positional encoding),
маскированное внимание для декодировщика (masked attention).

Positional encoding  — как мы помним, вся архитектура модели является полносвязной сетью, так что само понятие последовательности внутрь сети не заложено. Чтобы добавить знание о существовании последовательностей, был предложен positional encoding. Как по мне, использование тригонометрических функций (sin и cos), которыми и создается positional encoding, представляется совершенно неочевидным выбором, но это работает: вектор position encoding, скомбинированный с вектором слова (например, с упомянутым выше word2vec), доставляет знания о значении слова и его относительной позиции в последовательности в сеть.


Маскированное внимание — простая, но важная особенность: опять же, т.к. в сети нет понятия о последовательностях, нам нужно каким-то образом отфильтровать представления сети о следующих словах, которые недоступны во время декодирования. Так что, как можно заметить на картинке, мы вставляем маску, которая "закрывает" слова, которых сеть еще не должна видеть.  


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


Parallel Decoder for Neural Machine Translation

Последняя из описанных особенностей архитектуры не устраивала авторов следующей работы, сотрудников группы Ричарда Сохера (Richard Socher) из Salesforce Research (кстати, один из сотрудников, Ромэн Полюс (Romain Paulus), автор другой известной работы про суммаризацию, также будет выступать на нашем хакатоне DeepHack.Babel). Маскированное внимание для декодировщика было для них недостаточно быстрым, по сравнению быстрым параллельным кодировщиком, так что они решили сделать следующий шаг: "Почему бы не сделать параллельный декодировщик, если у нас есть уже параллельный кодировщик?" Это мое предположение, но готов ручаться, что авторы этой работы имели какие-то похожие мысли в головах. И они нашли способ осуществить задуманное.


image


Они назвали это Non-Autoregressive Decoding, всю архитектуру Non-Autoregressive Transformer, что означает, что теперь ни одно слово не зависело от другого при декодировании. Это некоторое преувеличение, но не такое и большое. Идея в том, что кодировщик здесь дополнительно выдет так называемый уровень фертильности (fertility rate) для каждого входного слова. Этот уровень фертильности используется, чтобы сгенерировать собственно перевод для каждого слова, основываясь только на самом слове. На это можно посмотреть, как на некий аналог стандартной матрицы соответствий в машинном переводе (alignment matrix):


image


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


Итак, у нас есть уровень фертильности, но этого недостаточно для полностью параллельного декодирования. Вы можете заметить на картинке несколько дополнительных уровней внимания — позиционное внимание (которое соотносится с positional encoding) и inter-attention (которое заменило маскированное внимание из оригинальной работы).


К сожалению, давая серьезный прирост в скорости (в 8 раз в некоторых случаях), Non-Autoregressive Decoder дает качество на несколько единиц BLEU хуже оригинала. Но это повод, чтобы искать пути улучшения!


Unsupervised Machine Translation

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


Unsupervised Neural Machine Translation
Unsupervised Machine Translation Using Monolingual Corpora Only
Style-Transfer from Non-Parallel Text by Cross-Alignment

Последняя работа, если судить по названию, лишняя в этом ряду, но как говорится, первое впечатление обманчиво. Все три работы имеют общую идею в основе. В двух словах она может быть изложена так: у нас есть два автокодировщика для двух разных текстовых источников (например, разных языков, или текстов разных стилей), и мы просто меняем местами декодирующие части этих автокодировщиков. Как это работает? Давайте попробуем разобраться.
image


Автокодировщик (слева на картинке выше) — это кодировщик-декодировщик (encoder-decoder), где декодировщик декодирует обратно в оригинальное пространство. Это значит, что вход и выход принадлежат к одному языку (или стилю). Таким образом, мы имеем некоторый текст и тренируем кодировщик делать векторное представление этого текста таким образом, чтобы декодировщик смог реконструировать оригинальное предложение. В идеальном случае реконструированное предложение будет в точности таким же. Но в большинстве случаем это не так, и нам нужно как-то измерять похожесть исходного и реконструированного предложений. И для машинного перевода такая мера была придумана. Это стандартная сейчас метрика, которая называется BLEU.


BLEU  — эта метрика измеряет, как много слов и n-грамм (n последовательных слов) перекрываются между данным переводом и некоторым референсным, заранее известным переводом. Наиболее часто используется версия BLUE, которая называется BLUE-4, которая работает со словами и словосочетаниями длины от 2 до 4. Дополнительно вводится штраф за слишком короткий перевод (относительно референсного).

Как вы могли догадаться, эта метрика не дифференцируема, так что нам нужен какой-то другой способ тренировать наш переводчик. Для автокодировщика это может быть стандартная кросс-энтропия, но этого недостаточно для перевода. Пока опустим это и продолжим.


ОК, сейчас у нас есть способ построить наш автокодировщик. Следующее, что мы должны сделать, — это натренировать их пару: один для языка-источника (стиля) и другой для целевого языка. И еще нам нужно их скрестить, чтобы декодировщик целевого языка мог "восстанавливать" закодированные строки языка-источника, и наоборот, что в данном случае все равно.


image


Сейчас будет самое сложное для понимания: в автокодировщике (или любом другом кодировщике-декодировщике) посередине есть так называемое скрытое представление — вектор из некоторого пространства высокой размерности. Если мы хотим, чтобы два автокодировщика были совместимы (в том смысле, который нам нужен), мы должны добиться того, чтобы скрытые представление были из одного пространства. Как этого достичь? С помощью добавления дополнительного штрафа для этих автокодировщиков. Этот штраф назначается дискриминатором, который отсылает нас к концепции GAN.


GAN  — Generative Adversarial Network. Идея GAN может быть выражена, как "сеть играет сама с собой и пытается саму себя обмануть". В архитектуре GAN выделяется три главных компонента: генератор — он производит представления, которые должны как можно сильнее быть похожи на настоящие, Golden Source — выдает настоящие представления, и дискриминатор — он должен отличить от кого ему пришел вход, от генератора или Golden Source; генератор наказывается, если дискриминатор может это угадать. Но верно и обратное — дискриминатор наказывается, если он угадать не может. Таким образом они тренируются совместно в соревновании между собой.

В нашем случае дискриминатор (L_adv на картинке) должен сказать, откуда к нему пришел вход — из языка-источника или целевого языка. На картинке выше изображены два автокодировщика в виде отдельных блоков — кодировщиков и декодировщиков. В середине между ними есть связь, где и расположен дискриминатор. Тренируя два автокодировщика с таким дополнительным штрафом, мы вынуждаем модель делать скрытые представления для обоих автокодировщиков похожими (верхняя часть картинки), а дальше уже все ясно — просто заменим оригинальный декодировщик его аналог из другого автокодировщика (нижняя часть картинки) и вуаля — наша модель может переводить!


Все три упомянутые в этом разделе работы имеют эту идею в своей основе, конечно, со своими особенностями. Пояснение выше большей частью основывается на работе Unsupervised Machine Translation Using Monolingual Corpora Only, так что я должен упомянуть предыдущую работу этих авторов, тем более, что ее результаты используются в обсуждаемой работе выше:


Word Translation Without Parallel Data

Идея этой работы, также проста, как все гениальное:
image
Скажем, у нас есть векторные представления для слов двух разных языков. (Предположим, что мы работаем с текстами из одного домена, например, новостями или художественной литературой.) Мы можем достаточно обоснованно предполагать, что словари для этих языков будут весьма близки: для большинства слов из корпуса-источника мы сможем найти соответствия словам целевого корпуса — например, слова, обозначающие понятия, президент, экология и налоги наверняка будут в новостных корпусах на обоих языках. Так почему бы просто не связать такие слова между собой и натянуть одно векторное пространство на другое? Собственно, так они и сделали. Нашли такую функцию, которая преобразует векторные пространства и накладывает точки одного (слова) на точки другого. В этой работе авторы показали, что это можно сделать без учителя, что означает, что им не нужен словарь как таковой.


Работа Style-Transfer from Non-Parallel Text by Cross-Alignment помещена в этой секции, т.к. языки могут быть рассмотрены, как разные стили текста, и авторы сами упоминают про это в своей работе. Также эта работа интересна, т.к. к ней доступна реализация.


Controllable Text Generation

Эта секция близка по духу к предыдущей, но все-таки достаточно существенно отличается. Работы, которые тут будут рассмотрены:


Style Transfer in Text: Exploration and Evaluation
Toward Controlled Generation of Text

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


Здесь мы снова видим автокодировщик на тексте, но у него есть особенность: скрытое представление (которое здесь отвечает за смысл) дополнительно обогащено специальными признаками. Эти признаки кодируют специфические свойства текста, такие как тональность или грамматическое время.


На картинке также можно заметить дискриминатор в дополнение к автокодировщику. Дискриминаторов может быть даже больше одного, если мы хотим кодировать больше специфических свойств. В итоге, у нас есть сложная функция потерь — reconstruction loss от автокодировщика и дополнительный штраф для специфических свойств текста. Таким образом, reconstruction loss здесь отвечает только и исключительно за смысл предложения, без других свойств.


Simple Recurrent Unit

Последняя, но от этого не менее важная секция. Она также посвящена скорости вычислений. Несмотря на то, что в начале статьи мы обсуждали потрясение основ в виде возвращения полносвязных сетей, тем не менее все современные системы в NLP работают на рекуррентных сетях. А все знают, что RNN гораздо медленнее CNN. Или нет? Чтобы ответить на этот вопрос, давайт рассмотрим следующую статью:


Training RNNs as Fast as CNNs

Я думаю, что авторы этой работы пытались ответить на вопрос: почему же RNN такие медленные? Что их делает такими? И они нашли ключ к решению: RNN — последовательны по своей природе. Но что если можно оставить только небольшой кусочек этой последовательной природы, а все остальное делать параллельно? Давайте предположим, что (почти) все не зависит от своего предыдущего состояния. Тогда мы сможем обрабатывать всю последовательность входов параллельно. Так что задача состоит в том, чтобы выкинуть все ненужные зависимости от предыдущих состояний. И вот к чему это привело:
image
Как вы видите, только два последних уравнения зависят от предыдущего состояния. И в этих двух уравнениях мы работаем с векторами, а не матрицами. А все тяжелые вычисления могут быть сделаны независимо и параллельно. И потом мы просто делаем немного перемножений, чтобы обработать данные последовательно. Такая постановка показала прекрасные результаты, смотрите сами:
image


Скорость Simple Recurrent Unit (SRU) почти такая же, как у CNN!


Заключение

В 2017-ом году в нашей области появились новые сильные игроки, такие как Transformer, и были сделаны прорывы, как работающий машинный перевод без учителя, но и старички не сдаются — SRU еще постоят за честь RNN в этой схватке. Так что я смотрю в 2018-ый с надеждой на новые прорывы, которых я еще не могу представить.

 

 

 

ELMo

 

Справа расположен непосредственный предшественник BERT — модель  ELMo от Allen AI

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

 

BERT, ELMO и Ко в картинках (как в NLP пришло трансферное обучение)

https://habr.com/ru/post/487358/
Автор оригинала: Jay Alammar
https://jalammar.github.io/illustrated-bert/

 

 

 

Коллеги из OpenAI решили, что можно сделать лучше. И нужно для этого всего лишь применить представленную за год до этого Google архитектуру Transformer к этой задаче. Полагаю, что за истекшие с тех пор 2,5 года все желающие уже успели с этой архитектурой познакомиться, поэтому не буду останавливаться на ней подробно. Желающих причаститься отсылаю к своему обзору от 2017-ого года.

 

 

 

RoBERTa, DistilBERT, XLNet

 

Было представлено несколько методов улучшения BERT либо по его метрикам прогнозирования, либо по скорости вычислений.
XLNet и RoBERTa улучшают производительность,
в то время как DistilBERT улучшает скорость вывода.

Приведенная ниже таблица сравнивает их с тем, что они собой представляют!
* расчетное время GPU (первоначальное время обучения составляло 4 дня с использованием 4 модулей TPU)
** использует более крупные мини-партии, скорости обучения и размеры шагов для более длительного обучения наряду с различиями в процедуре маскировки.
*** Номера, указанные в первоначальных публикациях, если не указано иное.
 

XLNet-это большой двунаправленный трансформатор, который использует улучшенную методологию обучения, большие данные и большую вычислительную мощность для достижения лучших, чем у Bert, показателей прогнозирования на 20 языковых задачах.
Чтобы улучшить обучение, XLNet вводит моделирование языка перестановок, где все токены предсказываются, но в случайном порядке. Это отличается от модели языка в маске Берта, где предсказываются только маркеры в маске (15%). Это также контрастирует с традиционными языковыми моделями, где все токены были предсказаны в < wbr>последовательном порядке<wbr > вместо < wbr > случайного порядка. Это помогает модели изучать двунаправленные отношения и, следовательно, лучше обрабатывать зависимости и отношения между словами. Кроме того, в качестве базовой архитектуры был использован Transformer XL, который показал хорошую производительность даже при отсутствии обучения на основе перестановок.
XLNet был обучен с более чем 130 Гб текстовых данных и 512 чипов TPU работает в течение 2,5 дней, оба из которых ar e гораздо больше, чем BERT.
RoBERTa. < wbr> введенный на Facebook, Робастно оптимизированный подход к Bert RoBERTa, переподготовка BERT с улучшенной методологией обучения, 1000% больше данных и вычислительной мощности.
Для улучшения процедуры обучения Роберта удаляет задачу прогнозирования следующего предложения (NSP) из предварительной подготовки Берта и вводит динамическую маскировку, чтобы маскируемый маркер менялся в течение периодов обучения. Было также установлено, что более полезными в процессе обучения являются более крупные размеры серийного обучения.
Важно отметить, что Роберта использует 160 ГБ текста для предварительной подготовки, включая 16 ГБ корпуса книг и английской Википедии, используемой в Берте. Дополнительные данные включали CommonCrawl News dataset (63 миллиона статей, 76 ГБ), корпус веб-текстов (38 ГБ) и истории из Common Crawl (31 ГБ). Это вкупе с колоссальными 1024 графическими процессорами V100 Tesla, работающими в течение дня, привело к предварительной подготовке Роберты.

Дистилберт изучает дистиллированную ( приблизительную) версию BERT, сохраняя производительность 97%, но используя только половину числа параметров (бумага). В частности, он не имеет вложений типа токенов, пулера и сохраняет только половину слоев от BERT Google. Дистилберт использует метод, называемый дистилляцией, который аппроксимирует Берт Google, то есть большую нейронную сеть, меньшей. Идея состоит в том, что после обучения большой нейронной сети ее полные выходные распределения могут быть аппроксимированы с помощью меньшей сети. Это в некотором смысле похоже на апостериорное приближение. Одной из ключевых оптимизационных функций, используемых для апостериорной аппроксимации в Байесовской статистике, является дивергенция Кульбака Лейбера, которая, естественно, использовалась и здесь.

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

Большинство улучшений производительности (включая саму BERT!) происходит либо за счет увеличения объема данных, вычислительной мощности, либо за счет обучения. Хотя они действительно имеют свою собственную ценность — они, как правило, делают компромисс между вычислительными и прогнозными метриками. Необходимы фундаментальные улучшения, которые могут повысить производительность при меньшем использовании данных и вычислительных ресурсов.
дел искусственного интеллекта, моделирующих алгоритмы обучения (оптимизации) искусственных нейронных сетей на выявление закономерностей в данных.

 

 

Т5

Сводка преобразователя текста в текст - T5

Краткий обзор трансформера Google T5

Основной подход, лежащий в основе преобразователя передачи текста в текст, состоит в том, чтобы рассматривать каждую проблему НЛП как подход ТЕКСТ-ТЕКСТ, аналогичный модели последовательности-последовательности.

Текст-текстовая структура:

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

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

Интересно, что T5 также выполняет задачу регрессии сходства двух предложений в текстовой структуре. Они представили это как проблему классификации с 21 классом (от 1 до 5 с шагом 0,2, например: «1,0», «1,2», «1,4» …… «5,0») и попросили модель предсказать строку, и T5 дал результаты SOTA к этой задаче тоже.

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

Предварительная подготовка и тонкая настройка T5:

В) Что нового в Т5?

Ans) ничего

да, это правда, T5 использует ванильную архитектуру трансформатора. Тогда как они получили результаты SOTA? Основная мотивация работы T5 - это….

Учитывая текущую ситуацию с трансферным обучением для НЛП, что работает лучше всего и насколько далеко мы можем продвинуть имеющиеся у нас инструменты? Результаты поиска - Колин Раффел

База T5 со стеками кодировщика-декодера базового размера Берта с 220 миллионами параметров экспериментировала со всем разнообразием техник НЛП во время предварительного обучения и тонкой настройки. Чтобы узнать обо всех экспериментах, которые они проводят над T5base, ознакомьтесь с этой статьей .

подведение итогов Лучшие результаты экспериментов Т5:

Используется большой набор данных для предварительного обучения: важным ингредиентом для трансферного обучения является немаркированный набор данных, используемый для предварительного обучения. T5 использует общий текст извлечения веб-сканирования (C4), что приводит к 800 ГБ данных после очистки и дедупликации данных. Процесс очистки включал дедупликацию, отбрасывание неполных предложений и удаление оскорбительного или шумного контента.
Архитектура: экспериментировал с моделями кодировщика-декодера и языковыми моделями только для декодера, аналогичными GPT, и обнаружил, что модели кодер-декодер хорошо себя зарекомендовали.
Неконтролируемые цели: T5 использует MLM-Masked Language Modeling как относящуюся к делу, и это сработало лучше всего, тогда они также экспериментировали с моделированием Permutation Language, где XLNET использует это как неконтролируемые цели. ;
Insights + Scale = Современное состояние

T5 далее исследует масштабирование своих моделей в большие размеры, с dmodel = 1024, 24-уровневым кодером и декодером и dkv = 128. Вариант T5–3Billion использует dff = 16 384 и 32-головное внимание, что дает около 2,8 миллиарда параметров;

для T5 -11 миллиардов имеет dff = 65 536 и 128-головное внимание, создавая модель с примерно 11 миллиардами параметров.

Самая большая модель T5 имела 11 миллиардов параметров и достигла SOTA в тестах GLUE, SuperGLUE, SQuAD и CNN / Daily Mail. Одним из особенно захватывающих результатов стало то, что T5 получил почти человеческий результат в тесте SuperGLUE для понимания естественного языка, который был специально разработан, чтобы быть сложным для моделей машинного обучения, но простым для людей.







Руководство по многозадачности с трансформатором T5

Трансформатор T5 может выполнять любую задачу НЛП.

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

Модель T5 (преобразователь передачи текста в текст) явилась продуктом крупномасштабного исследования ( документ ), проведенного с целью изучения ограничений передачи обучения.

Он основан на популярных архитектурах (GPT, BERT и RoBERTa и др.), в которых с невероятным успехом использовалось трансферное обучение.

Хотя BERT-подобные модели можно настроить для выполнения множества задач, ограничения архитектуры означают, что каждая модель может выполнять только одну задачу.



Обычно это делается путем добавления слоя для конкретной задачи поверх модели Transformer. Например, преобразователь BERT может быть адаптирован для двоичной классификации, добавив полностью связанный слой с двумя выходными нейронами (соответствующими каждому классу). Модель T5 отходит от этой традиции, переосмысливая все задачи НЛП как задачи преобразования текста в текст. В результате получается общая структура для любой задачи НЛП в качестве входных данных для модели, а выходными данными модели всегда является строка. В примере двоичной классификации модель T5 просто выведет строковое представление класса (т.е. "0"или "1").
+++

 

 

 

Машинное обучение - основная тенденция современных информаицонных технологий.

Основа машинного обучения — Big Data (Большие данные)

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

Невозможно описать все логические шаги, необходимые, чтобы ходить или распознавать кошек!

В машинном обучении, вместо написания правил, статистическому алгоритму дают (огромное) множество примеров, и этот алгоритм (сам) генерирует модель, которая различает категории.

Предлагается (нейронной сети) 1 000 0000 картинок, помеченных как «кошка», и 100 000 картинок, помеченные «нет кошки». Обученная на этих данных нейросеть "распознает" (выделяет) картинки с кошкой на новых (не помеченных) изображениях.

Машинное обучение заменяет задаваемые вручную логические этапы автоматически моделируемыми  паттернами (шаблонами) в данных и эффективно работает в широком классе задач (каждый раз - только для конкретных узких задач из этого широкого класса).

Машинное обучение — технология общего назначения, но приложения на ее основе, не универсальны - умеют делать что-то одно.

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

Больше данных Ú более точная модель  Ú более качественный продукт  Ú больше пользователей  Ú больше данных...

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

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

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

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

Обученные нейронные сети успешно работают на относительно небольших наборах данных.

 

 

 

Столица европейского AI )

03.09.2017  «Столица европейского AI»: полная карта ИИ-проектов Беларуси

07.12.2018

В Стэнфорде конференция "AI и будущее общества". Основные тезисы:

  • AI – новое электричество: за десятилетия полностью трансформирует экономику и общество.

  • Данные – это новая нефть, КНР – новый ОПЕК. Накопление большого объема данных критично для развития AI. Блокировка КНР доступа иностранных IT-компаний на их рынок и слабая защита защищающие конфиденциальности пользователей позволяет выйти в лидеры став AI-сверхдержавой.

  • Число рабочих мест не уменьшится – но работа будет совсем другой. Креатив, эмпатия, стратегия – главные человеческие качества, которые это поколение AI не сможет воспроизвести.

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

  • Европа "пролетает" и ей нужно срочно определяться с ролью в грядущем мире AI.

15.01.2019

IDC - объем глобального рынка ИИ в 2018 - $24 млрд, в 2022-м - $77,6 млрд.

Frost & Sullivan: Объем рынка технологий ИИ в 2018 - $17,8 млрд. Прогноз ан 2022 - $52,5 млрд

Tractica: объем рынка ПО ИИ в 2018 - $8,1 млрд. К 2025 году - $105,8 млрд.

http://www.tadviser.ru/a/425392

5 самых популярных областей использования ПО ИИ:

  • видеонаблюдение,

  • системы мониторинга и управления ИТ-сетями и операциями,

  • клиентское обслуживание и маркетинг,

  • распознавание голоса и речи,

  • автогенерация текста и поддержания диалога

  • обнаружение и распознавание объектов техникой...

BCC Research: объем рынка технологий распознавания речи в 2016 - $104 млрд, в 2021 (прогноз) - $184,9 млрд.

28.05.2019

Нейронную сеть от белорусского стартап Oyper Inc признали лучшей в Европе на конкурсе R&B Next Awards Disruptive Tech в Барселоне. Сверточная нейронная сеть определяет и классифицирует одежду на фотографиях и видео. Это облачное решение, которое можно встраивать в сайты онлайн-магазинов и видео провайдеров.

Подробнее: https://dev.by/news/oyper

 

 

 

Математическая интерпретация обучения нейронной сети

 

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

Таким образом, в процессе обучения циклически решаются однокритериальные задачи оптимизации.

Обучение нейронной сети характеризуется четырьмя ограничениями (выделяющими ML из общих задач оптимизации):

  • огромное число параметров,

  • необходимость высокого параллелизма при обучении,

  • многокритериальность решаемых задач,

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

В остальном проблема обучения, как правило, формулируется как задача минимизации оценки.

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

 

 

Обучение по прецедентам

 

Обычно обучение нейронной сети осуществляется на некоторой выборке (обучающей выборке, совокупности прецедентов).

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

Общая постановка задачи обучения по прецедентам:

  • Имеется множество объектов (ситуаций) и множество возможных ответов (откликов, реакций).

  • Существует некоторая зависимость между ответами и объектами, но она неизвестна.

  • Известна конечная совокупность прецедентов — пар «объект, ответ», называемая обучающей выборкой.

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

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

В реальных прикладных задачах входные данные об объектах могут быть неполными, неточными, нечисловыми, разнородными.

Эти особенности приводят к большому разнообразию методов машинного обучения.

 

 

 

Алгоритмы обучения нейронных сетей

 

Базовые виды нейросетей (перцептрон и многослойный перцептрон) могут обучаться:

  • с учителем (известны правильные ответы к каждому входному примеру, а веса подстраиваются так, чтобы минимизировать ошибку),

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

  • с подкреплением (комбинируются два вышеизложенных подхода).

 

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

Обучение с учителем — для каждого прецедента задаётся пара «ситуация, требуемое решение»:

  • Метод коррекции ошибки

  • Метод обратного распространения ошибки

Обучение без учителя — для каждого прецедента задаётся только «ситуация», требуется сгруппировать объекты в кластеры, используя данные о попарном сходстве объектов, и/или понизить размерность данных:

  • Альфа-система подкрепления

  • Гамма-система подкрепления

  • Метод ближайших соседей

Обучение с подкреплением — для каждого прецедента имеется пара «ситуация, принятое решение»:

  • Генетический алгоритм.

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

  • Обучение с частичным привлечением учителя (semi-supervised learning) — для части прецедентов задается пара «ситуация, требуемое решение», а для части — только «ситуация»

  • Трансдуктивное обучение (transduction) — обучение с частичным привлечением учителя, когда прогноз предполагается делать только для прецедентов из тестовой выборки

  • Многозадачное обучение (multi-task learning) — одновременное обучение группе взаимосвязанных задач, для каждой из которых задаются свои пары «ситуация, требуемое решение»

  • Многовариантное обучение (multiple-instance learning) — обучение, когда прецеденты могут быть объединены в группы, в каждой из которых для всех прецедентов имеется «ситуация», но только для одного из них (причем, неизвестно какого) имеется пара «ситуация, требуемое решение»

 

 

 

 

Метод обратного распространения ошибки

 

Существует большое число алгоритмов обучения, ориентированных на решение разных задач.

Самый успешный:

  • Метод обратного распространения ошибки (backpropagation) — метод обучения, который используется с целью минимизации ошибки работы и получения желаемого выхода.

Основная идея метода:

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

В итоге каждый нейрон способен определить вклад каждого своего веса в суммарную ошибку сети.

Простейшее правило обучения соответствует методу наискорейшего спуска (изменения синаптических весов пропорционально их вкладу в общую ошибку).

См. подробнее: http://ru.wikipedia.org/wiki/Метод_обратного_распространения_ошибки

 

 

 

Deep learning

 

 

Глубокое обучение (Deep learning) - это раздел ИИ, основанный на двух идеях:

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

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

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

Такая иерархия признаков называется Deep Architecture (глубокой архитектурой).

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

 

Попытки обучения глубоких архитектур (в основном, нейронных сетей) до 2006 года проваливались (за исключением особого случая свёрточных нейронных сетей).

Успешный подход Хинтона использует Restricted Boltzmann Machine (Ограниченную Машину Больцмана, RBM) для моделирования каждого нового слоя высокоуровневых признаков:

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

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

 

 

 

Deep learning

 

 

Глубокое обучение (Deep learning) - это раздел ИИ, основанный на двух идеях:

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

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

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

Такая иерархия признаков называется Deep Architecture (глубокой архитектурой).

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

 

Попытки обучения глубоких архитектур (в основном, нейронных сетей) до 2006 года проваливались (за исключением особого случая свёрточных нейронных сетей).

Успешный подход Хинтона использует Restricted Boltzmann Machine (Ограниченную Машину Больцмана, RBM) для моделирования каждого нового слоя высокоуровневых признаков:

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

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

 

 

 

Задачи для машинного обучения

 

Цель ML -  автоматизация решения сложных задач в самых разных областях человеческой деятельности:

  • классификации (как правило, выполняется с помощью обучения с учителем на этапе собственно обучения).

  • Кластеризации (как правило, выполняется с помощью обучения без учителя)

  • Регрессии (как правило, выполняется с помощью обучения с учителем на этапе тестирования, является частным случаем задач прогнозирования).

  • Понижения размерности данных и их визуализация (выполняется с помощью обучения без учителя)

  • Восстановления плотности распределения вероятности по набору данных

  • Выявления новизны

  • Построениея ранговых зависимостей

Типы входных данных при обучении

  • Признаковое описание объектов — наиболее распространённый случай.

  • Описание взаимоотношений между объектами, чаще всего отношения попарного сходства, выражаемые при помощи матрицы расстояний, ядер либо графа данных

  • Временной ряд или сигнал.

  • Изображение или видеоряд.

  • Типы функционалов качества

 

 

 

 

Приложения машинного обучения

 

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

Машинное обучение имеет широкий спектр приложений:

  • Распознавание речи

  • Распознавание жестов

  • Распознавание рукописного ввода

  • Категоризация документов

  • Ранжирование в информационном поиске

  • Распознавание образов

  • Диагностика (техническая, медицинская...)

  • Биоинформатика

  • Обнаружение спама

  • Биржевой технический анализ и др...

Сфера применений машинного обучения постоянно расширяется по мере накопления огромных объёмов данных в науке, производстве, финансах, транспорте, здравоохранении.

Возникающие при этом задачи прогнозирования, управления и принятия решений часто сводятся к обучению по прецедентам.

Раньше, когда таких данных не было, эти задачи либо вообще не ставились, либо эффективно решались другими методами.

 

 

 

Обобщающая способность и переобучение

 

 

Обобщающая способность (generalization ability, generalization performance) - характеристика алгоритма обучения, обеспечивающая вероятность ошибки на тестовой выборке на уровне ошибки на обучающей выборке

Обобщающая способность тесно связана с понятиями переобучения и недообучения.

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

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

Переобучение (overtraining, overfitting) — нежелательное явление, возникающее при решении задач обучения по прецедентам, когда вероятность ошибки обученного алгоритма на объектах тестовой выборки оказывается существенно выше, чем средняя ошибка на обучающей выборке.

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

Эмпирический риск - средняя ошибка алгоритма на обучающей выборке.

Метод минимизации эмпирического риска (empirical risk minimization, ERM) состоит в том, чтобы в рамках заданной модели выбрать алгоритм, имеющий минимальное значение средней ошибки на заданной обучающей выборке.

Переобучение появляется именно вследствие минимизации эмпирического риска:

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

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

  • минимум эмпирического риска — это случайная величина, равная минимуму из D независимых одинаково распределённых биномиальных случайных величин. Её ожидаемое значение уменьшается с ростом D.

  • соотвественно, с ростом D увеличивается переобученность— разность вероятности ошибки и частоты ошибок на обучении.

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

Всегда существует оптимальное значение сложности модели, при котором переобучение минимально.

 

 

 

 

AutoML

 

Компания Google объявила об очередном большом шаге в разработке искусственного интеллекта, рассказав про AutoML - новом подходе к машинному обучению, с помощью которого нейронные сети можно будет использовать для создания еще более эффективных нейронных сетей.

Сундар Пичаи ен. директор Google) показал пример работы AutoML на конференции Google I/O 2017.

  • Сегодня проектирование нейронных сетей чрезвычайно трудоемко и требует опыта, что недоступно для небольших сообществ ученых и инженеров. Вот почему мы создали подход под названием AutoML, благодаря которому нейронные сети могут создавать нейронные сети. Мы надеемся, что AutoML будет обладать способностями нескольких докторов наук и позволит через три-пять лет сотням тысяч разработчиков создавать новые нейронные сети для своих конкретных потребностей.

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

См. в официальном блоге.

С помощью технологии AutoML ИИ-платформы станут быстрее обучаться и будут гораздо умнее.

Согласно Google, даже сейчас уровень AutoML уже таков, что она может быть эффективнее экспертов-людей в вопросе поиска лучших подходов для решения конкретных проблем. В перспективе это позволит существенно упростить процесс создания новых ИИ-систем, так как, по сути, их будут создавать себе же подобные.

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

 

 

 

Сетевые ресурсы

 

  1. MachineLearning.ru
    Профессиональный информационно-аналитический ресурс, посвященный
    машинному обучению, распознаванию образов и интеллектуальному анализу данных.
    Более 800 
    статей на русском языке.

  2. Машинное обучение и анализ данных
    Научный журнал

  3. Как обучаются машины? (научно-популярная лекция Н.Ю. Золотых)

  4. Машинное обучение (курс лекций, К.В.Воронцов)

  5. Векторная модель семантики (vector space model, VSM)

Оглавление:
1 Сходство документов: матрица термин-документ
2 Сходство слов: матрица слово-контекст
3 Сходство отношений: матрица пара-модель
4 Сходство
5 Другие векторные модели
6 Лингвистическая обработка для векторной модели
6.1 Разметка текста
6.2 Нормализация текста
6.3 Комментирование
7 Математическая обработка для векторной модели
7.1 Построение частотной матрицы
7.2 Взвешивание элементов
7.3 Сглаживание матрицы
7.4 Сравнивание векторов
7.5 Машинное обучение
8 Литература

Курсы на платформе Coursera:

Бесплатный курс виртуальной академии Microsoft MVA: Введение в сервис машинного обучения Azure Machine Learning  

Книги:

 

 

 

От автоматической обработки текста к машинному пониманию

 

Из лекции Владимира Селегея - директора по лингвистическим исследованиям компании ABBYY, заведующего кафедрами компьютерной лингвистики РГГУ и МФТИ, председателя оргкомитета ведущей российской конференции по компьютерной лингвистике «Диалог»  (прочитана 9 октября 2012 г. в Лектории Политехнического музея).

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

  • Хочу сказать несколько слов по поводу машинного обучения. Есть математические методы, которые позволяют решать, например, задачу классификации. У вас есть множество объектов интересующего вас типа, и вы хотите иметь диагностическую процедуру, позволяющую решить, относится или не относится к этому множеству новый объект. Есть несколько областей, где это обучение может быть эффективным, например, идентификация искусственно сгенерированных текстов или фильтрация спама. Все мы являемся жертвами спаммеров, причем спам часто генерируется роботами, и нужно придавать им некоторую вариативность, чтобы эти тексты распознавались как натуральные. Если вы попытаетесь решить проблему распознавания спама чисто лингвистическими методами, у вас ничего не получится. Никто из лингвистов не способен дать четкий ответ на вопрос, чем отличается натуральный текст от ненатурального.

  • Гораздо более эффективен метод машинного обучения. В чем он состоит? Вы берете большое количество натуральных и ненатуральных текстов и пытаетесь с помощью математических методов определить, какие параметры, доступные вам для анализа в этих текстах, делают их натуральными или ненатуральными. К сожалению, сегодня методы машинного обучения чаще всего ориентируются на простые модели сочетаемости слов. Тем не менее, даже это дает очень эффективные результаты. То есть спам-фильтры работают хорошо.

  • Неплохо работают методы определения пола автора.

  • Но есть и более лингвистические задачи – например, задача референциального выбора. Пример текста про футбольную команду "Манчестер Юнайтед" – одним и тем же цветом показаны одинаковые референты, и видно, как по-разному они упоминаются в тексте. Понятно, что в языке есть некая стратегия использования референциальных выражений – в одних случаях будет использовано местоимение, в других – полная именная группа и т.д. Изучать такие вещи помогает метод машинного обучения.

  • На эту тему есть отечественные работы, например, представленная в прошлом году на "Диалоге" совместная работа групп А.А. Кибрика и Н.В. Лукашевич по применению таких методов для изучения механизмов референции. Для этого нужен специально подготовленный корпус, в котором произведена уже достаточно сложная разметка, и мы пытаемся изучить, какие параметры этой разметки существенны для референциального выбора. Что здесь важно? То, что если вы изучаете референцию, вы не можете работать только с сочетаемостью – так у вас ничего не получится. Для того чтобы ваши выводы из применения машинного обучения были эффективны, у вас должны быть адекватные параметры.

  • Не верьте тому, кто говорит, что с помощью машинного обучения можно получить знание из чего угодно, – это не так. Все зависит от того, какие параметры разметки представлены в обучающем корпусе. Если у вас там только последовательность символов и ничего больше – вы не сможете научиться ничему серьезному. Выбор пишущего зависит от большого количества факторов и имеет вероятностную природу.

  • Выдумать из головы те факторы, которые существенны для референциального выбора, невозможно. То есть в языке присутствуют такие механизмы, изучение которых "из головы" попросту невозможно. Здесь на помощь приходит компьютерная лингвистика. Нужные факторы должны быть представлены в корпусе в виде разметки, потому что если у вас адекватный фактор попросту отсутствует, то вы не можете ничему обучиться.

  • Здесь мне хотелось бы провести аналогию с компьютерной медициной. Представьте себе, что в мире существует огромное количество медицинских учреждений и очень много больных. Их лечили, есть история болезни. Представьте себе, что мы пишем обучающую программу для средств медицинской диагностики. Вполне понятная задача. Теперь представьте себе, что вы решаете ее примерно так, как это чаще всего делается в компьютерной лингвистике: берете в истории болезни только данные о температуре, давлении и цвете кожных покровов. Какой-то результат вы получите. Но вряд ли без доступа к УЗИ или сканированию сосудов вы получили бы какую-то реальную диагностику. Сейчас в компьютерной лингвистике методы машинного обучения работают «с температурой и давлением», а мы хотели бы, чтобы они работали и со всем остальным. То есть, на наш взгляд, возникает новая парадигма компьютерной лингвистики.

 

 

Деревья принятия решений

 

Дерево принятия решений (Decision tree ) — метод анализа данных для прогнозных моделей.

Цель: создать модель, которая предсказывает значение целевой переменной на основе нескольких переменных на входе.

Структура дерева представляет собой: «листья» и «ветки».

На ветках дерева решения записаны атрибуты, от которых зависит целевая функция, в листьях записаны значения целевой функции, а в остальных узлах — атрибуты, по которым различаются случаи.

Чтобы классифицировать новый случай, надо спуститься по дереву до листа и выдать соответствующее значение.

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

 


 

Пример (для поискового ранжирования задачи - разбиения текста на предложения и построения сниппетов).

 

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

В некотором тексте есть потенциальный делитель - точка.

В реальном Интернете (далеком от литературного языка), очень много текстов, когда точка не является знаком пунктуации "точка".

Поэтому нужно проанализировать контекст, который находится около этой точки.

Пишется анализатор, который начинает проверять простые правила:

  • есть ли пробел справа, что говорит о том, что это, скорее всего конец предложения.

  • есть ли большая буква справа...

  • ...................

  • таких правил на текущий момент около 40.

Необходимо скомбинировать эти правила между собой и произвести финальную оценку.

Здесь также применяется машинное обучение на деревьях принятия решений.

 

Дерево принятия решений–  бинарное дерево с условием, которое проверяет, сработал или не сработал признак.

Признаки кодируются при помощи нуля и единицы.

Если признак не сработал – нужно идти налево, если сработал – направо. После перехода может быть проверка нового условия.

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

Проблема переобучения (с ростом дерева рост качества замедляется и останавливается на недостаточном для решения задачи уровне) преодолевается с помощью бустинга.

Бустинг (boosting — улучшение) — процедура последовательного построения композиции алгоритмов машинного обучения, когда каждый следующий алгоритм стремится компенсировать недостатки композиции всех предыдущих алгоритмов. В течение последних 10 лет бустинг остаётся одним из наиболее популярных методов машинного обучения.

Применение бустинга:

  • строится первое дерево, и для всех элементов обучающего множества вычисляется ошибка.

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

  • по цепочке, строится несколько десятков, а иногда и сотен деревьев.

  • получается достаточно гладкое решение.

 

 

 

 

Модель простейшей сети с одним слоем

Простейшая сеть с одним скрытым слоем может быть представлена следующим образом:

На шаге 2 входной вектор значений X (набор чисел) умножается на вектор весов W1, затем складывается с вектором смещений B1, полученные значения весов передаются сигма функции возбуждения. Далее вычисленный вектор S1 умножается на веса скрытого слоя W2 складывается с смещением B2, и вычисляется функция softmax которая является ответом сети.

Этот же алгоритм в графическом виде можно (вычисление идет снизу-вверх):

 

 

 

 

Sharky Neural Network

Sharky Neural Network - приложение для демонстрации возможность обучаемости нейросети.

SNN позволяет выбрать общей вид и модель работы нейронной сети, другие параметры, после чего задать образ распознания и понаблюдать за работой программы нейросети.

SNN использует контролируемое машинное обучение с помощью алгоритма обратного распространения ошибки.

Это бесплатное программное обеспечение доступно на странице: http://www.SharkTime.com

Нейронная сеть SNN относит 2D-точки (вектора описывается двумя реальными значениями: x и y) в два разных класса, проводя визуализацию данных пунктов  (желтый и синий) классификации.

Нейроны SNN используют биполярный сигмоид функции активации (f(x)=2/(1+e-βx)-1).

 

Пользователь может добавлять, удалять, загружать или сохранять точки обоих цветов (желтого и синего), очищать поле от точек.

Чтобы создать  логотип "X"- нужно:

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

  • Ctrl + Левая Кнопка Мыши - ввод множества точек (режим спрея, распылителя)

  • [ - уменьшение диапазона спрея

  • ] - увеличение диапазона спрея

  • заполнить синими точками фон в режиме "спрей".

  • выбрать подходящую структуру сети (закладка Network и раскрывающийся список  Network Structure),

  • настроить параметры обучения (закладка Learn)

  • нажать кнопку "Learn button".

Другие полезные сочетания клавиш:

  • F5 - Сброс сети. 

  • F6 - Начать учить. 

  • Esc - Перестать учиться.

 

 

 

PPAML

 

PPAML (Probabilistic Programming for Advanced Machine Learning) -  новая (с 2013 г.) исследовательская программа DARPA по вероятностному программированию для машинного обучения.

DARPA (Defense Advanced Research Projects Agency) — агентство передовых оборонных исследовательских проектов Минобороны США.

Кэтлин Фишер (руководитель PPAML):

  • PPAML призвана сделать для машинного обучения то, что появление языков высокого уровня 50 лет назад сделало для программирования в целом.

  • Не существует общепринятых универсальных инструментов для создания интеллектуальных систем. Из-за этого приходится постоянно изобретать велосипеды (раз за разом реализовывать похожие  алгоритмы, строить с нуля архитектуру).

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

  • Инструменты, библиотеки и языки  пока не покидают стен университетов DARPA намерено изменить эту ситуацию.

  • Среди целей программы — радикальное уменьшение трудоёмкости создания систем машинного обучения, снижение порога вхождения в программирование интеллектуальных приложений, усовершенствование базовых алгоритмов машинного обучения, максимальное использование современных аппаратных технологий — многоядерных процессоров и GPU, облачных вычислений, создание и стандартизация API для связи элементов инфраструктуры машинного обучения в единую систему.

 

Здесь PDF с кратким описанием программы.

Вероятностное программирование – ключ к искусственному интеллекту?
http://habrahabr.ru/post/242993/

 

Классы вероятностных языков программирования:

  • языки, допускающие задание генеративных моделей только в форме Байесовских сетей (или других графических вероятностных моделей). Не открывая возможности решения принципиально новых решений задач,  является высокоэффективным инструментом использования графических моделей.
     Пример: язык
    Infer.NET (от Microsoft).
    Большинство задач машинного обучения могут быть сформулированы в Байесовской постановке
    см. байесовское программирование

  • Тьюринг-полные языки (позволяют выйти за рамки того класса задач, которые существующие методы машинного обучения уже умеют решать). Проблема эффективности вывода в таких языках, приводит к плохой масштабируемости на задачи реального мира. Перспективны в исследованиях, связанных с когнитивным моделированием и общим искусственным интеллектом.
    Пример: язык
    Church (Чёрч, расширение диалекта Scheme для языка Лисп) с web-реализацией (web-church) позволяющей экспериментировать без установки дополнительного программного обеспечения.

 

 

 

 

Вероятностное программирование

 

 

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

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

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

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

 

"обычное" программирование вероятностное программирование

 

Классы вероятностных языков программирования:

  • языки, допускающие задание генеративных моделей только в форме Байесовских сетей (или других графических вероятностных моделей). Не открывая возможности решения принципиально новых решений задач,  является высокоэффективным инструментом использования графических моделей.
     Пример: язык
    Infer.NET (от Microsoft).
    Большинство задач машинного обучения могут быть сформулированы в Байесовской постановке
    см. байесовское программирование

  • Тьюринг-полные языки (позволяют выйти за рамки того класса задач, которые существующие методы машинного обучения уже умеют решать). Проблема эффективности вывода в таких языках, приводит к плохой масштабируемости на задачи реального мира. Перспективны в исследованиях, связанных с когнитивным моделированием и общим искусственным интеллектом.
    Пример: язык
    Church (Чёрч, расширение диалекта Scheme для языка Лисп) с web-реализацией (web-church) позволяющей экспериментировать без установки дополнительного программного обеспечения.

Языки вероятностного программирования (перечень с кратким описанием каждого) здесь.

См. Вероятностное программирование – ключ к искусственному интеллекту?
http://habrahabr.ru/post/242993/

 

 

 

ML на векторных моделях

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

Оценка подобия (степени их совместного появления) слов на основе данного векторного представления используются в области машинного перевода.

На рисунке: линейные отображения векторных представлений слов английского и испанского языков спроецированы на двухмерное пространство с помощью метода PCA (principal component analysis, главных компонентов), а потом повернуты, чтобы подчеркнуть сходство структур в двух языках.

 

 

 

 

 

Machine Learning для формальных задач

17.10.2014

На сайте электронных препринтов arXiv.org опубликована статья ( Learning to Execute, Илья Сутскевер и др. из Google) с описанием результатов обучения нейронной сети пониманию текстов программ.

Дмитрий Ветров (специалист по ML, к. ф.-м. н., рук. исследовательской группы байесовских методов, нач. департамента больших данных и информационного поиска факультета компьютерных наук НИУ ВШЭ.):

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

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

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

  • текст программы, как и положено формальному описанию алгоритма на синтетическом языке программирования, содержит минимальную избыточность, поэтому небольшие изменения в нем, например изменение знака «плюс» на знак «минус», будут приводить к сильным изменениям выхода программы, а в традиционных задачах машинного обучения предполагается, что небольшие изменения входных данных должны приводить к небольшим изменениям прогноза (гипотеза компактности). Именно это предположение лежит в основе современных моделей обучения и их способности обобщить результаты обучения с известной обучающей выборки объектов на произвольные данные, которые в каком-то смысле близки к объектам обучающей выборки.

  • с точки зрения нейронной сети текст программы — это просто набор символов, не имеющих априори никакого смысла.

  • Авторы статьи использовали один из видов рекуррентных нейросетей с Long-Short Term Memory. Эта архитектура хорошо зарекомендовала себя при анализе и генерации текстов на естественных языках. Она представляет собой двуслойную динамическую нейросеть с блоком памяти (внутренним набором переменных, значения которых влияют на поведение сети в конкретный момент времени). Такая нейронная сеть просматривает текст программы символ за символом, анализируя не только текущий наблюдаемый символ, но и принимая во внимание выходы нейронов с разных слоев в предыдущий момент времени (короткая память), а также значения переменных в блоке памяти (длинная память). Целью обучения является минимизация ошибки между результатом исполнения кода программы и выходом нейронной сети, просмотревшей текст программы.

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

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

  • Результаты экспериментов:

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

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

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

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

  • Данная статья представляет собой очередной типичный пример научных статей от Google. Ряд деталей реализации и планирования эксперимента в статье, как и во многих других статьях сотрудников этой корпорации, опущен. Описание нетривиальной математической модели занимает 12 строчек и одну формулу.

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

 

 

 

 

RNN, LSTM и CNN в распознавании речи и текста

 

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

Рекуррентные сети (RNN) позволяют помнить предыдущее состояние, тем самым снижая количество данных подаваемых на вход сети.

Рекуррентный — значит возвращающийся.
RNN угадывает следующие слова в тексте или ноты в мелодии, возвращаясь к своим прошлым догадкам, которые нейросеть хранит как вектор активации нейронов и передает с шага на шаг. 

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

Развитием модели RNN являются LSTM (сети с долгой краткосрочной памятью, Long short-term memory, разновидность RNN), для которых разработан специальный тип нейронов, переводящий себя в возбужденное состояние на основе некоторых значений и не меняющий его пока на вход не придет деактивационый вектор.

LSTM не передает контекст целиком, а решает, какую часть использовать, а какую — забыть. LSTM имеет модификации, чтобы лучше отличать важный контекст от неважного.

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

Возможности RNN и LSTM сетей в некоторых случаях уже превосходят человека в распознавании коротких фраз и рукописного ввода.

Ряд задач NLP на основе CNN (свёрточных нейронных сетей, onvolutional neural network) решается быстрее, чем на основе RNN.
Свёрточная нейронная сеть анализирует полученные данные одновременно, а не последовательно, как в RNN.

Что такое свёрточная нейронная сеть

Применение сверточных нейронных сетей для задач NLP

 

 

Transformer

Трансформер – это архитектура, основанная на attention (механизме внимания), благодаря чему модель оптимизирует интенции на разные части текста и таким образом лучше выучивает закономерности, необходимые для решения задачи.

Механизм внимания (attention mechanism, attention model) — техника используемая в рекуррентных нейронных сетях (RNN) и сверточных нейронных сетях (CNN) для поиска взаимосвязей между различными частями входных и выходных данных.

По аналогии с RNN (рекуррентными нейронными сетями) трансформеры предназначены для обработки последовательностей, таких как текст на естественном языке, и решения таких задач как машинный перевод и автоматическое реферирование.

В отличие от RNN, трансформеры не требуют обработки последовательностей по порядку.

Например, если входные данные — это текст, то трансформеру не требуется обрабатывать конец текста после обработки его начала.
Благодаря этому трансформеры распараллеливаются легче чем RNN и могут быть быстрее обучены.

 

 

Transfer Learning

Трансферное обучение (подраздел ML) — применение знаний, полученных благодаря решению одной задачи, к другой, но схожей задаче.
TL основано на предобученных моделях (обученных на больших наборах общедоступных данных).

Transfer Learning с использованием TensorFlow.JS

Deep Learning: Transfer learning и тонкая настройка глубоких сверточных нейронных сетей

Погружение в свёрточные нейронные сети: передача обучения (transfer learning)

BERT, ELMO и Ко в картинках (как в NLP пришло трансферное обучение)

 

GPT (OpenAI)

 

OpenAI (https://openai.com/)  — американская компания разработкой в области машинного обучения, основана (И. Маск +) в конце 2015 с целью создать открытую компанию, работающую на благо общества, а не государства или корпорации.

GPT (Generative Pre-trained Transformer) — модель обработки естественного языка от OpenAI на архитектуре трансформер (150 миллионов параметров). Создана летом 2018.

GPT-2 второе поколение модели обработки естественного языка от OpenAI, авторегрессионная генеративная языковая модель на архитектуре трансформер (1,5 млрд. параметров). Создана в феврале 2019.

GPT-3 — третье поколение модели обработки естественного языка от OpenAI,  авторегрессионная генеративная языковая модель на архитектуре трансформер (175 млрд. параметров). Создана в мае 2020.

Обучение GPT-3 происходило на суперкомпьютере Microsoft Azure AI, который был построен специально для OpenAI.

На обучение могло уйти от $4,6 млн.

Для обучения алгоритма исследователи собрали датасет из более 570 ГБ текстов (0,11 % документов были на русском языке).

Как работает GPT-2 и в чем его особенности

Generative Pre-trained Transformer 3 (GPT-3) от OpenAI:

GPT-3 от OpenAI может стать величайшей вещью со времён Bitcoin

Сбер выложил русскоязычную модель GPT-3 Large с 760 миллионами параметров в открытый доступ

The Illustrated GPT-2 (Visualizing Transformer Language Models)

How GPT3 Works - Visualizations and Animations

A robot wrote this entire article. Are you scared yet, human?
статья GPT-3 для The Guardian о том, что не следует бояться ИИ

GPT-3: Response to Philosophers ответ GPT-3 на эссе философов
OpenAI's GPT-3 may be the biggest thing since bitcoin
Humans vs AI (A/B testing OpenAI's GPT-3)
It’s Not Just Size That Matters: Small Language Models Are Also Few-Shot Learners
GPT-3 Bot Spends a Week Replying on Reddit

 

BERT (Google)

 

BERT от Google — это усовершенствованная сеть GPT от OpenAI (двунаправленная вместо однонаправленной и т.д.) на архитектуре Transformer.

С декабря 2019-го Google официально использует BERT в поиске (превью наиболее вероятного ответа на запрос — это тоже его работа).

BERT — state-of-the-art языковая модель для 104 языко

Ваш первый BERT: иллюстрированное руководство

BERT, ELMO и Ко в картинках (как в NLP пришло трансферное обучение)

 

 

Azure ML Studio

 18.01.2016 

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

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

Azure Machine Learning – это облачная инструментальная среда разработки:

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

  • позволяющая в простой и наглядной форме

  • с помощью готовых компонентов  машинного обучения

  • собрать необходимый процесс обработки данных

  • провести экспериментальную проверку их эффективности

  • и в случае успеха опубликовать все в виде сервиса

  • распространяя и монетизируя полученные модели

  • посредством использования из в мобильных приложениях

Построение модели машинного обучения в Azure ML Studio:

  1. Определение задачи (требуемого результата)

  2. Загрузка данных (или использование готовых данных репозитариев)

  3. Создание нового эксперимента

  4. Формирование выборки данных для дальнейшего обучения модели

  5. Подготовка данных (формирования характеристик, удаления выбросов и разделения выборки на обучающую и тестовую.

  6. Выбор моделей данных и соответствующих алгоритмов обучения, которые могут дать требуемый результат.

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

  8. Оценка модели (исследование ее прогностическиз характеристик на тестовой выборке и замеры уровеней ошибок.

  9. Принятие модели в качестве итоговой или повторное обучение после добавления новых входных характеристик или изменения алгоритма обучения.

  10. Публикация веб-сервиса

  11. Тестирование сервиса

  12. Разработка приложения

  13. Мониторинг и монетизации модели

 

 

 

CNTK на Github

В 2015 году многие крупные компании опубликовали на Github свои разработки:

  • Google - TensorFlow,

  • Baidu - warp-ctc.

  • Microsoft выложила в открытый доступ на  Github исходный код Computational Network Toolkit - набора инструментов, для проектирования и тренировки сетей различного типа, которые можно использовать для распознавания образов, понимания речи, анализа текстов и многого другого. 

Computational Network Toolkit победила в конкурсе ImageNet LSVR 2015 и является самой быстрой среди существующих конкурентов.

Computational Network Toolkit является попыткой систематизировать и обобщить основные подходы по построению различных нейронных сетей, снабдить ученых и инженеров большим набором функций и упростить многие рутинные операции. CNTK позволяет создавать сети глубокого обучения (DNN), сверточные сети (CNN), рекуррентные сети и сети с памятью (RNN, LSTM).

CNTK помогает решить задачи инфраструктурного характера, в частности, у него уже есть подсистемы чтения данных из различных источников. Это могут быть текстовые и бинарные файлы, изображения, звуки.

Ядро CNTK создано на языке C++, но предполагается создать интерфейсы на Python bindings и C# .

Подробно о возможностях и функциях CNTK: An Introduction to Computational Networks and the Computational Network Toolkit.

Об использовании CNTK узнать из CNTK Wiki.

Краткое введение в CNTK в материалах NIPS 2015 опубликовано здесь 

Примеры наиболее распространенных подходов в решении задач применимых к нейронным сетям в папке

В CNTK входит несколько примеров анализа речи, на основе AN4 Dataset, Kaldi Project, TIMIT, и проект по трансляции на основе  работы.

Анализ текста представлен проектами по анализу комментариев, новостей, и произнесенных фраз (spoken language understanding, SLU).

 

 24.01.2016 

Microsoft выложила в открытый доступ на  Github исходный код Computational Network Toolkit - инструментов, которые используются в компании для глубинного обучения в области искусственного интеллекта (проектирования и тренировки сетей различного типа, которые можно использовать для распознавания образов, понимания речи, анализа текстов и многого другого).

Сюэдун Хуан (Xuedong Huang, ведущий специалист Microsoft по системам распознавания речи):

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

  • Усилия окупились сполна. Во внутренних тестах CNTK показал более высокую производительность, чем другие популярные вычислительные инструментарии, которые разработчики используют для создания моделей глубинного обучения в задачах вроде распознавания речи и распознавания образов, за счёт лучших коммуникационных возможностей. Инструментарий CNTK просто невероятно более эффективен, чем всё, что нам доводилось видеть

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

 

 

"Войны" нейронных сетей
 

 

Generative adversarial networks (GAN) - соперничающие нейронные сети

  • Есть две нейронных сети. Первая сеть, порождающая, обозначим ее как функцию yG=G(z), на вход она принимает некое значение z, а на выходе выдает значение yG. Вторая сеть, различающая, и мы ее обозначим как функцию yD=D(х), то есть на входе — x, на выходе — yD.

  • Порождающая сеть должна научиться генерировать такие образцы yG, что различающая сеть D не сможет их отличить от неких настоящих, эталонных образцов. А различающая сеть, наоборот, должна научиться отличать эти сгенерированные образцы от настоящих.

  • Изначально сети не знают ничего, поэтому их надо обучить на основе набора обучающих данных — (Xi, Yi). На вход сети последовательно подаются Xi и рассчитываются yi=N(Xi). Затем по разнице между Yi (реальное значение) и yi (результат работы сети) перерассчитываются коэффициенты сети и так по кругу.
    На каждом шаге обучения вычисляется значение функции потерь (loss function), по градиенту которой потом пересчитываются коэффициенты сети. А вот функция потерь уже учитывает отличие 
    Yi от yi.

  • Вместо минимизации функции потерь в ходе обучения сети можно решать другую оптимизационную задачу - максимизации функции успеха. И это используется в GAN.

  • Обучение первой, порождающей, сети заключается в максимизации функционала D(G(z)). То есть эта сеть стремится максимизировать не свой результат, а результат работы второй, различающей, сети.

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

  • Порождающая сеть будет учиться по градиенту результата работы различающей сети.

  • Обучение различающей сети заключается в максимизации функционала D(x)(1 — D(G(z))). Она должна выдавать 1 для эталонных образцов и 0 для образцов, сгенерированных порождающей сетью. Причем сеть ничего не знает о том, что ей подано на вход: эталон или подделка.  На каждом шаге обучения различающей сети один раз рассчитывается результат работы порождающей сети и два раза — результат работы различающей сети: в первый раз ей на вход подается эталонный образец, а во второй — результат порождающей сети.

  • Обе сети связаны в неразрывный круг взаимного обучения. И чтобы вся эта конструкция работала нам нужны эталонные образцы — набор обучающих данных(Xi). Заметьте, что Yi здесь не нужны. Хотя, понятно, что на самом деле по умолчанию подразумевается, что каждому Xi соответствует Yi=1.

  • В процессе обучения на вход порождающей сети на каждом шаге подаются какие-то значения, например, совершенно случайные числа (или совсем даже неслучайные числа — рецепты для управляемой генерации). А на вход различающей сети на каждом шаге подается очередной эталонный образец и очередной результат работы порождающей сети.

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

 

 

 

 

 

A Visual and Interactive Guide to the Basics of Neural Networks

 

 

Визуальное и интерактивное руководство по основам нейронных сетей

 

 

 

TensorFlow

 

 

TensorFlow - библиотека с открытым исходным кодом программного обеспечения для численных расчетов с помощью диаграмм потока данных.

TensorFlow предназначена для студентов, исследователей, любителей, хакеров, инженеров, разработчиков, изобретателей.

TensorFlow Developer Summit

 

 

 

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

Учебная нейросеть:

  • имеет входы и выходы,

  • реализует между нейронами,

  • содержит скрытые слои, в которых отображены весовые коэффициенты межнейронных связей.

  • задается наборами входных данных

  • позволяет задавать уровень шума (аналога дискурсивного наречия "почти")

  • содержит простейшие средства управления процессом обучения.

«Удачные» связи отмечаются на обучаемых слоях синим, неудачные – оранжевым.

 

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

 

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

 

30.03.2018

TensorFlow интегрирован с JavaScript и задачи можно запускать прямо из браузера

22.05.2019

Машинное обучение глубокой нейронной сети с подкреплением на tensorflow.js: Трюки

Репозиторий с кодом
Запустить обучение в браузере
Документация по tensorflow.js, где также можно найти дополнительные ресурсы для изучения.

 

 

Решения DeepMind

DeepMind основана в 2010 году в Лондоне, в 2014 году приобретена Google за $500 000 000.

Одним из условий сделки DeepMind с Google было создание последней коллегии по этическим проблемам искусственного интеллекта.

Цель компании — «решить проблему интеллекта», реализовать его в машинах и понять, как работает мозг человека.

Демис Хассабис (основатель DeepMind):

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

В начале обучения система ИИ DeepMind ничего не знает о правилах игры и учится играть самостоятельно, используя на входе только пиксельное изображение игры и информацию об очках, получаемых в ходе игры. В основе ИИ лежит глубинное обучение с подкреплением (deep Q-network (DQN)) - вариация обучения с подкреплением без модели с применением Q-обучения, в котором функция полезности моделируется с помощью глубинной нейронной сети. В качестве архитектуры нейросети выбрана свёрточная нейронная сеть.

В 2015 AlphaGo от победила DeepMind в го лучших игроков.

В 2017 AlphaZero в течение 24 часов достигла сверхчеловеческого уровня игры в шахматы, сёги, и го, победив чемпионов мира среди программ.

Гарри Каспаров:

  • AlphaZero - большой плюс для шахмат. Бояться этого не надо: "Человек же не соревнуется в скорости с автомобилем. И шахматистам искусственный интеллект не помешает играть друг с другом. Главное - наслаждаться красотой шахмат.

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

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

В 2016 начато сотрудничество с Blizzard для обучения ИИ в Starcraft II. Ведется работа над «Starcraft 2 API», которая позволяет ИИ полностью взаимодействовать с интерфейсом игры, принять участие в разработке может любой желающий

28.05.2019 AlphaFold: Using AI for scientific discovery (краткий конспект):

  • Система AlphaFold (наследник AlphaGo и AlphaZero) используется для предсказания 3D-структур белка (что очень важно) - проблема фолдинга белка (очень сложна). Обученные генеративно-состязательные нейронные сети позволяют улучшать оценки предлагаемой структуры белка.

 

 

30 Amazing Machine Learning Projects for the Past Year (v.2018)

ТОП30 проектов по машинному обучению в 2018 году

19 ОТЛИЧНЫХ БЕСПЛАТНЫХ НЕЙРОСЕТЕЙ (07.06.2019 Антон Чепур)
 

 

 

Хм...

 

03.06.2016

  • Warner Bros. отправили уведомление видеохостингу Vimeo о нарушении авторских прав согласно Закону об авторском праве в цифровую эпоху (Digital Millennium Copyright Act, DMCA) и список нелегально закачанных видеоматериалов, правами на которые владеет Warner.  Заявление было отозвано из-за ошибки - часть видео была не взята из фильма, а в рамках проекта Теренса Броуда [Terence Broad] воссоздана с помощью машинного обучения. Warner не смогла отличить симуляцию и настоящую вещь.

  • Теренс Броуд учил нейросеть смотреть кино – не так, как это делают люди, но так, как это подходит машине. Научившись распознавать данные фильма, кодировщик уменьшил каждый кадр до представления в виде числа из 200 цифр, и затем реконструировал это число обратно в новые кадры, с целью добиться совпадения с оригиналом. Версия фильма от нейросети полностью уникальна и создана на основе того, что она увидела в оригинальном фильме – это интерпретация фильма системой основанная на ограниченном понимании.

 

Хм...

 

03.06.2016

  • Warner Bros. отправили уведомление видеохостингу Vimeo о нарушении авторских прав согласно Закону об авторском праве в цифровую эпоху (Digital Millennium Copyright Act, DMCA) и список нелегально закачанных видеоматериалов, правами на которые владеет Warner.  Заявление было отозвано из-за ошибки - часть видео была не взята из фильма, а в рамках проекта Теренса Броуда [Terence Broad] воссоздана с помощью машинного обучения. Warner не смогла отличить симуляцию и настоящую вещь.

  • Теренс Броуд учил нейросеть смотреть кино – не так, как это делают люди, но так, как это подходит машине. Научившись распознавать данные фильма, кодировщик уменьшил каждый кадр до представления в виде числа из 200 цифр, и затем реконструировал это число обратно в новые кадры, с целью добиться совпадения с оригиналом. Версия фильма от нейросети полностью уникальна и создана на основе того, что она увидела в оригинальном фильме – это интерпретация фильма системой основанная на ограниченном понимании.

 

 

 

Проблемы применения ML

A New Approach to Understanding How Machines Think (перевод)

Основные проблемы:

  • непредсказуемость результатов работы нейросети

  • непостижимость работы нейростети (

Нейросеть может выдать 1000 верных ответов и 1 неприемлимо ошибочный, но не сможет объяснить, что привело его к такому заключению. Не существует способа понять, на какие именно особенности данных нейросеть «обращает внимание». Это «знание» размазано по множеству слоёв из искусственных нейронов, у каждого из которых есть связи с сотнями или тысячами других нейронов.

Проблема «чёрного ящика» не технологический недочёт, а фундаментальное ограничение!

Проект XAI (eXplainable AI, объяснимый ИИ) от DARPA занимается интерпретируемостью ML - разрабатывает систему TCAV (Testing with Concept Activation Vectors, Испытание векторов активации концепций) - «переводчик на человеческий», который позволит расспросить нейросистему по поводу принятых ею решений.

Бин Ким (Been Kim, Google Brain):

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

  • Если мы не решим задачу интерпретируемости, мы не сможем двигаться дальше с этой технологией, и, возможно просто от неё откажемся – из страха или недостатка свидетельств надежности.

  • TCAV не направлен на установление доверия ИИ. Нам известно, что люди очень доверчивы, их легко обмануть, заставив во что-то верить. Цель интерпретируемости МО противоположна - сообщить человеку, что конкретную систему использовать небезопасно. Цель - раскрыть потенциальные ограничения в действиях ИИ.

 

 

 

ML от Microsoft

 

29.11.2014

Стефан Вейтц (глава подразделения Bing, поисковой системы Microsoft):

  • Bing удерживает около 30% рынка в США. Лидирующий в этом сегменте Google уже не побороть, но обычный поиск по ключевым словам теряет своё первостепенное значение.

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

  • Bing  - основа, на которой базируются Cortana и построен индексатор Apple Spotlight в операционных системах iOS и Mac OS X.

Согласно comScore для США в сентябре 2014 Bing пользовались 29.4% пользователей (+0.1% за год), Google использовали 67.3% (+0.4% за год).

29.05.2014

Skype Translate —  нейросеть, осуществляющая устный перевод для Skype с необычной способностью: чем больше языков система осваивает, тем лучше начинает переводить с тех, которые изучила до этого. Технологии Skype Translate также используются в  Microsoft Cortana, которая понимает вопросы на естественном языке и дает осмысленные ответы.

 

kmp