image


Не успели отшуметь новости о нейросети BERT от Google, показавшей state-of-the-art результаты на целом ряде разговорных (NLP) задач в машинном обучении, как OpenAI выкатили новую разработку: GPT-2. Это нейронная сеть с рекордным на данный момент числом параметров (1.5 млрд, против обычно используемых в таких случаях 100-300 млн) оказалась способна генерировать целые страницы связного текста.


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


Тем не менее, в OpenAI выложили в общий доступ уменьшенную версию нейросети GPT-2, со 117 млн параметров. Именно ее мы запустим через сервис Google Colab и поэкспериментруем с ней.


Немного предыстории


Для тех кто не следил за развитием прогресса в обработке естественной речи (NLP).


Летом 2018 года OpenAI предобучили на большом объеме текста нейронную сеть GPT, построенную на архитектуре Transformer. Оказалось, что если заменить пару последних слоев и дообучить ее под конкретную задачу (такой подход называется Fine Tuning и широко используется в машинном обучении), то это бьет предыдущие рекорды сразу по широкому спектру разговорных задач.


На основе этой разработки, в конце 2018 года в Google создали свою нейросеть BERT. Они серьезно улучшили результат, сделав нейросеть двунаправленной, в отличие от GPT.


Не желая сдаваться, в феврале 2019 года в OpenAI увеличили свою GPT сразу в 10 раз и обучили ее на еще большем объеме текста — на 8 млн интернет страницах (суммарно на 40 Гб текста). Получившаяся таким образом сеть GPT-2 является на данный момент самой большой нейросетью, с беспрецендентным числом параметров 1.5 млрд (у BERT в самой крупной модели было 340 млн, а у стандартной BERT 110 млн).


Как результат, GPT-2 оказалась способной генерировать целые страницы связного текста. С повторными упоминаниями имен действующих лиц по ходу повествования, цитатами, отсылками к связанным событиям и так далее. Примеры приводить здесь не буду, а отсылаю желающих к оригинальной статье в блоге OpenAI: Better Language Models and Their Implications или по ссылкам в конце статьи.


Генерация связного текста такого качества это само по себе впечатляюще, но самое интересное здесь другое. GPT-2 без всякого дообучения сразу показала близкие к state-of-the-art результаты на целом ряде разговорных задач. Повторяю, кто пропустил важность момента — без всякого дообучения под конретную задачу!


Как они этого добились? Просто задавая нейросети правильные вопросы.


Архитектура GPT-2


GPT-2 обучена предсказывать следующее слово в предложении. Это классический подход для генерации текста. Сначала пальму первенства в этой области держали рекуррентные (RNN) сети, в частности, LSTM. Но после изобретения летом 2017 года архитектуры Transformer, в разговорных задачах постепенно она стала преобладать. Хотя у оригинального Transformer есть проблема с запоминанием длинных последовательностей (LSTM помнят более длинные), но быстрота обучения и глубина сети с лихвой компенсировала это. Кстати, сейчас уже появился целый ряд модификаций трансформера — с введением в него рекуррентности (Universal Transformers), модификация для более длинных последовательностей (Transformer-XL) и другие, но в Google и OpenAI пока используют лишь слегка тюнингованный оригинальный Transformer.


BERT от Google, напомню, обучался немного иначе: предсказывать не следующее слово в предложении, а пропущенные (закрытые маской) слова в предложении. А также определять, являются ли два последовательных предложения логичным продолжением друг друга, или они никак не связаны между собой по смыслу. Это позволило BERT быть языковой моделью, понимающей смысл слов в зависимости от их окружения (от контекста). Что и определило успех BERT в NPL задачах. Но только после дообучения (Fine Tuning) под конкретную задачу. Просто предсказание слов в базовой модели в нем работает не очень. Можете сами поиграться с BERT в браузере (через Google Colab): https://habr.com/ru/post/436878.


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


Интересная деталь: исследования OpenAI показали, что массивы текстов Wikipedia и литературных книг (на которых обучался BERT, в частности) имеют предвзятый стиль. Поэтому обученные только на них нейросети не очень хорошо генерируют текст. Чтобы разнообразить входные данные и стили, в OpenAI для обучения GPT-2 использовали обычные интернет страницы, собранные с 8 млн сайтов (суммарно 40 Гб текста). А чтобы отбросить рекламные и спамерские сайты, они включали в выборку сайты, ссылки на которые в реддите имеют хороший рейтинг. То есть сайты, которые живые пользователи сочли содержащими какую-то полезную информацию.


