Феофан это бот, умеющий рассуждать логически на русском языке ФРЯ Например, если Феофану сообщить, что все люди смертны, а Сократ это человек, то он сообразит, что Сократ тоже смертен. См. Примеры

Wednesday, August 21, 2019

Про Феофана

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

Примеры:














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

В пансионате у моря вдоль берега в ряд стоят пять разноцветных коттеджей. У каждого из джентельменов, приехавших сюда отдохнуть из разных стран, свой отдельный коттедж. Джентельмены оригинальны всегда и во всём, поэтому каждый курит свою особую марку сигарет, предпочитает свой особый напиток и заботится о непохожем на других домашнем животном. Подданный британский короны живёт в красном доме, швед выгуливает собаку, джентельмен из Дании каждый день в 5 часов пьёт чай. В Зелёном доме, расположенном рядом с белым, слева от него, на ланч подают кофе. Тот, кто курит сигареты Pall Mall, любит слушать трели своей любимой канарейки. Джентельмен из жёлтого коттеджа курит только Dunhill. По утрам в дом, расположенный посредине, подвозят свежее молоко. В доме у края проживает джентельмен из Норвегии. Тот, кто курит сигареты Blends, живёт рядом с домом, где из окошка выглядывает кошка. Тот, кто катается верхом на лошади, живёт рядом с тем, кто курит Dunhill. Любитель пива курит Blue Master. Немец курит сигареты Prince. Джентельмен, прибывший из Норвегии, поселился рядом с синим домом. А сосед того, кто курит Blends, пьёт только воду. Кто разводит рыбок?

Феофан разгадывает эту загадку меньше чем за минуту.

(Semantic Web begin) /*add http:/bb.feofan.com/OntologyC.txt */ Kate marries Bill. (Semantic Web end) - это кусочек для другой логической программы-примера на контролируемом английском языке http://bb.feofan.com

Saturday, July 20, 2019

480 атомов нарушили локальный реализм

Физики из Университета Базеля и Национального Университета Сингапура продемонстрировали нарушение многочастичных неравенств Белла для крупной системы сжатых спинов, состоящей из 480 атомов рубидия. Ранее были известны аналогичные эксперименты лишь с десятками частиц. По словам авторов, эксперимент показывает, что крупные коррелированные системы можно использовать для работы с квантовой информацией наравне. Одно из их возможных приложений — эффективная генерация случайных величин. Исследование опубликовано в журнале Science, также доступен препринт работы.
Неравенства Белла, в простейшем случае, представляют собой ограничение на связь между результатами двух измерений, проводимых в разных точках пространства. Они порождены принципом локальности, запрещающим одной системе моментально влиять на физическую реальность другой системы. Проиллюстрировать их работы можно на примере измерений квантовых свойств двух частиц, к примеру, поляризации фотонов или спинов фермионов. 
В одном из мысленных экспериментов неравенства Белла указывают на то, что измеряя разные проекции поляризации у двух частиц, рожденных в одном процессе, мы получим совпадения экспериментов как минимум в трети случаев. На практике же совпадения наблюдаются лишь в 25 процентах измерений. Это указывает на то, что состояния частиц скоррелированы сильнее, чем это можно объяснить «договоренностью» о поведении в экспериментах (внутренними параметрами). Это пример нарушения принципа локальности, при котором состояние одной частицы может моментально влиять на исход измерения свойств другой частицы.
Физики-теоретики расширили неравенства Белла и на многочастичный случай — когда скоррелированными оказываются сразу много частиц. Такие системы ближе к макроскопическому миру, однако до сих пор нарушения локальности и белловские корреляции удавалось обнаружить лишь в системах из 14 ионов, четырех фотонов, пар атомов и пар кубитов. Одна из сложностей поиска таких связей состоит в том, что экспериментаторы измеряют глобальные свойства систем и их необходимо каким-то способом перенести на свойства компонентов системы.
В новой работе ученые значительно увеличили количество частиц в исследуемой системе. Авторы поймали в магнитную ловушку около полутысячи холодных атомов рубидия, после чего, с помощью лазера сформировали в них особое спиновое сжатое состояние. В этом состоянии направление «оси вращения» частицы может колебаться лишь внутри очень вытянутого эллипса (обычно спины описывают окружности в магнитном поле). Затем атомам позволили сталкиваться друг с другом — это влияло на их внутренние состояния и именно так рождалась «квантовая связь» между частицами. После этого, опять таки с помощью лазерных импульсов физики измеряли коллективный спин системы.
Авторы изменили формулировку многочастичного неравенства Белла для предложенного эксперимента. Его измененная версия показывала, что определенная функция, зависящая от коллективного спина и пары векторов, описывающих сжатое состояние спинов, должна быть больше нуля. Данные исследования показали, что при определенных условиях это условие нарушалось со значимостью 3,8 сигма, что свидетельствует о том, что система скоррелирована сильнее, чем то допускает классическая физика.
Алексей Рубцов, руководитель группы сильно-коррелированных квантовых систем Российского Квантового Центра, отмечает, что полученная статистическая значимость — очень неплохой результат для такого рода экспериментов. По словам физика, выбор холодных атомов рубидия для эксперимента позволил эффективно бороться с декогеренцией. 
По словам физиков, новая работа открывает новые возможности для количественного анализа нарушения нелокальности в системах, подобно тому, как количественно можно описывать степень запутанности частиц. Кроме того, предложенная система может использоваться в генерации достоверно случайных величин — этот процесс уже был описан для пар кубитов, но для многочастичных объектов он может оказаться более эффективным.
Владимир Королёв

