Дмитрий Завалишин:
Здравствуйте, в эфире «DZ Online технологии». И наш сегодняшний гость, Иван Ямщиков.
Иван Ямщиков:
Привет.
Дмитрий Завалишин:
Из компании Эбби (ABBYY).
Иван Ямщиков:
Áби.
Дмитрий Завалишин:
Аби, извиняюсь, прошу прощения. Невозможно, на самом деле, так сказать, почему-то Эбби хочется, который сейчас поднимет нам крышку капота того, что там у них устранено и расскажет, как устроен современный искусственный интеллект. Я правильно понимаю, что в применении именно к анализу текстов, смысла документов, в эту сторону.
Иван Ямщиков:
Не только, на самом деле, мы можем и про картинки немножко поговорить. Я сам больше занимаюсь текстами, но мы можем про картинки тоже побеседовать.
Дмитрий Завалишин:
Давай коснёмся сначала, у нас есть же некоторые тупоконечники и остроконечники в этой картине. Условно говоря, есть люди, которые говорят: мы не хотим ничего понимать про суть происходящего в системе, у нас есть статистические методы, которые сами вынут модель из внешней жизни, и эта модель будет правильная, она будет чувствовать все семантические тонкости. Есть люди, которые говорят: нет, так нельзя, мы же понимаем, что происходит, мы это понимание, осознананное нами, должны вложить в систему искусственного интеллекта, и тогда она будет ценнее, лучше и качественнее. Эта битва, она имеет критерий внутри себя?
Иван Ямщиков:
Да, конечно. Вообще, давай я, может быть, на более примитивном языке это поясню, на менее философском, если я правильно понимаю твой вопрос, ты спрашиваешь про следующее. Есть люди, которые говорят: нам нужны более сильные, более производительные алгоритмы и большие объёмы данных, мы возьмём более какой-то производительный алгоритм, на большем объёме даст нам лучше качество целевой метрики, неважно, какой. Есть люди, которые говорят, на самом деле, помимо алгоритмов и объёмов данных, я не знаю, на самом деле, людей, которые говорят, что нам не нужны данные, нам не нужны алгоритмы. Поэтому вторая группа людей, на мой взгляд, у неё подход следующий, что помимо всего этого нам неплохо бы ещё человеческие разметки в том или ином виде, какое-то экспертное знание в том или ином виде или некоторые модели поверх этого экспертного знания.
Дмитрий Завалишин:
Вот именно модель поверх, скорее всего, мне кажется.
Иван Ямщиков:
Да, и при этом, с этой стороны, в Гугле есть такая шутка, которую часто цитируют, что чем меньше лингвистов работает над продуктом, чем будет лучше финальное качество. Но эта шутка, с одной стороны, она, наверное, оправдана практикой массы B2C сервисов, которые делает компания, но когда мы говорим про B2B в контексте узких продуктовых решений, в контексте очень чётко поставленной задачи и хорошо определённого поля, то экспертное знание, оказывается, начинает играть довольно важную роль. Соответственно, мы пытаемся сочетать в ABBYY внутри и какие-то онтологические штуки, и модели, которые лингвисты строят, и какие-то чисто машинные, подходы машинного обучения.
Дмитрий Завалишин:
Пример хочу провести интересный, выкопал в глубинах сознания. Мы делали проект для Мосводоканала, и когда мы его делали, там какая задача вообще стояла. У Мосводоканала есть сложная сеть, она как-то работает, как-то себя ведёт, и хочется что-то про неё понимать, желательно предсказывать аварии, желательно хотя бы чувствовать, что что-то не так происходит.
Иван Ямщиков:
Систему мониторинга вы делали.
Дмитрий Завалишин:
Мы делали некоторую систему анализа поведения, которая должна сказать: слушайте, вот здесь, в этом углу что-то не так. Мы реально не можем сказать, это авария или просто флуктуации поведения, потому что они физически неотличимы.
Иван Ямщиков:
Да, я делал примерно такого же плана систему для мониторинга трафика.
Дмитрий Завалишин:
Вот, очень похожая тематикой. И мы внутри очень выраженно боролись с инженерами, которые говорили: нет, слушайте, вы занимаетесь фигней, надо измерить все трубы, диаметры внешние, внутренние, и потом внести информацию о гладкости стенок, и потом посчитать гидродинамическую модель всей этой хреновины, и она будет прямо показывать всё-всё, мы на ней поймём. Мы говорили: не надо, дайте нам данные с датчиков, мы загоним их стать модель, и она, не зная ничего про физику, будет всё равно работать, потому что вынет реальное поведение. Это просто придельный случай того, о чём мы говорим. На одной стороне предельное знание физики работы явления, которое мы упаковываем семантически, напрямую. Вторая сторона, это предельное непонимание. Мы не то, что не понимали, как работает гидродинамика, мы даже не хотели этого понимать. Неважно вообще. Мало того, мы ещё утверждали одну вещь.
Иван Ямщиков:
Эта заносчивость вообще очень свойственна людям, которые хорошо знают статистику.
Дмитрий Завалишин:
Конечно.
Иван Ямщиков:
Как говорил Марк Твен, что бывает три вида лжи: ложь, беспардонная ложь и статистика.
Дмитрий Завалишин:
Да-да. Мы в итоге победили по одной очень простой причине. Просто собрать информацию о всех этих трубах невозможно.
Иван Ямщиков:
Конечно.
Дмитрий Завалишин:
Но, по сути дела, с другой стороны, всё равно кажется, что какая-то глубина знания предметной области не может не помогать.
Иван Ямщиков:
Смотри, люди, которые являются проводниками этого знания, считают, что оно верное, потому что, в некотором смысле, это их область экспертизы. Но при этом, на самом деле, мы понимаем про естественный язык с точки зрения computer science намного меньше, чем хотелось бы. Потому что очень многие термины, очень многие категории, они определены не математически, а интуитивно, понятно, что. Это приводит к тому, что у тех людей, которые полностью заходят со стороны компьютерных наук, есть понятное недоверие к людям, которые заходят со стороны лингвистики. А у людей со стороны лингвистики есть понятное недоверие к компьютерным наукам. Как это решается в ABBYY, по крайней мере, это решается тем, что и те, и другие работают над продуктом, делают разные куски, у тебя есть возможность замерить...
Дмитрий Завалишин:
Какой подход эффективнее.
Иван Ямщиков:
Сколько качества тебе добавляет вот это и вот это. Это эксперимент.
Дмитрий Завалишин:
Это же тоже большая беда. Мы же все знаем, что есть проблема локальной оптимизации, которая запросто загоняет проект в тупик.
Иван Ямщиков:
Конечно, это надо переобучение. Но как раз очень часто вещи, связанные с общими подходами лингвистическими, то есть то, что делают лингвисты, как раз очень часто позволяет бороться с переобучением. Потому что лингвисты, очень часто они пытаются создать некоторое общее правило, а дальше, там есть это великая прекрасная история про исключения. Любой, кто читал какую-нибудь книжку Розенталя про русский язык в школе, он помнит, что.
Дмитрий Завалишин:
Неизбежно читал, куда деваться.
Иван Ямщиков:
Что, боже мой, чем занимаются все эти чертовы филологи, они называют правилами то, что, на самом деле, является не правилом.
Дмитрий Завалишин:
Набором исключений.
Иван Ямщиков:
Но, на самом деле, это ровно та самая история про ошибку на тесте. Если ты посмотришь на это с точки зрения машинного обучения, очень большое количество лингвистических правил, они покрывают довольно большое количество примеров и оставляют некоторую ошибку на тестовых данных. Если ты возьмёшь эти правила и применить к данным, которые твоя модель никогда не видела, модель в этом месте ошибется. Но в этом смысле очень многие лингвистические эвристики,
они позволяют защититься от переобучения.
Дмитрий Завалишин:
Я тебя правильно услышал, если мы возьмём просто книжку по русскому языку, её загоне в модель, то экстраполируя эти правила, модель обязательно ошибётся?
Иван Ямщиков:
Конечно. Естественно. Вообще, любые захардкоженные правила у тебя будут всегда приводить к ошибкам, потому что, к сожалению или к счастью, искусственный интеллект намного гибче, чем какой-то набор очень простых.
Дмитрий Завалишин:
Это, наверное, связано ещё и с тем, что, по сути дела, когда мы говорим про формализацию правил естественного языка, мы в этом месте неизбежно занимаемся неразрешимой задачей. Глубина вот этого процесса бесконечна, мы всегда доходим до какого-то уровня глубины, мы не можем абсолютизировать вот это понимание и там возникает точность такая.
Иван Ямщиков:
Это сложный философский вопрос, но на машинном уровне, на самом деле, глубина кажется не бесконечной, но есть интересная статья, 15-го года про то, как... Короткий экскурс, есть такой раздел математики, который называется теория информации, который определяет, занимается, в частности, используется в теории кодирования и так далее. Его в России делал Колмогоров с сотоварищами, в США его дело Шэннон, изначально его делали, конечно, в первую очередь, в контекте криптографии. Но сам по себе этот раздел, он довольно интересный. Энтропия информационная, она оттуда вся появилась. Вот в теории информации есть такое понятие, то, что называется общая информация или mutual information на английском языке, это, грубо говоря, если совсем на пальцах говорить, вот представь себе, как у тебя коррелирует значение того или иного слова в тексте в зависимости от расстояния. Вот представь себе такую метрику. Если у меня здесь сказано «Петя», потом N слов, и потом слово «съел». На самом деле, слово «съел» и «Петя» коррелируют, несмотря на то, что слово «съел» может быть довольно далеко от «Пети».
Дмитрий Завалишин:
Особенно в русском языке.
Иван Ямщиков:
Вот эти корреляции, если статистически построить их модель, оказывается, что, как функция от расстояния, эта общая информация в текстах убывает довольно медленно. Она убывает не полиномиально, а медленнее. То есть, грубо говоря, в текстах на естественном языке есть корреляции между словами, далеко отстоящими друг от друга. Примерно то же самое наблюдается в текстах ДНК. Наши нуклеотиды коррелируют тоже довольно на большом, на сравнительно большом расстоянии. В частности, такого рода системы пытаются описывать теорию сложности и так далее. Они попытаются понять, что бывает с системой, когда у тебя вот этот эффект бабочки, вся эта история, она про это, что у тебя маленькое отклонение системы в одном месте может привести к каким-то значимым изменениям далеко. Естественный язык, он описывается такого рода зависимостями. Это приводит к тому, а сейчас, допустим LSTM, Long short-term memory network, это самые более-менее считаются продвинутые с точки зрения памяти, нейронные сети, которые используются для данного языка как раз для того, чтобы вот эти, далеко отстоящие друг от друга корреляции ловить. Вот у неё память, бывает, убывает быстрее, чем нужно. И это большая вообще тема для исследований, мы, в частности, в Институте Макса Планка пытаемся этим заниматься. Есть, допустим, интересно результат из теории графов, который говорит, что если у тебя есть циклы в сети, то у неё должно быть больше памяти. Мы знаем, что у нас в мозгу есть какие-то характерные частоты и в мозгу есть циклы. То есть по ним бегает сигнал, нейроны друг друга стимулируют по кругу с какой-то заданной частотой. В искусственных нейронных сетях мы пока это воспроизвести не можем.
Дмитрий Завалишин:
Почему не можем? Это, казалось бы, ну, сделайте его, вы же программисты, у вас всё в руках, добавьте циклы. Насыпьте, пожалуйста, циклов из мешка вот в эту...
Иван Ямщиков:
Смотрите, как мы учим нейронные сети. Мы учим нейронные сети при помощи обратного распространения ошибки. Обратное распространение ошибки, это когда у тебя есть прямой проход нейронной сети и обратный.
Дмитрий Завалишин:
Как только из цикла, сразу начинается проблема с зацикливанием этой самой ошибки.
Иван Ямщиков:
Что делать? Казалось бы, как сделать backpropagation на цикле? Друзья, если вы нас слушаете, сделайте backpropagation на цикле, и вы станете, вы сделаете мощный прорыв в области развития искусственного интеллекта. Я всем прямо это говорю, надо этим заниматься, это очень круто, мы тоже пытаемся этим заниматься, это реально сложная задача, очень непростая.
Дмитрий Завалишин:
Слушай, а если вот эти люди, которые занимаются мозгом, разберутся, как это устроено в мозге, это можно будет положить. Казалось бы, на сегодня антропоморфность того, что мы делаем, она очень низкая.
Иван Ямщиков:
Смотри, давай так, что общего между ImageNet от Гугла какого-нибудь или трилобитом. Попроще возьмём. Оказывается, более-менее, всё. Ну, не трилобит, изначальновот этот моллюск такой, похожий на трилобита, я забыл, как его зовут, такая хрень, похожая на трилобита, её разобрали и у нее её зрительные поля устроены так, как современные сверточные сети, если угодно. Когда в 50-е её разобрали и тогда придумали перцептрон, глядя на живые, очень простые штуки.
Дмитрий Завалишин:
Вспоминают эту тему.
Иван Ямщиков:
Да, Розенблат придумал, и все товарищи, они реально разбирали, они думали, что мы сейчас поймем, как работают примитивные хреновины, а потом начнём с той большой.
Дмитрий Завалишин:
Почему у них не получилось? Казалось, в те времена считалось, что перцептрон не жив. Мощности не хватало?
Иван Ямщиков:
Там много проблем, оказалось, что, в частности, последние, давай так, было несколько AI sims, то есть люди каждый раз придумывают какой-то новый прорыв в области искусственного интеллекта. И такие думают: все, завтра Джарвис будет моим лучшим другом и будет лучше, чем мой психоаналитик общаться со мной. Потом что-нибудь случается, и как у того же Джарвиса, я очень люблю эту шутку из фильма «Железный человек», что сначала всё идёт хорошо, потом произносишь какую-нибудь клюкву. Там Джарвис говорит главному герою в тот момент, когда тот его спрашивает, отладил ли он все системы. И случается зима, первая зима, одна из зим, я боюсь перепутать, какая, и было связано, в частности, с тем, что оказалось, что при помощи нейронных сетей можно не всякую... В общем, там была как раз критика связана с тем, что ребята, вы можете сколько угодно собиратель нейроны в ряды, но всё равно вы будете описывать только некоторое семейство функций и не всё вы сможете описать, все равно ваш AI не будет решать все, что только можно. Последний прорыв...
Дмитрий Завалишин:
Это практически как выглядит, где ограничение находится, если взять прикладную сторону?
Иван Ямщиков:
Там есть несколько моментов. Во-первых, сейчас даже самые мощные штуки, которые мы собираем искусственно, они сильно меньше, чем наш мозг, просто по порядку величин, там разница в несколько порядков.
Дмитрий Завалишин:
Но это же вопрос количественный, казалось бы.
Иван Ямщиков:
А второй момент связан с тем, что мы не понимаем, почему они работают.
Дмитрий Завалишин:
Вот это прямо, да.
Иван Ямщиков:
Мы не понимаем, почему они работают, это отдельная большая область исследований.
Дмитрий Завалишин:
Это тоже, казалось бы, уже начинают разговаривать, рассказывать, уже рассказывают про то, что нейронная сеть, вот у неё элементы, которые распознают изображения очень хорошо, потому что мапятся очень хорошо, распознают прямые, косые линии, собирают их в элементы, элементы в элементы. И это всё враньё что ли?
Иван Ямщиков:
Нет, во-первых, это не враньё, но это следствие как раз тренда, связанного с тем, что сначала выяснили, что работает, потом стали разбираться, OK, как работает. Возникли, есть несколько, это прямо отдельное направление про то, как визуализовывать работу нейронной сети, есть отдельный формализм математический, который называется information decomposition, который пытается описать то, как происходит декомпозиция, разложение информации на разные потоки внутри сети, чтобы понять, что, на каких слоях происходит. С изображениями это начинает получаться и получается последние несколько лет. С текстами сложнее и, соответственно, отдельные просто...
Дмитрий Завалишин:
Показать трудно.
Иван Ямщиков:
Да, во-первых, трудно показать, во-вторых, это просто отдельная область исследования, люди пытаются придумать, как правильно визуализовывать то, что находится внутри нейросети или как-то по-другому формализовать для того, чтобы понять, как оно работает. С точки зрения задачи, когда мы говорим про почему мы не понимаем, как она работает, строго говоря, потому что мы, у нас нет математического хорошего результата, который бы нам объяснял, у нас нет теоремы доказанной, которая бы говорила, что это работает. Потому что у тебя есть, допустим, у тебя есть картинка, даже на уровне сверточной нейронной сети. У тебя есть картинка, на ней нарисована собачка. В этой картинке есть сколько-то пикселей, у каждого пикселя есть сколько-то значений. Если ты комбинаторно попытаешься посчитать количество вариантов сочетания пикселей, которые всё равно складываются в собачку, ты устанешь. Соответственно, у тебя, по идее, есть пространство огромной, довольно большой размерности и очень много вариантов решений. При этом почему-то, если ты начинаешь обучать свёрточную нейронную сеть с количеством параметров сильно меньше, чем количество потенциальных изображений собачки, ты обучаешь ее, ты очень простым образом её обучаешь. Она тебя на выходе говорит, собачка это или не собачка, а ты говоришь да или нет, очень простым способом. Совершенно внезапно через некоторое время оказывается, что она может тебе давать очень хорошее качество на картинках собачек, которой она не видела.
Дмитрий Завалишин:
Степень обобщения неожиданная.
Иван Ямщиков:
Да. То есть это неожиданная степень обобщения, которая, типа, все уже смирились с тем, что это работает, все применяют это везде, но строго обоснованного математического результата, который бы объяснил, почему такая степень возможна, нет. Тут есть несколько гипотез, одна из которых, мне кажется, наиболее интересная, она связана с тем, что сама структура сети, то есть, на самом деле, дело не в том, что у тебя происходит в каждом нейроне. Дело в том, что если ты собираешь нейроны, топологический если у тебя это устроено так, то оно тебе позволяет добиваться определённого обобщения на определённом уровне. Это интересная гипотеза, потому что она тогда позволяет, если она верна, то тогда это хорошо связывается с нейрофизиологией, и тогда можно что-то другое из нейрофизиологии брать и пробовать и так далее. То есть это интересная история. Есть какие-то другие предположения, но это прямо вопрос, вот люди сейчас сидят и пишут килограммы статей в месяц про то, как это работает.
Дмитрий Завалишин:
Скажи, пожалуйста, а точность флоата сильно влияет на качество нейронной сети? Вопрос понятно, в чем заключается, точность, это количество бит, количество бит, это количество информации, которая там лежит, в этот хвост уходит какое-то количество информации.
Иван Ямщиков:
Обычно мы, на самом деле, говорим о таком уровне обобщения, на котором точность флоата не должна влиять ни на что. Обычно. Наверное, я допускаю.
Дмитрий Завалишин:
То есть не туда она проваливается. Она может провалиться в топологию.
Иван Ямщиков:
Да, я допускаю, что можно придумать пример, где это будет верно, но обычно мы, вся технология интересно как раз тем, что она может обобщать. У нас довольно много разных методов, которые умеют работать дедуктивно, вернее, наоборот.
Дмитрий Завалишин:
Индуктивно.
Иван Ямщиков:
Индуктивно, получать много-много маленьких результатов, детально какие-то подгонять вещи. А вот получать общую картину на основании разрозненных данных, пока мало сравнительно методов, и нейронная сеть в этом смысле удивительна.
Дмитрий Завалишин:
Вернёмся чуть обратно. Грубо говоря, мы с тобой программисты, мы хотим пойти в тематику AI.
Иван Ямщиков:
Но я, скорее математик, чем программист.
Дмитрий Завалишин:
Черт возьми, я тоже, в общем, не сильно программист, это я так, немножко утрировал. Предположим, что мы с тобой программисты, хотим туда пойти. С чего начинать, какие технологии, как надо, как не надо, насколько в этом месте нам нужны, нам, как программистам нужны ты, как математика, я, как человек бизнеса, который бизнес постановку делает.
Иван Ямщиков:
Слушай, есть, во-первых, хороший курс Fast.AI. Это как раз курс машинного обучения для программистов. Там без всякого вот этого bull shit от математиков и маркетологов, просто берём и кодим, и получаем продукт.
Дмитрий Завалишин:
Вообще, есть очень много онлайн курсов, посвящённых этой теме.
Иван Ямщиков:
Есть хороший курс от Гугла на Udacity.
Дмитрий Завалишин:
Следующий шаг сделали, вот мы научились, уже взяли нейроночку, уже собачек в неё накидали, уже начинает отличать собачек. Дальше уже видно, что это уровень, который точно совершенно функционально уже неприменим, его все превзошли. Дальше начинается следующий уровень. Я могу предположить, поскольку я давно руками ничего этого не трогаю, что следующий уровень находится в области, когда ты уже понимаешь, что существует N+1 методов подходов к задаче, существуют такие, такие варианты построения нейронных сетей. И твоя задача уже выбрать из инструментов правильный, подходящий под предметную область.
Иван Ямщиков:
Или сконструировать из имеющихся модулей.
Дмитрий Завалишин:
Или сконструировать из имеющихся, это сейчас является state of art или ещё есть следующий, третий уровень?
Иван Ямщиков:
Как всегда, в любом куске индустрии у тебя есть researching development, у тебя есть инженерная задача. Инженерные задачи обычно сводится к тому, о чем ты говоришь.
Дмитрий Завалишин:
Выбрать болты по каталогу.
Иван Ямщиков:
Выбрать болты по каталогу, очень хорошая метафора. Нужно хорошо понимать каталог, нужно следить за тем, как он обновляется и тестировать те или иные вещи.
Дмитрий Завалишин:
Вот, и прямо очередной вопрос, тестировать, опять же, это онтология или статистика? Проще просто взять все 100, которые есть на рынке, запустить, посмотреть качество.
Иван Ямщиков:
Есть вообще отдельная тема, это называется auto e-mail.
Дмитрий Завалишин:
Или есть понимание, всё-таки какое понимание, что класс задачи такой-то, это такие вот такие инструменты.
Иван Ямщиков:
Слушай, это понимание формируется через некоторый набор практик, которые кажутся хорошими индустриальными. Для этого очень сильно, мне кажется, этому способствуют сообщества, связанные с соревнованиями по Data Science. То есть, допустим, Kaggle и иже с ними, эти платформы. В России есть отличное сообщество Open Data Science, которое этим, у них есть регулярные e-mail тренировки, у них есть чатик в Slack и так далее. И в этом смысле хорошие практики можно всегда подглядеть у друзей и коллег, и за некоторое время набраться этого какого-то ощущения интуитивного, как и в любой области инженерной. При этом там есть ещё ещё следующая надстройка, которая задаёт себе задачу более высокого уровня. Она скорее научная, чем инженерная, но очень много науки в этом месте, конечно, делается внутри корпораций. Допустим, Facebook AI Research или Google Brain или какие-то другие индустриальные исследовательские группы, которые внутри компании той или иной пытаются задавать вопросы. А какие можно новые архитектуры придумать, какие можно придумать трюки с тем, чтобы.. Допустим, есть интересный феномен, связанный с тем, что называется Transfer Learning. Это оказывается, что если ты берёшь какую-то архитектуру, учишь её на одну задачу, отличать собак от кошек, а потом учишь её на другую задачу, отличать корабли от самолётов. Оказывается, что если ты с нуля её будешь учить отличать корабли от самолётов, или если ты уже обученную на собаках и кошках начнёшь учить, корабли от самолетов, то вторая за такое же количество операций даст тебе лучше качество.
Дмитрий Завалишин:
Как интересно.
Иван Ямщиков:
Но это во многом связано с тем, что там, видимо, есть какие-то низкоуровневые фичи, про что ты говоришь, там углы, линии и так далее. Их всё равно надо выучить, соответственно, возможно, что объяснение очень простое и, скорее всего, оно такое. Но тут просто интересная история, что есть прямые аналогии с тем, как живые системы обучают.
Дмитрий Завалишин:
Означает ли это, что появятся предобученные..
Иван Ямщиков:
Но это уже есть, всякие i-machine.net ты и так далее, они очень часто из коробки уже есть предобученные модели какого-нибудь крупного игрока любого, и ты можешь её использовать для каких-то своих поделок.
Дмитрий Завалишин:
У Verosoft есть интересная тематика, когда они продают у себя в облаке.
Иван Ямщиков:
Да, у них есть там предобученная тоже модель.
Дмитрий Завалишин:
Вот что меня заинтересовало, возвращаюсь к той истории, которую рассказывал, они сейчас начинают закидывать в эти машины FPGA и начинают эти самые свои модельки учить на FPGA работать, утверждают, это такое естественное утверждение, что это плюс несколько порядков к скорости работы нейронных сетей. Это вообще-то предмет прямо или кажется, что это такая ограниченная тематика.
Иван Ямщиков:
Давай скажем вообще так. Вопрос быстродействия, это, в принципе, вопрос важный для такого рода моделей, и тут есть несколько интересных историй. Одна, которую я очень люблю рассказывать, это то, что любой геймер в 90-е годы приближал развитие искусственного интеллекта благодаря тому, что изначально GPU, которые обсчитывали треугольнички на картинке, оказалось, что.
Дмитрий Завалишин:
Очень хорошо считают нейронной сети.
Иван Ямщиков:
Не только это, вообще, оказалось, что сейчас GPU очень многие суперкомпьютеры как раз в науке какие-нибудь модели, допустим, если нужно гидродинамику тебе почитать, отлично на GPU считается.
Дмитрий Завалишин:
Среды распространения звука, всё это.
Иван Ямщиков:
Да, совершенно верно, всё, что хорошо сегментаризуется и параллелизуется. Там есть отдельное CUDA. Nvidia захватило этот рынок, потому что они первыми сделали CUDA, позволяет делать такого рода параллельные решения на своих графических карточках. И это быстродействие, оно яркий пример, просто это уже state of art, это уже история, появилось решение, которое позволяет сильно ускорить быстродействие модели. И даже не на этапе уже обученной модели, а на этапе обучения, и оно, конечно, сразу же привлекает. И это большая история, та же самая NVIDIA тоже пытается в это влезть, и то, что Microsoft пытается ускорить эту историю, и Amazon в облако своё пытается предлагать какие-то решения.
Дмитрий Завалишин:
Но всё-таки, смотри, CUDA, это все равно вычислительная модель, грубо говоря, мы берём значение.
Иван Ямщиков:
Это обёртка некая.
Дмитрий Завалишин:
Тащим в ALU, посчитали, положили обратно, она секвентальная. А модель FPGA, она не секвентальная, она массово параллельная. В ней можно прямо саму сетку положить в хардвер этой штуки и заставить её прозрачно...
Иван Ямщиков:
Она поэтому и даёт рост по скорости.
Дмитрий Завалишин:
Там реально на несколько порядков пролетает. Это, опять же, это игрушки пока или кажется, что это пойдёт, пойдёт.
Иван Ямщиков:
Я не могу чётко ответить на этот вопрос, потому что я сам руками с этими вещами не игрался. Но мне кажется, что, в принципе, вопрос быстродействия в такого рода системах, он важен и поэтому, конечно, это не игрушка.
Дмитрий Завалишин:
Уже известно, что Intel уже заявлял, я не знаю, сделал он, не сделал, что у FPGA появляются на борту процессоров.
Иван Ямщиков:
Главный момент, у нас есть очень чёткий и понятный способ маркировать, что важно, а что не важно. В случае с любой такого рода моделью, мы с тобой уже говорили, что нам нужно их тестировать.
Дмитрий Завалишин:
Конечно.
Иван Ямщиков:
И в некотором смысле, если ты можешь обучить модель в 10 раз быстрее, значит за тот же срок ты можешь протестировать...
Дмитрий Завалишин:
Ну да, очевидно.
Иван Ямщиков:
И это очень простая история, она на пальцах объясняется, но суть понятна. Суть в том, что сейчас действительно очень часто 90 % времени ты тратишь на обучение, а не на имплементацию, разработку, чего-то ещё. Поэтому нет, это не игрушки, это важно. Не факт, что это будет единственным решением, не факт, что это так будет работать. Я, допустим, допускаю, что какие-то истории, в общем, я не могу точно сказать тебе, что это то решение, которое в итоге будет state of the art в индустрии. Потому что у GPU есть много преимуществ по сравнению с этим решением. Но если это хорошо уйдет в облако, то, может быть.
Дмитрий Завалишин:
Я, кстати, сам себя спросил, почему же я вспомнил тему с FPGA, с дарвиновским алгоритмом, а сейчас у меня склеилось, почему я про это задумался. Потому что ты сказал про естественный язык, правила русского языка, статмодели и модели, основанные на знаниях про русский язык, на онтологии. И вроде они в этом смысле являются, в некотором смысле, антитезами такими. А дальше, казалось бы, что мы можем взять некую такую мета модель, которая устроена вот как. У нас есть нейронная сеть, как единица популяции вот этой большой модели дарвинистской. Дальше можем эту популяцию заставить жить и развиваться, при этом целевые функции как раз берем вот эти правила русского языка.
Иван Ямщиков:
В некотором смысле да, но...
Дмитрий Завалишин:
Мы сыплем туда шум, а дальше начинаем гнать их цепь через дарвиновскую модель и сверять получившиеся модели с правилами русского языка. Хорошо, вот тебе оценочка, ты выживаешь, как особь. Но это понятное дело с точки зрения затрат процессорных, это ещё плюс несколько порядков. Если мы сможем эти несколько порядков скинути где-то там на технологиях, то мы можем к этой схеме прийти, она очень дорогая. Но она обладает совместными свойствами.
Иван Ямщиков:
У нас в мозгу, в некотором смысле, происходят похожие вещи. Ты же понимаешь, у нас мозг - самый дорогой орган с точки зрения энергозатрат, всё правильно. Чему нас учит классическая философия: тезис, антитезис, синтез, всё так работает. Это нормально, это хороший уровень обобщения, но и в некотором смысле в каких-то областях мы к этому уже приходим, потому что у тебя, я уже говорил про историю про переобучение, мы её затрагивали. Переобучение очень хорошо видно на задачах, когда, допустим, у тебя есть бинарная классификация, когда у тебя есть очень хорошая целевая метрика. У тебя в естественном языке очень часто задачи, в которых хорошая целевая метрика, её или нет, или её придумывают и искусственно делают хорошей. Допустим, есть задача style transfer, которой мы пытаемся заниматься.
Дмитрий Завалишин:
Это вот ABBYY в смысле.
Иван Ямщиков:
Нет, мы, в смысле я в нашей группе. Но ABBYY тоже про это думает. Суть не в этом. Есть задачке про то, давайте возьмём текст и перепишем его как-нибудь по-другому с тем же смыслом. Это называется переносом стиля. Но довольно часто оказывается, что люди считают стилем, к примеру, позитивное или негативное высказывание. Они тоже считают это стилем. Хотя для любого человека, который читал книжки, понятно, что это не так. Почему они это делают?
Дмитрий Завалишин:
Еще отдельный вопрос, сколько со стилем семантики приезжает.
Иван Ямщиков:
Вот, потому что, да, Владимир Сорокин нам говорит, что можно в любом стиле любую семантику сделать.
Дмитрий Завалишин:
Да вот спорно.
Иван Ямщиков:
Но у него иногда получается. Подожди, давай не будем закапываться в эту историю, я тебе про конкретную задачу хочу рассказать. Почему они такую тематику говорят, смена сетимента - это уже смена стиля. Потому что есть куча бинарных классификаторов, натренированных на сентимент, и им с ними легко сравняться. Все, у тебя...
Дмитрий Завалишин:
Есть куча инструментов.
Иван Ямщиков:
Конечно, и можно всех победить и сказать: мы всех победили, мы классные. Это такой narration bias, только в науке.
Дмитрий Завалишин:
Я молодец и правильно попал, потому что целью я назвал то место, в которое я попал.
Иван Ямщиков:
Конечно. Когда у тебя в руке молоток, многие вещи похожи на гвозди.
Дмитрий Завалишин:
Конечно, естественно. Сам по себе перенос стиля, это прикладная задача?
Иван Ямщиков:
Да. Это сейчас очень модно стало, потому что после того, как появилась вот эта статья ребят из Тюбингена, на основании которых призму, к примеру, сделали, про картинки. В 15-м году это случилось, и все такие: а для текста можно? И это такая интересная задача.
Дмитрий Завалишин:
А зачем. С картинками понятно, это хотя бы смешную задачу.
Иван Ямщиков:
Допустим, у нас с ребятами есть команда, в которой мы пытаемся это попробовать сделать для рекламы и попробовать такого рода оптимизацию сделать. У нас есть компания Created Labs, в которой мы пытаемся это делать с некоторой группой единомышленников в надежде... У нас даже есть пилот, и если он сработает.
Дмитрий Завалишин:
Это вопрос глубины переноса стилей. Вообще, можешь входным текстом иметь текст абсолютно сухой фактологически.
Иван Ямщиков:
Конечно, у тебя есть набор данных, а дальше ты его переписываешь под тебя, под меня, под дядю Васю.
Дмитрий Завалишин:
А дальше генератор, который кладет на него стиль, он не просто его рестилизует. Он его насыщает.
Иван Ямщиков:
Он понимает, кому он его показывает, конечно.
Дмитрий Завалишин:
Это, опять же, вопрос в том, насколько много семантики в этом. То есть то, о чём ты говоришь, это перенос не только стиля. Если целевая аудитория является предметом оптимизации.
Иван Ямщиков:
Там много вопросов. Это вопросы, у которых нет чёткого консенсуса внутри индустрии, потому что, на самом деле, мы с тобой так бросаемся словами «стилистика», «семантика», а это всё в математическом смысле плохо определено.
Дмитрий Завалишин:
Слушай, это понятно, что плохо определено, но, с другой стороны, мы же все понимаем, что вообще, говоря message, это не message, а message умножит на словарь, это message. То есть читатель является элементом message неизбежным совершенно.
Иван Ямщиков:
Например, если заменить слово «message» в твоём тексте на слово «послание», то у него сразу же изменится и целевая аудитория.
Дмитрий Завалишин:
И целевая аудитория, и люди по-другому его поймут. Но есть, в принципе, совершенно очевидно, если ты знаешь алфавит, то ты сможешь прочесть, не знаешь - не можешь, предельная картина. А дальше у тебя есть ещё какое-то историко-культурное наследие, которое тоже, естественно, транслирует.
Иван Ямщиков:
В ABBYY есть такое, внутри два термина process intelligence и context intelligence, на самом деле, мы с тобой очень много говорили именно про process intelligence, то есть про понимание процессов. А есть вот это понимание контекста. Оно немного сложнее, потому что оно хуже формализовано, и мы с днём как раз пытаемся онтологию использовать.
Дмитрий Завалишин:
Мало того, с ним возникает совершенно очевидная проблема, которая Гёдель о неполноте. Есть вещи, про которые ты не знаешь и никогда не узнаешь. Совершенно невозможно ответить на вопрос, всё ли ты про это знаешь.
Иван Ямщиков:
На самом деле, это очень интересно, прелесть естественного языка в том, что естественному языку это неважно. Потому что если ты посмотришь, как построены доказательства тереме Гёделя о неполноте, она как раз использует это свойство естественного языка.
Дмитрий Завалишин:
Надо обновить.
Иван Ямщиков:
Там же идея в том, что давайте запишем все доказательства, сделаем книгу, и это как раз идея, этот трюк, на самом деле, придумал, его много, кто обсуждал. То есть истории про то, что, там и Колмогоров, теория информации, в частности. И колмагоровская сложность, она про это, что давайте все будем записывать, наши выражения, и дальше оперировать уже именно с текстом, именно, как формальным набором, последовательностью символов. То есть, наоборот, уйдём с некоторого уровня обобщения, у нас есть некоторое представление, мы его формулируем, чтобы на уровне последовательных символов с ним работать. Тогда можно получить некоторое количество формальных результатов, немножко жонглёрство такое смыслами, но это интересно. Но вот в теореме Гёделя, там интересный трюк, он как раз ровно в том, что он использует это свойство языка. Что естественному языку, на самом деле, всё равно, чушь на нём написана или нет. Главное, типа чушь или нет, это ты в своей голове решишь.
Дмитрий Завалишин:
Да, конечно.
Иван Ямщиков:
Но при всём при этом естественному языку не всё равно, синтаксически корректная чушь написана или синтаксически некорректная. Естественный язык в этом смысле очень, он сам таким образом является некоторой такой своеобразный аксиоматический системой с серой зоной, которую сам же и прикрывает.
Дмитрий Завалишин:
Есть такое ощущение, я не знаю, почему, но почему-то язык Python - это язык искусственного интеллекта. Это вообще случайность, или там какая-то случилась такая картина, которая.
Иван Ямщиков:
Удобно.
Дмитрий Завалишин:
Какого черта, Бейсиков много.
Иван Ямщиков:
Прототипирование, потому что мы с тобой выяснили, что довольно большая.
Дмитрий Завалишин:
Почему не Lua, прости, господи.
Иван Ямщиков:
Потому что довольно большую часть работы data scientist сейчас составляет прототипирование. На Python удобно прототипировать, он создавался, как язык для прототипирования, он не создавался, как язык для индустриальных решений. Он, в первую очередь, целился в прототипирование.
Дмитрий Завалишин:
Послушайте этого человека, не создавался, как язык индустриальных решений.
Иван Ямщиков:
У нас, к примеру, в ABBYY внутри есть люди, которые прототипируют на Python, есть люди, которые пишут на C, на плюсах, на C++, финальной модельке, которые имплементируются. Но и, кроме того, надо понимать, что как это, я не настоящий сварщик, мопед не мой, я только разместил объявление. Но Python и коммьюнити Python, оно эту волну активно использует, тут есть некоторая положительная обратная связь.
Дмитрий Завалишин:
Маркетинг такой.
Иван Ямщиков:
Это не маркетинг, это скорее положительная обратная связь, появляется спрос, то есть data science все больше и больше делается на Python, соответственно, коммьюнити начинает насыщаться людьми, которые, кто-то делает на нём не только data science, но начинает пытаться как-то развивать сам язык, соответственно, это всё, мне кажется, связано.
Дмитрий Завалишин:
Я правильно понимаю, что сама по себе неэффективность Python, как языка, очевидно, такого, не боевого, она закрывается тем, что само вычисление уходит в CUDA, где-то там находится за пределами.
Иван Ямщиков:
Во-первых. А во-вторых, что значит, боевое, не боевое, то есть он, конечно, мне кажется, что тут дело в другом. Дело просто в том, что у тебя человеческое время специалиста начинает стоить столько, что если ты можешь сэкономить.
Дмитрий Завалишин:
Скорость вычислений. Но это же неправда, мы же с тобой говорили, буквально только что говорили, что скорость вычислений критична.
Иван Ямщиков:
На самом деле, очень часто у тебя реализована система, когда у тебя есть отдельно data scientist, отдельно есть программист, это два разных человека. У тебя data scientist делает модель, он ее прототипирует, а потом hard version пишет отдельный серьёзный человек на другом языке.
Дмитрий Завалишин:
Уходит в производство, но опять же, когда мы говорим про прототипирование, то оно предполагает прогон большого количества тестов, экспериментов. И это опять вычислительные ресурсы и опять кажется, что в этом месте у нас инструмент, который должен давать...
Иван Ямщиков:
Они сильно подешевели.
Дмитрий Завалишин:
Сами ресурсы.
Иван Ямщиков:
Да, сами вычислительные ресурсы стали дешевле, и появились и облачные решения, которые сделали их доступными.
Дмитрий Завалишин:
Облачные решения, в смысле есть некоторый фарм, в который ты можешь кинуть задачу.
Иван Ямщиков:
Да, ты можешь, грубо говоря, студент с выходом в интернет может ненадолго за разумные деньги получится довольно мощный сервер. Для того, чтобы на нём что-то прогнать, какую-то модельку обучить, прикрутить искусственный интеллект к кофеварке. То есть тут много, мне кажется, параллельно сошедшихся таких трендов, которые драйвят друг друга. С одной стороны, у тебя больше людей, за счёт интернета у тебя понизился порог вхождения в программирование вообще.
Дмитрий Завалишин:
В технологии, в science такой.
Иван Ямщиков:
В технологии в целом, да. Во-вторых, у тебя появилось много сравнительно дешёвого железа, то есть железо действительно, закон Мура, он суров, но справедлив.
Дмитрий Завалишин:
На обычных просто он, кажется, кончился, а на CUDO кажется.
Иван Ямщиков:
Но всё равно, он, может быть, и кончился, но столько лет шёл, и за это время сильно помог. Хотя то, что он кончился, это тоже спорное утверждение, я недавно, полгода назад с кем-то про это спорили, я как раз, мы поспорили, буквально через 2 дня я увидел какую-то очередную статью, что там ещё куда-то что-то.
Дмитрий Завалишин:
Частота кончилось.
Иван Ямщиков:
Может быть. Тебе виднее.
Дмитрий Завалишин:
3 гигагерца уже стоит сколько, лет 10 уже стоит. Все пошли в ядра, и это, кстати, тоже момент. То, о чем мы говорим, оно ещё хорошо живёт почему, потому что оно очень легко партиционируется, и поэтому именно многоядерные и параллельные системы, они хорошо с этим делом живут.
Иван Ямщиков:
В общем, смотри, второй тренд, это то, что железо стало дешевле, третий тренд, это то, что это железо ушло в облака и тебе не надо, мало того, что оно дешевое, тебе ещё не надо его ставить.
Дмитрий Завалишин:
Покупать.
Иван Ямщиков:
Ты покупаешь время, а не железо.
Дмитрий Завалишин:
То есть у тебя CAPEX нет в этом месте.
Иван Ямщиков:
Да, это третий тренд, и четвёртый тренд, который мне тоже кажется очень важным, это то, что, на самом деле, у тебя появилось много живых данных. То есть за счёт интернета у тебя появилось... Это же сильно, в восьмидесятые годы, я думаю, что людям, которые занимались data science, у них была фундаментальная проблема, она и сейчас остаётся.
Дмитрий Завалишин:
Бегать по улицам, кошечек фотографировать.
Иван Ямщиков:
Да, где данные в сеть. А сейчас у тебя на практически любую задачу понятно, откуда, по крайней мере, их тащить или к кому идти за ними и так далее. То есть за счёт группы факторов...
Дмитрий Завалишин:
Ну да, зашёл на Google, набрал Cat, скачал фотографии.
Иван Ямщиков:
Условно говоря, да. То есть у тебя просто доступность всех. Ключевые моменты для машинного обучения, тебе нужно, чтобы у тебя был алгоритм, чтобы у тебя были данные, и чтобы у тебя было железо, на котором это гнать. И все эти три параметра стали доступнее. При этом алгоритм стал доступнее в том смысле, что появилось много коробочных решений с довольно хорошим качеством. И эти коробочные решения ещё имеплементируются на языке, который с интуитивно понятным, простым синтаксисом, в который действительно невысокий уровень входа, который с кучей образовательных ресурсов. Чудесно.
Дмитрий Завалишин:
Чуть приземлим. Ребята из Microsoft рассказали мне историю, как небольшая группа тоже взяла нейронную сетку, взяла бизнес модель некоторой очень несложной компании, прямо маленькой такой компании, которая развозил хлеб что ли. И из палок и верёвок получилось построить модель, которая прооптимизировала этот бизнес и дала плюс 10 % к эффективности. Вот такие картины, это скорее исключение, или кажется, что завтра это будет.
Иван Ямщиков:
Это, скорее, правило.
Дмитрий Завалишин:
То есть, грубо говоря, завтра появится вот такая вот профессия, data scientist.
Иван Ямщиков:
Она уже есть, не завтра, она есть.
Дмитрий Завалишин:
Просто она сейчас очень такая, научная, всё-таки это человек, который сидит в универе и умным занимается.
Иван Ямщиков:
Мне кажется, она становится более прикладной.
Дмитрий Завалишин:
А не человек, который прошёл в магазин ботинок, говорит: слушайте, давайте сюда статистику, сейчас прогоним.
Иван Ямщиков:
Слушай, у Келли, по-моему, есть очень хорошая, Келли - это главный редактор журнала Wired, у него есть хорошая лекция про будущее AI, в который он говорит, что через 20 лет к нам будут относиться так же, как мы сейчас относимся к тем, кто стоял пионерами интернета. Мы сейчас говорим, как вам легко было в 90-е годы сделать интернет бизнес. Взял любую фигню, для чего угодно сделал и стал вообще самым крупным сайтом в этой категории. Но через 20 лет также будут относиться к нам те люди, которые будут говорить, как вам было просто делать бизнес с AI, взял что угодно, прибавил к нему AI и стал лидером в этой категории.
Дмитрий Завалишин:
Получил прямую живую эффективность. То есть это прямо.
Иван Ямщиков:
По крайней мере, это мнение Келли, я скорее его разделяю, мне кажется, что он как именно футуролог, ему можно доверять, потому что он сильно погружён в эту область и несколько каких-то предсказаний за его жизнь, которые он делал, вроде даже сбылись. Какие-то вещи про интернет, которые он предсказывал в девяностые, они себя оправдали. Поэтому это похоже на правду.
Дмитрий Завалишин:
Тоже, наверное, всё-таки надо заканчивать, очень интересная беседа, я ещё бы часа два поговорил, но двигаться к концу надо. Смотри, не знаю, мне, может быть, неправильный вопрос, но всё-таки, мы с тобой пережили некоторое количество происходящего в индустрии и видели эту картину, когда то, что сейчас коммодити, когда-то было state of art такой. И сейчас тем людям мы могли бы им, наверное, сказать: ребята, двигайтесь вот так-то, потому что вот так изменится. На основании этого мы можем людям, которые сейчас входят в искусственный интеллект, в эту технологию, что-нибудь сказать про то, как оно будет двигаться, и куда им надо куда им сейчас правильно идти, чтобы через 5-10 лет...
Иван Ямщиков:
С какой стороны они входят, у них уже есть техническое образование?
Дмитрий Завалишин:
Наверное, они сейчас делают какие-то модельки, уже что-то считают, что-то такое крутят, находятся в текущем состоянии. Кто из сегодняшних завтра будет лидером, что для этого является фактором.
Иван Ямщиков:
Я бы не стал давать такие прямо чёткие прогнозы, но есть при этом, мне кажется, два совета, который мне кажутся разумными. Возможно, я заблуждаюсь, но мне они кажутся разумными. Первый - не делайте в углу один.
Дмитрий Завалишин:
Коммуницируйте.
Иван Ямщиков:
Да, найдите пару-тройку единомышленников, работайте друг об друга, показывайте наружу то, что вы делаете в рамках более широкого сообщества, найдите это сообщество.
Дмитрий Завалишин:
Очень универсальный совет, везде работает. Я согласен, я прямо соглашусь двумя руками.
Иван Ямщиков:
Это важно. Показывайте с какой-то периодичностью, прямо поставьте себе цель, вот вы что-то делаете, раз в полгода расскажите об этом на более или менее широкую аудиторию, это важно. И второй совет, это важно ещё и потому, что вы в рамках этого общения вы лучше поймёте рынок, ну это по куче параметров важно. То есть вы, во-первых, делаете это с кем-то, а во-вторых, показываете наружу регулярно. И второй момент, который, мне кажется, более специфический про AI - меньше думайте про конкретные модели, которые вы будете использовать, потому что модели будут меняться. Модели будут становиться лучше, и если вы сейчас не на том уровне, чтобы их самому их руками улучшать, вам надо меньше знать про то, как именно это конкретная модель работает, почему она лучше. Но вам надо больше думать про то, какую задачу вы решаете.
Дмитрий Завалишин:
Иван Ямщиков, компания ABBYY.
Иван Ямщиков:
Спасибо.
Дмитрий Завалишин:
Говорит нам, что для того, чтобы в завтрашнем AI мы были лидерами, надо 1. разговаривать и общаться; 2. заниматься предметной областью, которую вы хорошо понимаете. И ABBYY, надо сказать, это тоже делает. Спасибо.
Иван Ямщиков:
Да, спасибо большое.