Правильный вопрос содержит половину ответа


Итак, GPT-2 благодаря беспрецедентному размеру, оказалась способна генерировать страницы связного текста. Но самое удивительное, что задавая ей правильный вопрос (т.е. правильное начало фразы), она смогла отвечать на различные вопросы! Просто потому что продолжение такого начала является самым естественным.


Для примера, чтобы получить ответ на вопрос "Что такое Земля?", можно подать на вход этой нейросети начало фразы: "Земля это...". И она дополнит эту фразу до конца. Потому что ответ будет естественным продолжением такого начала.


Более того, формируя правильным образом начало фразы, можно получить объяснения для разной целевой аудитории с учетом ее интеллекта, возраста и образования. Представьте себе продолжения фраз: "Я, как ученый, считаю что Земля это...". Или "Я, как плоскоземельщик, утверждаю что Земля это...". Или: "Я, будучи воспитателем в детском саду, сейчас объясню вам, дети, что Земля это...".


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


Эта разработка OpenAI и способность сети GPT-2 давать ответы на разговорных задачах без специального дообучения под конкретную задачу, открывают два интересных вопроса:


1) Может ли интерпретируемость нейронных сетей быть достигнута таким элементарным генератором текста и правильным началом фразы. Где ответ будет естественным продолжением. Пусть, например, нейронная сеть указывает котиков на фотографии не числами-координатами x и y, а объясняет его положение обычным текстом. Тогда в ходе уточнения задав ей правильный вопрос, например: "Я пришла к этому выводу, потому что...", можно в теории получить объяснение как она нашла котика на фото. И это объяснение в предельном случае может быть не хуже человеческого. Что решает глобальную проблему интерпретируемости нейронных сетей.


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


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


А точнее?


Если вы сейчас стоите, то лучше сядьте. Потому что вот как OpenAI с помощью нейросети GPT-2 получили свои результаты в разговорных задачах для разных доменов:


Ответы на вопросы по тексту


Ну, это просто. Либо скармливали сети несколько абзацев с описанием, включающем в себя где-нибудь посередине, например "яблоко лежит на столе", а в конце приписывали: "яблоко лежит на..." и сеть дописывала "столе". Потому что способна помнить контекст нескольких абзацев.


Либо скармливали сети в качестве начальной фразы несколько примеров вида "Вопрос: какой-то вопрос, Ответ: какой-то ответ", а в конце после реального вопроса добавляли: "Ответ:". И нейросеть дописывала ответ! Так как выявила структуру документа по предыдущим Вопрос-Ответ. Это удивительно.


Краткая версия (Summarization) текста


На входе подается длинный текст из нескольких абзацев или даже страниц, а нейросеть должна написать короткое содержание. Как такое поведение получили от GPT-2? Просто после текста добавили "TL;DR". И все! Этого оказалось достаточно, чтобы после этих символов GPT-2 дописала краткое содержание статьи! Потому что такими символами в интернете часто обозначают краткое содержание поста.


Перевод текста


На вход GPT-2 подали текст в виде: "hello = привет, dog = собака, wind = ветер, cat = ...". И нейросеть дописала перевод последнего слова: "кошка" (в оригинале на французском). Потому что выявила структуру документа и просто дополнила его наиболее логичным продолжением. Если у вас до сих пор не отвисла челюсть от всего этого, то у меня для вас две новости, и обе плохие =).


Запуск GPT-2 через Google Colab


К сожалению, полную версию GPT-2 в OpenAI отказались выкладывать в общий доступ. Мотивируя это тем, что с помощью этой нейросети будет слишком просто генерировать фейковые новости и отзывы в магазинах. Судя по их заявлению, обсуждение целесообразности выкладывания этой модели будут продолжаться ближайшие 6 месяцев, в после OpenAI решат окончательно, выкладывать или нет. Впрочем, для крупной организации повторить модель не составляет труда (похоже, что они обучали ее на 256 TPU несколько дней, и по предварительным подсчетам это обошлось им около 45 тыс. $)