Геймеры помогли доказать нелокальность законов природы




The BIG Bell test Collaboration / Nature
Группа BIG Bell Test экспериментально подтвердила нелокальность законов природы, использовав для этого данные, полученные с помощью браузерной игры. В разработанной учеными игре десятки тысяч участников придумывали случайные последовательности чисел, которые потом использовались в эксперименте. Такой подход позволил избавиться от влияния «скрытых параметров» на работу генератора случайных чисел и подтвердить нелокальность законов с очень высокой точностью, пишут ученые в статье в Nature.
Принцип локальности, предложенный в 1935 году Эйнштейном вместе с Подольским и Розеном, утверждает, что на результаты эксперимента могут повлиять только близко расположенные к месту его проведения объекты. При этом движение всех частиц можно описать без привлечения теории вероятности и волновых функций, вводя в теорию некие «скрытые параметры», которые невозможно измерить с помощью обычных инструментов. Казалось бы, это требование выглядит вполне естественно, однако в действительности принцип локальности не выполняется. Вместо этого оказывается, что квантовые объекты можно связать таким образом, что они будут практически мгновенно обмениваться информацией даже при удалении на очень большое расстояние. Такую связь называют квантовой запутанностью. Неважно, как далеко вы разнесете два запутанных фотона: хоть на разные концы галактики Млечный путь, — но если вы не разрушите при этом их квантовое состояние, измерение состояния одного из фотонов позволит с точностью предсказать исход эксперимента с другим фотоном.
Для проверки принципа локальности можно использовать одну из возможных реализаций эксперимента, теоретически обоснованногов 1964 году американским физиком Джоном Беллом. Чтобы поставить такой эксперимент, необходимо выполнить следующие три условия. Во-первых, нужно получить квантово-запутанные частицы и разнести их на достаточно большое расстояние, стараясь сохранить их запутанность. Во-вторых, квантовые состояния этих частиц нужно быстро и с высокой точностью измерить. Наконец, необходимо собрать достаточно большую статистику, то есть поставить множество экспериментов, случайным образом изменяя схему эксперимента от опыта к опыту (например, варьируя длину пути, по которому проходят запутанные фотоны). В результате окажется, что при наличии «скрытых параметров» эксперимент выдаст одни соотношения для различных конфигураций установки, а при их отсутствии — другие. Этот факт выражают неравенства Белла.
В течение долгого времени выполнить первые два условия было довольно сложно, однако при текущем уровне развития технологий получение запутанных состояний стало практически повседневной задачей — например, уже введены в эксплуатацию линии передачи зашифрованной информации, основанные на квантовой запутанности (123). К сожалению, с третьим условием дела обстоят несколько хуже. Проблема состоит не столько в том, чтобы собрать большую статистику (хотя когда-то это было основным препятствием для проверки неравенств Белла), а скорее в том, чтобы изменять конфигурацию установки по-настоящему случайно. Поскольку все существующие эксперименты по проверке локальности полагаютсяна квантовые генераторы случайных чисел, то они всего лишь выражают связь между различными физическими процессами. Другими словами, в подобной схеме нельзя с уверенностью исключить возможность влияния «скрытых параметров» на генерацию случайных чисел. Исправить эту проблему, совершенствуя физические генераторы случайных чисел, нельзя.
Чтобы избавиться от этого недостатка, группа BIG Bell Test предложила использовать такой источник случайности, для которого влияние «скрытых параметров» (вероятно) должно быть сведено к минимуму — человеческое сознание и свободную волю. Вообще говоря, человек является плохим генератором случайных чисел — например, людям кажется, что нули и единицы в случайной последовательности должны быть распределены более-менее равномерно, а потому вероятность смены числа (то есть вероятность того, что после нуля последует единица, а после единицы ноль) оказывается несколько завышена по сравнению с по-настоящему случайной последовательностью. Тем не менее, последние теоретические работы показали, что в действительности для проверки неравенств Белла абсолютная случайность последовательности чисел не требуется — гораздо важнее, чтобы они были статистически независимы от «скрытых параметров».
Конечно же, физики не пытались придумать случайные последовательности самостоятельно, а поступили гораздо хитрее — разработали браузерную игру, в которое требовалось получить как можно более длинную случайную последовательность нолей и единиц. Чем длиннее последовательность, созданная игроком, тем больше очков он получает, а при выполнении определенных задач игрок переходит на новый уровень. Разумеется, достижениями можно делиться в социальных сетях. Для оценки случайности последовательности ученые разработали специальный алгоритм (в игре он выступает в качестве «оракула»), который использует обучение с подкреплением и может предсказывать, какое число игрок назовет следующим. Между прочим, обхитрить этот алгоритм и дойти до последних уровней игры оказывается очень непросто — попробуйте и убедитесь в этом сами.
Предложенный подход позволяет естественным образом улучшить «случайность» генерируемых чисел. Правда, ученые использовали все без исключения данные, которые генерировали игроки, не различая «новичков» и «опытных пользователей», а потому итоговая последовательность битов все-таки заметно отклонялась от случайной. Так, в среднем игроки выбирали ноль немного чаще, чем единицу (с вероятностью около 52 процентов), а вероятность смены числа, как и ожидалось, была завышена (она составила около 64 процентов). Однако все эти недостатки компенсировались высокой скоростью генерации чисел — широкое освещение в прессе и использование механизмов социальных сетей позволило ученым привлечь так много внимания, что в определенные моменты число игроков доходило до ста тысяч, а скорость генерации достигала значений порядка тысячи бит в секунду. Более того, поскольку в игру играли люди во всех часовых поясах, поток чисел оставался практически постоянным в течение суток. На момент написания статьи было зарегистрировано порядка ста миллионов случайных выборов.
Затем полученный поток битов отправлялся в один из тринадцати экспериментов для проверки неравенств Белла. Десять из этих экспериментов работали с па́рами запутанных фотонов, два — с запутанными фотонами и атомами, и еще одна установка запутывала между собой сверхпроводниковые кубиты. Все установки работали одновременно (измерения проводились 30 ноября 2016 года) и использовали один и тот же поток чисел, но находились в разных частях земного шара, а потому должны были еще сильнее чувствовать возможную локальность законов природы. Тем не менее, ни один из экспериментов локальности не увидел, причем статистическая значимость в различных опытах составляла от 3 до 140 сигма — другими словами, вероятность того, что законы природы все-таки локальны, практически в точности равна нулю (для сравнения: статистическая значимость 20 сигма отвечает вероятности ошибки не более 10−200). Более подробно об экспериментах можно будет прочитать в соответствующих работах, которые в скором времени будут опубликованы.
Помимо практического значения работы для проверки физических гипотез, авторы статьи также отмечают и ее философское содержание. Действительно, случайность событий, которые в данном случае генерировались благодаря «свободной воле» игроков нажимать ноль или единицу на клавиатуре, прямо противоречит концепции причинного детерминизма, который ранее был доступен только для метафизических исследований.
В последнее время ученые все чаще используют игры, чтобы привлечь дополнительные вычислительные мощности. Например, в сентябре 2016 года мы писали, как компьютерные игроки, использующие краудсорсинговую платформу игры Foldit, предсказаликристаллическую структуру белков, обогнав по эффективности специалистов и компьютерные алгоритмы. Кроме того, игры очень удобно использовать для привлечения внимания и обучения заинтересованных людей (такой подход называют геймификацией). Так, физики из Орхусского Университета разработали игру Quantum Moves, имитирующую работу оптического пинцета, а программист Петр Мигдал (Piotr Migdal) выпустил бета-версию игры The Quantum Game, которая поможет обычным людям разобраться в работе квантового компьютера.
Ранее мы уже писали, как физики подтвердили нелокальность законов природы в опыте с крупной системой сжатых спинов и использовалифотоны от далеких звезд в качестве генератора случайных чисел, чтобы исключить влияние «скрытых параметров» при проверке неравенств Белла. Подробнее о том, что такое нелокальность, как ее изучают и используют ученые, можно в наших материалах «Квантовая азбука: Нелокальность» и «Квантовая азбука: Телепортация», а также в отрывках из книг «Квантовая случайность: нелокальность, телепортация и другие квантовые чудеса» Николя Жизана и «Нелокальность: Феномен, меняющий представление о пространстве и времени, и его значение для черных дыр, Большого взрыва и теорий всего» Джорджа Массера.
Дмитрий Трунин

Friday, May 31, 2019

Акустический взгляд: как звуковые волны позволяют «видеть» сквозь стены

Китайские специалисты создали ультразвуковой прибор для наблюдения за движениями человека. Аппарат способен «видеть» сквозь стены, распознавать различные положения тела, а также следить за перемещениями объекта. Разработчики считают, что такая акустическая система распознавания имеет ряд преимуществ перед видеокамерами и электромагнитными радарами-детекторами.

Китайские учёные из Уханьского технологического университета создали прибор, который способен при помощи ультразвука обнаруживать человека и фиксировать положение его тела, даже если он находится за преградой вне зоны видимости. Об этом сообщается в статье, опубликованной в журнале Applied Physics Letters.

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

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

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

Прибор в виде акустической решётки оснащён 256 приёмниками и четырьмя ультразвуковыми передатчиками, которые включены в свёрточную нейросеть — самонастраиваемую систему анализа сигналов и определения объектов. Акустическая система работает на ультразвуковой частоте 40 кГц, которая позволяет игнорировать потенциальные шумовые помехи. В настоящее время она способна различать четыре статических и динамических состояния тела человека: положения стоя и сидя, а также ходьбу и падение.


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

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

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



Wednesday, May 22, 2019

GPT-2 нейросеть от OpenAI

https://habr.com/ru/post/440564/

GPT-2 нейросеть от OpenAI. Быстрый старт


Не успели отшуметь новости о нейросети 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. Откройте ссылку


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

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

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

  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

Ссылки