Однако они выложили уменьшенную версию GPT-2 со 117 млн параметрами (а не 1.5 млрд, как в полной модели): https://github.com/openai/gpt-2. Попробуем запустить ее и поиграться с этой моделью.


Проще всего это сделать через Google Colab:


  1. Откройте ссылку

http://colab.research.google.com/github/blade1780/bert/blob/master/Gpt-2.ipynb


  1. В меню Runtime выберите Run All, чтобы в первый раз запустились все ячейки, скачалась модель и подключились нужные библиотеки. Согласитесь сбросить все Runtime, если потребуется. Вводите текст после появления "Model prompt >>>" и нажимайте Enter.

Если что-то пошло не так...

Убедитесь, что в меню Runtime -> Change runtime type выбрано GPU и Python 3


Если кнопка подключения не активна, нажмите ее, чтобы стало Connected.


Или создайте весь код вручную:


  1. Перейдите на https://colab.research.google.com
  2. Нажмите на синюю кнопку NEW PYTHON 3 NOTEBOOK
  3. В меню Runtime -> Change runtime type выберите Python 3 и GPU (последнее чтобы запускать нейросеть на GPU)
  4. В первой ячейке введите:

!git clone https://github.com/openai/gpt-2
%cd gpt-2
!sh download_model.sh 117M
!pip3 install -r requirements.txt

И нажмите черный значок Play слева от ячейки. Это загрузит нейросеть GPT-2 и установит необходимые зависимости.


Во второй ячейке (добавить ее можно через меню Insert -> Code cell или наведя мышь под центром текущей ячейки, всплывут кнопки добавления):


!python3 src/interactive_conditional_samples.py

Это запустит интерактивный режим. Дождитесь пока загрузится нейросеть и внизу появится окошко для ввода текста, с надписью ""Model prompt >>>". Вводите начало фразы и нажимайте Enter. Через некоторое время появится сгенерированный текст под заголовком SAMPLE.


Можно также запустить режим генерации полностью случайного текста. Текст будет генерироваться бесконечное время небольшими кусками SAMPLE 1, SAMPLE 2 и так далее, пока не нажмете кнопку Stop у ячейки. Для этого создайте новую ячейку с кодом:


!python3 src/generate_unconditional_samples.py | tee samples.txt

Результат будет сохранен в файл samples.txt. Его можно скачать следующими командами (снова создайте новую ячейку и запустите ее после генерации текста):


from google.colab import files
files.download('samples.txt')

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


!python3 src/generate_unconditional_samples.py --top_k 40 --temperature 0.7 | tee samples.txt

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


Примеры генерируемого текста


Образцы генерируемого полной моделью текста: https://blog.openai.com/better-language-models/#sample1 (вверху полоски переключателя на 8 историй).


Также есть огромный 2.4 Mb текстовый файл со случайно сгенерированными образцами: https://raw.githubusercontent.com/openai/gpt-2/master/gpt2-samples.txt


И еще один, 2.27 Мб, с другими настройками случайности: https://raw.githubusercontent.com/openai/gpt-2/master/gpt2-topk40-samples.txt


Ссылки


Комментарии (53)


  1. edogs
    17.02.2019 00:11

    на 8 млн интернет страницах (суммарно на 40 Гб текста)
    В оригинале очень похоже «was trained simply to predict the next word in 40GB of Internet text».
    Но 40гб это как-то мало, по 5кб с сайта? Две странички А4?
    Может кто-то объяснить?


    1. DesertFlow Автор
      17.02.2019 00:29

      Там не полные страницы использовались, а куски текстов, выбранные какой-то разработанной ими эвристикой. Изначально это было 45 млн ссылок, из которых удалили дубликаты, совпадающие тексты с википедией, чтобы избежать ее формализованного языка и так далее. В итоге осталось чистого текста на 40 Гб из примерно 8 млн интернет-страниц.

      Как именно отбирались куски текста из страниц в работе толком не описано, но судя по использованию слов «Dragnet» и «Newspaper content extractors», они прогоняли текст со страниц через какие-то классификаторы новостей и разговорной речи. Из-за этого в генерируемом тексте так много цитат, а стиль напоминает новостные сайты. Но это только догадки…


    1. DesertFlow Автор
      17.02.2019 00:37

      Вообще, с классификаторами в генерации текстов в NLP все сложно и запутано… Какая-то предобработка текстов в любом случае нужна. Но она же оказывает влияние на результат.

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

      При этом Алиса со стороны вполне себе разговорный бот, а благодаря таком подходу гарантированно не использует оскорбительных фраз. Кроме тех, что пропущены при сборке базы, хе-хе. Или получившимися таким из-за контекста, вроде знаменитой: «Выхода нет» — «Выход всегда есть. В окно»


  1. Doverchiviy_kot
    17.02.2019 00:26

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


    1. JediPhilosopher
      17.02.2019 18:40
      +2

      Причем миллиард копий купят боты, которые там используются для накруток популярности. «Искусство от роботов и для роботов». Киберпанк который мы заслужили.


  1. vassabi
    17.02.2019 01:40

    уже и Андрей Карпати написал(в моем вольном переводе): «чем больше вы пишете в интернете, тем выше риск что будущая версия нейросети сможет лучше генерировать тексты, как будто это пишете вы сами»


  1. artskep
    17.02.2019 06:55

    КМК, без примера сгенерированного текста статья выглядит неполной.


    1. DesertFlow Автор
      17.02.2019 22:13
      +1

      Пожалуй, да. Сейчас добавлю ссылки. И перечитав, замечаю много стилистических ляпов и ненужных повторов. Первоначально это не планировалось как статья, а как короткая заметка как запустить доступную версию GPT-2 с 117М параметрами через Google Colab. Еще не все привыкли, что практически все новейшие нейросетки можно запускать в браузере (даже на смартфонах) через этот сервис. А тут так удачно сделано, что не пришлось ничего дописывать, достаточно следовать инструкции в несколько строчек с официального гитхаба.

      На образцы генерируемого полной моделью текста прямая ссылка: https://blog.openai.com/better-language-models/#sample1 (вверху полоски переключателя на 8 историй).

      Также есть огромный 2.4 Mb текстовый файл со случайно сгенерированными образцами: https://raw.githubusercontent.com/openai/gpt-2/master/gpt2-samples.txt

      И еще один, 2.27 Мб, с другими настройками случайности: https://raw.githubusercontent.com/openai/gpt-2/master/gpt2-topk40-samples.txt

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

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


  1. demjanich
    17.02.2019 08:26

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


    1. Sychuan
      17.02.2019 15:15

      Потестировал сеть. Уровень связности текста достаточно слабый.

      Это ведь микромодель. Ту про которую они написали статью в открытый доступ не выложили


      1. DesertFlow Автор
        17.02.2019 22:22

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


  1. ilya_pu
    17.02.2019 10:37

    Ждём появления курсовых и дипломных (да что уж там, давайте заодно и диссертации!), написанных нейросетью — и преподаватели станут совсем не нужны… поскольку не справятся с тем, чтобы отличить настоящую работу, написанную человеком, от нейросетевой нарезки умных фраз. Кстати, вот вопрос: разрабатываются ли параллельно с прямой задачей машиной генерации текстов обратные задачи определения степени «человечности» автора текста?


    1. JediPhilosopher
      17.02.2019 18:42
      +1

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


    1. DesertFlow Автор
      17.02.2019 22:27

      Кстати, вот вопрос: разрабатываются ли параллельно с прямой задачей машиной генерации текстов обратные задачи определения степени «человечности» автора текста?

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

      Генерация текста еще не достигла таких высот, чтобы требовалась обратная задача. Удачные примеры есть только по узким областям. Например, было что-то про генерацию отзывов на книги в Амазоне. Но видимо исследователи считают, что это проблемы только Амазона. Хе-хе. Наивные.


  1. janvarev
    17.02.2019 12:11
    +3

    Под впечатлением, но…
    попробую немного дополнить статью фактами и примерами, разбросанными по разным источникам.

    1. Оригинальная статья демонстрирует примеры практически уровня magic касабельно генерации текста:

    1 текст про единорогов
    SYSTEM PROMPT (HUMAN-WRITTEN)
    In a shocking finding, scientist discovered a herd of unicorns living in a remote, previously unexplored valley, in the Andes Mountains. Even more surprising to the researchers was the fact that the unicorns spoke perfect English.

    MODEL COMPLETION (MACHINE-WRITTEN, 10 TRIES)
    The scientist named the population, after their distinctive horn, Ovid’s Unicorn. These four-horned, silver-white unicorns were previously unknown to science.

    Now, after almost two centuries, the mystery of what sparked this odd phenomenon is finally solved.

    Dr. Jorge Perez, an evolutionary biologist from the University of La Paz, and several companions, were exploring the Andes Mountains when they found a small valley, with no other animals or humans. Perez noticed that the valley had what appeared to be a natural fountain, surrounded by two peaks of rock and silver snow.


    1. DesertFlow Автор
      17.02.2019 22:30
      +1

      Спасибо за критический взгляд. Я, как и многие фанаты развития ИИ, часто переоцениваем новости. Выдавая желаемое за действительное.


  1. wikipro
    17.02.2019 12:38
    -2

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


    1. unclejocker
      17.02.2019 13:01
      +2

      Логических выводов эта сеть не делает в принципе. Она подбирает наиболее вероятное слово исходя из набора предыдущих слов (по очень сложному закону). Но смысла слов не «понимает».


      1. VioletGiraffe
        18.02.2019 14:47

        А вопрос в том, понимаем ли мы сами смысл? И есть ли такой объём учтённого контекста, при котором сеть, подбирающая наиболее вероятное слово исходя из набора предыдущих слов, пройдёт тест Тьюринга?


        1. unclejocker
          18.02.2019 14:58

          Если понимать под словом «смысл» установление связей между словами и объектами и событиями в реальном мире, то мы понимаем, а (представленная) нейронная сеть таких связей не устанавливает и следовательно, с моей точки зрения — смысла слов не понимает.

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


    1. vassabi
      17.02.2019 14:07

      такие нейросети уже представляют собой, если не угрозу, то обременение — если раньше вы могли читать связный текст и размышлять над тем смыслом, который хотел выразить автор, то сейчас
      1) приходится себя спрашивать «а не сгенерированный ли это текст»? Есть ли у него автор и был ли вообще смысл?
      2) таких текстов можно наделать гораздо больше, чем даже теоретическая продолжительность человеческой жизни сможет позволить прочитать.


      1. Sychuan
        17.02.2019 15:17

        и был ли вообще смысл?

        Ну это не новость. Вы почитайте философов 20-го века.


    1. DesertFlow Автор
      17.02.2019 22:48
      +1

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

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


      Я взял строчку из статьи: "hello = привет, dog = собака, wind = ветер, cat = " и вбил ее в уменьшенную 117М версию этой нейросети.


      И она выдала: "hello = привет, dog = собака, wind = ветер, cat = собакра, heifer = вете, biryani = граков, really = русской, soul = собаков, leaven = режде, can = ходдеч?"


      Смотрите, даже урезанная кастрированная версия этой нейросети определила структуру текста и продолжила его. В виде пар "english = русский". Да, вместо настоящего перевода выдала случайные наборы букв. Но заметьте, русских букв! Возможно, она просто не знает перевода конкретно этих слов, но старается имитировать. По-моему, это потрясающе. Ребенок сделал бы точно так же.


      И возвращаясь к вашему вопросу, в данном случае нейросеть сделала логический вывод, что после пар "english=русский" и последней части "cat = " надо написать перевод на кириллице? Или на основании чего она поступила именно так? Имхо, такие вопросы требуют более глубокого изучения, чем простой ответ "да" или "нет".


      1. VDG
        18.02.2019 01:06

        Или на основании чего она поступила именно так?

        Во всех этих миллионах параметров она где-то внутри себя создала регулярное выражение для распознавания и генерации всех этих «hello = привет,». )


  1. Hardwar
    17.02.2019 14:24
    +5

    Компания, называющая себя "OpenAI" отказывается выкладывать свою разработку в открытый доступ.


    1. powerman
      17.02.2019 15:53
      +4

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


  1. Stepan555
    17.02.2019 14:27

    Нда, если роботы будут учиться на всём том мусоре, который пишут бездельники в Интернете, то планета в опасности!


    1. DesertFlow Автор
      17.02.2019 22:51

      Бородатая шутка ML специалистов: Моя нейросеть каждый раз предсказывает неизбежный конец человечеству. Скажите пожалуйста, она недоучена или переобучена?


  1. raamid
    17.02.2019 15:19

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


  1. chinacoolhacker
    17.02.2019 15:48
    +3

    Запустил

    что-то в этом есть...
    ======================================== SAMPLE 1 ========================================
    2. The state of the United States, the United Kingdom, Italy, the Netherlands, Japan, and Germany, as well as the United States.

    3. The United States has a constitutional monarchy.

    4. The United States has a free press.

    5. The United States has a national parks.

    6. In fact, the United States has become an independent nation.

    7. The United States has a national parks.

    8. In fact, the United States has become a part of the European Union.

    9. In fact, the United States has become part of the European Union.

    10. The United States has an anti-corruption law.

    11. The United States has a national defense law.

    12. In fact, the United States has become a part of the European Union.

    13. In fact, the United States has become part of the European Union.

    14. In fact, the United States has become part of the European Union.

    15. The United States has a national security law.

    16. In fact, the United States has become part of the European Union.

    17. In fact, the United States has become part of the European Union.

    18. The United States has been involved in the creation of NATO and is actively involved in the development of NATO.

    19. The United States has become part of the European Union.

    20. The United States has become a part of the European Union.

    21. The United States has become part of the European Union.

    22. The United States has become a part of the European Union.

    23. The United States has become a part of the European Union.

    24. The United States has become a part of the European Union.

    25. The United States has become a part of the European Union.

    26. The United States has become a part of the European Union.

    27. The United States has become a part of the European Union.

    28. The United States has become a part of the European Union.

    29. The United States has become a part of the European Union.

    30. The United States has become a part of the European Union.

    31. The United States has become a part of the European Union.

    32. The United States has become a part of the European Union.

    33. The United States has become a part of the European Union.

    34. The United States has become a part of the European Union.

    35. The United States has become a part of the European Union.

    36. The United States has become a part of the European Union.

    37. The United States has become a part of the European Union.

    38. The United States has become a part of the European Union.

    39. The United States has become a part of the European Union.

    40. The United States has become a part of the European Union.

    41. The United States has become a part of the European Union.

    42. The United States has become a part of the European Union.

    43. The United States has become a part of the European Union.

    44. The United States has become a part of the European Union.

    45. The United States has become a part of the European Union.

    46. The United States has become a part of the European Union.

    47. The United States has become a part of the European Union.

    48. The United States has become a part of the European Union.

    49. The United States has become a part of the European Union.

    50. The United States has become a part of the European Union.

    51. The United States has become a part of the European Union.

    52. The United States has become a part of the European Union.

    53. The United States has become a part of the European Union.

    54. The United States has become a part of the European Union.

    55. The United States has become a part of the European Union.

    56. The United States has become a part of the European Union.

    57. The United States has become a part of the European Union.

    58. The United States has become a part of the European Union.

    59. The United States has become a part of the European Union.

    60. The United States has become a part of the European Union.

    61. The United States has become a part of the European Union.

    62. The United States has become a part of the European Union.

    63. The United States has become a part of the European Union.

    64. The United States has become a part of the European Union.




    1. andvary
      17.02.2019 17:08

      Политика вообще такое дело. Вы еще начните с фразу как «Russian society is anything but» или «African Americans are».


  1. vbougay
    17.02.2019 18:25

    Уже новые новости шумят.
    Microsoft’s New MT-DNN Outperforms Google BERT
    medium.com/syncedreview/microsofts-new-mt-dnn-outperforms-google-bert-b5fa15b1a03e


    1. DesertFlow Автор
      17.02.2019 22:58

      Это все тот же BERT, только обученный сразу на нескольких задачах. И поэтому лучше оригинального BERT на 1-2% (в абсолютных значениях). Это давно известный факт, что мультизадачные нейросети показывают немного лучший результат, чем однозадачные. По-моему, впервые это было обнаружено года три назад на переводчиках. Когда одна сеть переводила на несколько языков, результат был чуть лучше, чем когда для каждого языка своя сеть.


  1. IvanGanev
    17.02.2019 18:41

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

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


    1. DesertFlow Автор
      17.02.2019 23:03

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

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


    1. alloky
      17.02.2019 23:52

      Не разделяю этих страхов про фейк ньюс. Сейчас новости по сути распространяются неким аля IP протоколом: какой-нибудь доверенный ТАСС публикует что-то и тут же куча ботов репостит их на свои сайты со ссылками, в некоторых случаях выдавая задание редактором переписать текст и запостить ( я так это себе представляю, реальность может отличаться в зависимости от конторы ). Теперь же просто нужно в каждой новости чекать ссылку на доверенный сайт-источник. Если источник трёт инфу — что ж, такая ситуация и до нейросетей могла быть расцениваема как фейк. Так что не думаю, что появление генератора новостей по заголовку что-то конкретно изменит, т.к. без пруфов всё равно лично я например и сейчас ни одной новости не доверяю.


      1. unclejocker
        18.02.2019 15:08

        ТАСС выгружает подписчикам файлы в формате NewsML по протоколу FTP :)
        В принципе все известные мне новостные агенства так делают, при этом большинство и импортирует и экспортирует новости одновременно.


  1. karay
    17.02.2019 22:33

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


    1. DesertFlow Автор
      17.02.2019 23:11
      +1

      Сейчас нейросети выдают результат в фиксированном числовом виде. Координаты x,y рамки вокруг объекта. Или говорят, что чтобы сделать шаг, выгоднее поднять правую ногу на 76%, чем левую на 24%. Почему они сделали такой вывод — неизвестно. Никакого способа это выяснить, кроме как копаться внутри внутренностей нейросети, отслеживая какой сигнал куда шел, не существует.


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


      Тогда у такой нейросети всегда можно будет спросить: "А почему ты пришла к такому выводу?". Эта работа OpenAI с ее сеткой GPT-2 показывает, что простая генерация следующего слова в предложении, автоматически заставляет нейросеть давать правдивый ответ. Потому что он является логичным и естественным продолжением для такого ответа.


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


      1. karay
        18.02.2019 00:44

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

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

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

        Повторюсь, я пока не знаком с архитектурой GPT-2, но судя по всему это следующее развитие RNN и я уверен, что та интерпретируемость, о которой идет речь в статье, не имеет под собой абсолютно никаких оснований, либо не указана какая то ключевая информация.


        1. DesertFlow Автор
          18.02.2019 02:59

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

          Сейчас нейросети, управляющие автомобилем, говорят: «Поверните руль на 20 градусов влево». И все. Зачем, почему? Непонятно… Черный ящик! А если они будут говорить: «Поверните руль на 20 градусов влево, потому что иначе столкнетесь с автомобилем, приближающимся справа, а так вы займете свободную полосу слева от вас и все будет хорошо».

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

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


      1. vassabi
        18.02.2019 01:36

        Тогда у такой нейросети всегда можно будет спросить: «А почему ты пришла к такому выводу?». Эта работа OpenAI с ее сеткой GPT-2 показывает, что простая генерация следующего слова в предложении, автоматически заставляет нейросеть давать правдивый ответ. Потому что он является логичным и естественным продолжением для такого ответа.
        не правдивый, а похожий на правдивый.


  1. Chupans
    17.02.2019 22:33
    +1

    Интересен результат для входных данных: «Для улучшения результатов данной нейросети, необходимо ...».
    Возможна ли ситуация, когда очередная нейросеть уже даст действительно осмысленные инструкции?


    1. DesertFlow Автор
      17.02.2019 23:14

      В каком-то смысле и та что есть, выдает осмысленный ответ. Смотря что считать осмысленностью. Если вы можете предоставить объективный численный критерий, по которому можно отличить осмысленный критерий от неосмысленного, то тогда можно будет сказать определеннее.


      p.s. это был вопрос с подвохом, если что =)


    1. karay
      18.02.2019 00:56

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


      1. DesertFlow Автор
        18.02.2019 03:16

        Нейронные сети не основаны на статистике. Они (по крайней мере, SGD обучение) основаны на поиске в идеале глобального, но на практике чаще разные виды локальных экстремумов в многомерном пространстве параметров. Нахождение в глобальной(локальной) точке экстремума может означать что угодно, в том числе разумность или выдавание того, что сеть раньше не видела. Это не статистика, это нечто совсем другое.


        Современным нейросетям надо так много данных из-за несовершенства математики обучения — оно делается очень маленькими шагами вдоль градиента к точке экстремума. Поэтому нужно много повторений показа примеров. Если бы существовал способ сразу прыгнуть в эту точку, то обучение было бы на единственном примере. И такие методы существуют, например см. метод Ньютона второго порядка, да и сами оптимизации стандартного SGD алгоритма вроде adam, на самом деле просто адаптивно увеличивают длину шагов вдоль градиента, с разными ухищрениями чтобы не перепрыгнуть узловую точку. Подробнее можно почитать например тут. Но все это работает… Ну, как есть. Здесь может быть причина в фундаментальной сложности подобного рода оптимизаций.


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


        1. karay
          18.02.2019 11:25

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

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

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

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

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

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


          1. DesertFlow Автор
            19.02.2019 00:00

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

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

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

            Однако если сеть, генерирующую лица, обучать не только на фотографиях, но и на массивах текстов (хотя бы для понимания, кто именно и в каких обстоятельствах сделал эту фотографию/портрет). И целевой функцией сделать не минимизацию MSE, а правдоподобие что эта картина написана живым художником. Что достижимо через те же GAN. И добавить рекуррентности или тысячи слоев, ее заменяющие, для обратной связи с пользователем. То такая надпись вполне может появиться! Это можно будет назвать моментом появления сильного ИИ, зарождением самосознания или как угодно. Но технически это будет просто правдоподобная имитация
            художника, застрявшего в компьютере и способного общаться с внешним миром только через свои картины. Согласитесь, это явно выходит за рамки простых статистических методов, а является полноценным ИИ.

            Или пример намного проще: у какой-нибудь GPT-9999 можно будет на вход подать фразу «Я, Альберт Эйнштейн, разработал новую версию ОТО. Основная ее суть заключается в том, что...». И нейросеть допишет, в чем она заключается =). Создание это нового или нет, сами решайте. Но технически это возможно, потому что такое поведение (хоть и в очень упрощенной форме) GPT-2 уже продемонстрировала.

            А интерпритируемость сети — это вообще о другом.

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


            1. karay
              19.02.2019 01:17

              Вы перемешали все, что только можно. Линейная регрессия на то и регрессия — она возвращает непрерывное значение (y=a+b*x).

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

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

              Сеть может сказать, почему она выдала именно такой результат — полный бред. Я уже немного подустал вести с вами дискуссию. Предлагаю остановиться на том, что я не прав :)


          1. DesertFlow Автор
            19.02.2019 00:13

            И эта сеть вам не скажет, почему она ответила вам именно так, если ее этому не научат.

            GPT-2 как раз доказывает обратное. Следите за руками:


            1. Подаем на вход GPT-2 фразу: "Земля от Солнца находится по счету...". Нейросеть дописывает: "третьей".


            2. Добавляем в конец этой фразы словосочетание ", потому что..." и вновь подаем на вход GPT-2: "Земля от Солнца находится по счету третьей, потому что...". И нейросеть дописывает: "потому что первыми идут Меркурий и Венера".



            Как видите, нейросеть объяснила почему она считает, что Земля идет третья по счету. Пример условный, просто для объяснения принципа.


            Это не значит, что в GPT-2 сидит встроенный сильный ИИ, который объясняет свои действия. Просто такой ответ естественен для продолжения этих фраз. Внутри нейросети оба ответа имеют какие-то перекрестные связи, поэтому это настоящий ответ, а не генерация случайного текста. Где доказательства, что люди не таким же способом выдают свои ответы?


  1. DmitrySpb79
    18.02.2019 01:21

    Хм. Нейросеть генерирует тексты? Я всегда был уверен что Донцова именно так и работает, иначе как можно выкладывать по 90 книг в год, да еще с такими названиями :)


  1. GarryC
    18.02.2019 13:20

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


  1. NeocortexLab
    19.02.2019 00:00

    Model prompt >>> God
    Привёл сеть в ступор ))) очень интересная заметка и этот эксперимент Гугла… но хотелось бы, конечно, полную версию в студию