<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Другие приложения | Компания НТР</title>
	<atom:link href="https://ntr.ai/ntr-web-tags/drugie-prilozheniya/feed/" rel="self" type="application/rss+xml" />
	<link>https://ntr.ai</link>
	<description>Разработка информационных систем</description>
	<lastBuildDate>Wed, 30 Oct 2024 13:24:09 +0000</lastBuildDate>
	<language>ru-RU</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
	<item>
		<title>Научно-технический вебинар «Hardness of Learning AES with Gradient-Based Methods»</title>
		<link>https://ntr.ai/webinar/nauchno-tehnicheskij-vebinar-hardness-of-learning-aes-with-gradient-based-methods/</link>
		
		<dc:creator><![CDATA[Alexandra Koroleva]]></dc:creator>
		<pubDate>Wed, 14 Feb 2024 08:38:26 +0000</pubDate>
				<guid isPermaLink="false">https://ntr.ai/?post_type=ntr-web&#038;p=1342</guid>

					<description><![CDATA[<p>Спикер о вебинаре: We show the approximate pairwise orthogonality of [&#8230;]</p>
<p>The post <a href="https://ntr.ai/webinar/nauchno-tehnicheskij-vebinar-hardness-of-learning-aes-with-gradient-based-methods/">Научно-технический вебинар «Hardness of Learning AES with Gradient-Based Methods»</a> first appeared on <a href="https://ntr.ai">Компания НТР</a>.</p>]]></description>
										<content:encoded><![CDATA[<p><strong>Спикер о вебинаре:</strong><br />
We show the approximate pairwise orthogonality of a class of functions formed by a single AES output bit under the assumption that all of its round keys except the initial one are independent. This result implies the hardness of learning AES encryption (and decryption) with gradient-based methods. The proof relies on the Boas-Bellman type of inequality in inner-product spaces.</p>
<p><strong>Презентация: </strong><a href="https://drive.google.com/file/d/1RgWI1LIBoPqFS-Zu1a8xOXUeR1Ei1nXU" rel="nofollow ">https://drive.google.com/file/d/1RgWI1LIBoPqFS-Zu1a8xOXUeR1Ei1nXU/</a></p>
<p><strong>Видеозапись: </strong><a href="https://youtu.be/QBizdzGzFhk" rel="nofollow ">https://youtu.be/QBizdzGzFhk</a></p>
<p><strong>Расшифровка вебинара:</strong><br />
<em>Расшифровка выполнена с помощью системы автопрокотолирования Protocol.AI, разработанной НТР</em></p>
<p>Значит, это будем рассматривать, ну, такой типа в этап обучения с учителем у нас есть обучающая выборка, а здесь это в качестве примеров это изображение фруктов и это иксы, а игрики это у нас метки, то есть название фрукта и мы хотим такие пары и соху игреков скормить алгоритма обучения, которые должен нам дать некую функцию эф. и эта функция эф должна на вход принимать картинку и на выходе давать метку, да, вот мы ее называем косикатору. Вот в этом случае причем это небо какая функция. Но желательно, чтобы при применении на какой то новой картинке, которой не было в обучающей выборке, ответ, то есть метка, выдаваемая функции фальсификатором, была бы правильная. И вот процент правильности таких ответов на новый выборке это, соответственно, то, что мы называем точные сикации. Так вот в качестве вексов игреков. но у нас не обязательно должны быть картинки, там, метки, это могут быть, например, куски текста, то есть икса, это может быть предложение или кусок текста на одном языке. А, Игорек, вот в этой постановке такой задачи, которая типично для обработки естественного языка, это перевод на другой язык этого же текста. Ну и соответственно, если мы возьмем типовой алгоритм выучивание машинного перевода в конце мы получим не был модель которая также ожидается что при применении к новой к новому куску текст к новому предложению выдаст адекватный перевод ну вот а ты с машины переводом я так более менее был знаком когда только только начинал этот проект. ну, я, конечно, прокриптографии ничего нервно почти и. соответственно, я, я как размышлял я думал ну вот если если. если представить, что икс. ну, если представить, что мы никакой славянский язык не знаем, то икс для нас это некий какой то шифр, текст, а игорьк это вот то, что мы понимаем, хотя в данном слышь, конечно, мы и твой друг, понимаешь, Но если бы там было бы на каком то языке, который мы не знаем, мы не знаем, то для нас это было бы как некий чип, да? Вот и теперь мы переходим к симметричной криптографии симметричным крипто система. То есть вот у вас есть какой то, ну, так называемый исходный текст, хотя это не обязательно должен быть текст, это любая любая информация, любые данные, картинки там, видео, что угодно. Просто терминология такая, что это называется обычный пэнтекс. И вы хотите вот эту информацию передать свои подруги, соответственно, вы и ваша подруга должны как то договориться о секретном ключе, который знаете только вы и ваша подруга, и все, больше никто. И дальше вы применяете алгоритм шифрования, которые параметризуется ключом. Ну, то есть шифрование это что? Это некая функция, которая берет на вход вот это как икс, да? То есть исходный текст. Эта функция зависит от параметра ключа. То есть для разных ключей функция разных она выдает на выходе шифртекст, и вот этот шифр текста отправляется подруге, а подруга знает что. ну какой алгоритм расшифрования был использован. Причем шифрование здесь это взаимнооднозначное соответствие, то есть оно может быть обращено, то есть есть обратная функция, и если знать вот этот секретный ключ, что обратную функцию посчитать довольно лепо. И соответственно, она применяет обратную функцию, получает исходный текст, исходную информацию, и вот в этом как бы смысл симметричная крипт систем, то есть как именно вы, ваша подруга, договариваетесь о ключе. Ну, это как бы отдельная, отдельная демона есть, есть методы, как по незащищенному каналу вы можете обменяться секретным ключом. Так вот я что подумал. Я подумал, что вот если смотреть на эту часть, то есть зафиксировать ключ мы мы не знаем ключа, но, допустим, у нас есть возможность на генерировать кучу кучу вот таких пар шиппа текст и исплодный текст, то почему бы на это не смотреть как на задачу машинного переводе, да? То есть с какого то непонятного языка на понятный язык. То есть вот такое желание. Хорошо, давайте попробуем. То есть с генрим такие пары икс игрек. То есть как это делается? Мы берем какие то куски текста на напом языке шифруемых, используясь фиксированный ключ. Ну, понятно, что это тек на самом деле теперь уже воспринимается алгоритма шифрования просто как последовательно сбит и это долгобит он переводит данный последователь сбит в другую последовательность сбит, которая здесь в шестнадцатиричной системе записана. применяемый алгоритм обучения получаем как бы модель дешифрации, которая должна по новому шифротексту выдать, взяв на вход, но Шепертекс должна в идеале выдать адекватные соответствующий исходный текст, но ничего не получается, там выходит вообще мусор. Ну, теперь вопрос почему? Да, почему не получается? А давайте возьмем какой нибудь какой нибудь высокой информации, вот, скажем, текста предложения и посмотрим на его шифротекст. Шифротекст это последовательность бит, да? Но здесь в шестнадцатиричной системе записано Теперь возьмем вот в этом предложении маленькую эф заменим на за главную. и если бы это переводилось на какой то естественный язык человеческий, то, конечно, изменение в в в переводе были бы минималь. Да я сегодня попробовал Гугл траслей ставить, там вообще никаких изменений не происходит. Он понимает, что если в середине слова, в середине предложения слово за главный будка все равно его с маленькой буквы в переводе напишно. Ну так вот. А вот шифртексте там вообще абсолютно, казалось бы, не связанная последовательность битов выходит. Но на самом деле тут надо понимать что. Что, что Вот этот кусок, вот этот кусок это результат работы одной и той же функции. Ключ у нас зафиксирована. То есть получается, что ваши права это такая негладкая функция при малом изменении входа изменения на выходе, а не колоссальное, Ну, как бы в принципе вот это в этом есть с критографии. задача критографа такие функции строить, чтобы их было трудно обернуть. Вот это как бы в двух словах. почему, почему не получится выучить хороший алгоритм шифрова. Но теперь вот конкретно к этому главному гостю этой текущей презентации. Адванснкрипшен стендер, то есть это так называемый блочный шифер, он на вход берет сто двадцать восемь бит, на выходе также сто двадцать восемь бит. И ключ, секретный ключ, который параметризует а если он может быть сто двадцать, восемьдесят, девяносто два двести пятьдесят шесть. И получается, что разработан алгоритм, ну, как бы, ну как относительно недавно, ну и в принципе уже давненько двумя бельгийскими критографиями дамин ремонт. В девяносто восьмом году он пришел на смену так называемого тата инкрипшен стандарт дес потому что ну дес, оказалось что легко взламывается и вот там был объявлен конкурсы и скарлетт новую замену да, сегодня а если это самое распространенный алгоритм шифровании то есть вот сейчас мы сейчас мы здесь в зуме в трафик у нас с асом шифруется соответственно когда вы всрфите обмениваетесь почвыми сообщениями в отсапе везде все шифруется Есом, Но единственное как для бытовых нужд сто двадцать восемь бит ключа достаточно. Но когда дело доходит до секретно секретная форма, то надо Вот Агентство национальной безопасности штата, по моему, требует двести пятьдесят шесть бт, чтобы был ключ для шифрования материалов под грифом секрет. И суть такая, что Ну а если вообще то не базируется на какой то трудной математическая задача, как, например, система с открытым плечом арысей или дифи Хелмана, они базируются на каких то трудных матиматических задачах по типу того, что разложить целое число на простые множители это трудное или там дискретное логарифмирование это трудно Ну вот а а вот это а если он является эвристикой и как бы вроде как на какой то трудной математической задаче не базируется либо мы не знаем о существовании такой но в то же время самые лучшие атаки на ес они только вот на на эпсило лучше чем полный перебор ключа То есть непонятно его легко взломать не легко, ну, судя по существующим передовым попыткам, не так ли теперь подробнее что внутри этого А получается что ас он является частным случаем так называемый подстановочно перестановочной сети спеть Но эс сама по себе является частным случаем ки айтинг сайфа шифа с переменным ключом соответственно. я сначала расскажу про кейс потом как эспин является частным случаем кейси и как дальше а е специализирует. вот начинаем с кейси наход то есть это мы мы говорим про облачные шифры они все берут на вход некую последую бит и на выходе дадут последовательность сбит такого же размера то есть энбит. Значит, вначале применяется так называемый нулевой раунд, то есть берется ключ ну, мы сейчас будем для просто ты делать допущение что ключ он имеет такой же размер то есть тоже энбин и через исключающее или исключающее или он складывается с исходным текстом, с иной информацией. И дальше результатирующая последователь энбит проходит через перестановку, то есть это пи один это перестановка бит в результатирующей ретирующие от этой строки и дальше добавляется еще один ключ так называемый первый к это был нулевой и вот эта перестановка вместе с с первым ключом это первый раунд. Дальше эти раунды не чередуются, ну, точнее, повторяются то есть также применяется перестановка возможна другая и дальше с добавляется ключ ключ точно другой должен быть вот вот эти перестановки не взяв на разные они могут быть одни и те же. Мы вот таким образом, допустим, четыре раунда проходят и иди на выходе у нас эбитная строка и вот это объявляется шифртекст. То есть здесь каждая операция, она обратима. То здесь что нужно? Если мы хотим от шепотекста перейти к исплоному тексту, можно вот опять добавить этот же ключ, применить обратную перестановку и так далее и дойти до увиду словно тек теперь как как подстаноч перестаночная сеть специализирует этот шифр с переменным делается допущение о о форме о структуре вот этой перестан Перестановка небо какая? А вот какая то конкретная. причем как это делается? берется вот этот вот вход перестановки это энбит по прежнему эбит он нарезается дальше на на куски по побит в случае а это сто двадцать восемь а б это по. то есть у нас шестнадцать по идее так отпусков должно быть по восемь бег и соответственно вот этот каждый кусочек восьмибитный кусочек дается на вход некой нелинейной функции или лином отображении, которое на выходе также дает восемь бит. Вот здесь каждый такой эс бокс каждое такое преобразование, если оно на выходе дает восемь бит, и их таких кусков шестнадцать, и они дальше все склеиваются, и потом применяется линейное преобразование, но это имеется в виду линейное над полем, то есть конечное поле порядка два и соответственно ну что на выходе тоже была последователь цз нулей единичек то не ведома про санкции и дальше у нас. То есть это вот как сеть устроен, да? Ну, то есть это по прежнему келт найти сайфер, но с конкретной формой перестановки. Причем это форма перестановки одна и та же на всех раундах, только ключи меняются. Теперь как Ас дальше специализирует подстановочной перестановочная сеть Он просто говорит, что эс бокс вот это вот приобрезание эс оно должно быть вполне конкретным преобразованием а именно мы будем смотреть на восьми битный вход из бокса как на элемент конечного поля порядка два степени восемь. то есть у вас поле ну, конечно в нем два степени восемь элементов так называем поле голова и понятно что в этом поле для каждого не нулевого элемента у вас есть обратно и так вот этот обратный элемент это и есть взятие обратного элемента к к к к входу это есть бокса вс, ну там с точностью до линейного преобразования там еще дальше линейное преобразование, но сейчас мы это опустим если на вход подается ноль то поем так это у нас соответственно, ас, Понятно, что здесь все все обратимо и как бы если если знать. Ну а еще, наверное, стоит сказать, что ключи они выводятся тоже там есть так называемый планировщик ключей, то есть, вообще то, используется один ключ, из которого потом детерминировано, ну, то есть тоже через некую функцию получаются все остальные рандовые ключи. Вот и соответственно, если бы если знать ключ, то все обратные операции они выполняются, и можно по протекции восстановить исход. Так, есть какие то вопросы на данном?<br />
[1315.24]: Коллеги, пожалуйста, вопросы есть юные? Есть чат. Можно поднять руку, и тогда я вам дам возможность говорить голосом. Я думаю, можно. А вот что пишут.<br />
SPEAKER_03 [1334.0]: В хорошо, Окей. Теперь переходим к. Ну, еще пару слов, да? То есть если вот мы а е запишем, так как последовательность применения бокса потом линейного преображения добавление ключа, ну, вот такая структура получается, то есть чередуется нелинейность, линейность и так далее. А зачем нужно нелинейное преобразование? Чтобы спрятать, по сути, зависимость между ключом и шифротекстом. Потому что если бы не было вот этих эс боксов, если бы все было линейно, то там есть такие давно известные атаки типа дифференциальных криптонализов и линейных крепитанализов, которые по дельте между входами. То есть вы дождете два хода, вы знаете дельту между ходами, соответственно, вы смотрите на дельту между выходами. ну и таким образом вы можете понять как как ключ на это дело действует. Вот нос бокс он как раз таки нужен для того, чтобы вот эту зависимость спрятать, чтобы не так легко было по бумбара, ну, по паре входов и парень выходов понятия.<br />
[1420.72]: Там как? Как? Ну, клюдь как устроена, по сути.<br />
SPEAKER_03 [1432.36]: Если бы а, ну вот а линейное преобразование нужно для того чтобы вот как раз таки распространить изменения в одном бите входа на большое количество битов выхода Вот и ты такой пример допустим, на входе у нас, ну, если бы у нас все было в, видно если, один восемь было бы, скажем такой вход и мы прогоняем через блочный шифр получаем такой выход и потом меняем один бит буквально вот третий бит сенечки на нолик. Ну, мы ожидаем, что на выходе половина, примерно половина битов изменится это вот за счет не обозвать. Так, теперь почему а есть трудно выучить генными методами, в том числе глубоким обучением как какую бы глубокую не растили, какую бы широкую не рассеет не использовали бы. Проблема заключается именно в методе, базирующемся на градентах, то есть в генах проблем. Сначала мы вот такое понятие ведем вычислительная неразличимость, то есть как бы если, если досла, если грубо, то, скажем, если я попрошу вас попытаться найти отличие между этими картинками и дам вам какое то ограниченное количество времени, там пять секунд или десять секунд, то это трудно сделать, если там побольше бюджет. Ну, скажи, пять минут то он, наверное, в принципе можно. Я вот буквально перед презентации пытался найти, и вот здесь вот, скажем, есть возвезд дырка в дырка, но это, конечно, зависит от того, сколько есть времени на нахождение. да, это, это если грубо, да, если формально, то пусть у нас поку две функции вероятности. мы говорим о дискретных распределениях и покуда у нас две фунцигст. и пусть у нас есть алгоритм который выдает либо ну, либо один и его задача так называемый различитель, то есть его задача различать наблюдения сп от наблюденийску. то есть если у нас образец если икса вышел из распределения то, ожидаем что алгоритм волик а если иску то един, например. так вот два распределения по называются эпсилон близ эпсилон близкими вычислительно если если вот мы берем наблюдение сспм даем его находит алгоритм дэн и в единичку да, ну с какой то потому что и у нас выкидывается случайным образом исп. Теперь то же самое делаем для наблюдения и скул то есть выкида выбрать свои наблюдения из распределения ку даем его на вход д и он тоже дает единичку с какой то вероятность если разница между этими вероятностями она маленькая не больше я все то мы называем покусе близкими. но еще одно требование что должен быть какой то бюджет на на время вычисления время работы алгорит модель то есть делается общение что любого алгоритма с полиномамильной сложностью вот эти две вероятности эпсон близки. И тогда мы называем сами расправления по ику Эсл английскими вышли. Так, теперь вот что у нас известно про Аес Берем Аес берем на вход два исходных текста то есть это две энбит две ста двадцати восьми битные строчки вот икс экстрих это если вместе это двести пятьдесят шесть б мы их каждой по отдельности шифруем на ходе каким то ключом, и получается на выходе у нас тоже две сто двадцать восемь битной строчки, и если мы на них смотрим как вот последовательности двести пятьдесят шесть бит то вот эта последовательность двести пятьдесят шесть бит это почти что в кидание монетки двести пятьдесят шесть раз кидание сбалансированные монетки двести пятьдесят шесть раз, ну при, условии что ключик мы выброс которые случайно образ то есть вот терема она звучит так что пусть ка у нас случайный ключ эн битный ну эн это сто двадцать восемь с и у нас есть два исходных текста и штрих а они разные различные, мы их шифруем асом у которого шесть и ораундов. а один раз это, помните, это перестановка плюс добавление раундов встречается. Ну так вот шесть эраундов таких прогоняем, и вот у нас на выходе вот эти вот игорь игры штрих это вот вот это вот а от икс а с ак штрик. И тут важно, что к одной и тоже, то есть как случайные векторы эти два вектора независимых, потому что они оба абазируются на одном и том же случайно векторе, но и его авторы, и они доказали, что, что вот эта вот пара, то есть вот эти стот, сколько там двести пятьдесят шесть бит, которые здесь есть, они вот эпсилон. Эпсилон это штука не эпсилон близкий к ну, двести пятьдесят шесть раз побрасыванию, сбалансированный? Нет, но, конечно, вот эта вторая часть южриха, она должна отличаться от первое. То есть это не совсем прям чистые двести пятьдесят шесть случайно подбрасывание. Вторая часть она должна отличаться от первой? Ну да, почти что это почти что двести это случайность подбрасываниями. хотя на самом деле, конечно, тут максимум, на что мы могли бы рассчитывать, казалось бы, это поскольку у нас ключ случайный, то вот это первая часть, конечно, случайно, да, потому что ключик случайно. Вот то, что вторая часть, она почти что не зависит от первой, в этом весь прикол. Вот это эпсилона, но, конечно, для маленьких хэр не очень маленькая, но поскольку падает экспозициально поэту в принципе три довольно большом количестве раудов мы можем сделать его сколь угодно маленький. Вот это очень неоптимальная оценка потому, что в реальности А Ес использует там у тебя десять двенадцать раундов. А если вы попробуйте вот эту штуку сделать меньше, скажем один делить на два в степени сто двадцать восемь, то то там аар должно быть что то в районе три тысячи, что ли, ну очень много. Но нам главное на качественном уровне понимать, что происходит. Так вот, хорошо, у нас есть такая все случайная серьезность. Дальше Что? Дальше? Ну, давайте попробуем все таки выучить аеса а хотя бы один бит, то есть пусть первый бит, а если он единичка, то мы заведем такую функцию эф эфкс парметизованный клечон к если у ас на выходе ничка и и будет плюс один если на выходе вес ноль. Ну, в принципе можно было использовать один ноль, то есть просто сказать что мфк а икс то это просто первый бит Аес, но вот такая вот такое масштабирование ответа оно оно удобно в том плане, что от ожидания вот такой случайной величины икс это у нас какой то случайный шифртекст, какой то случайный исходный текст. То есть мы икс выбрасываем как последовательность, случайная последовательность из энбит ее это равномерное распределение. то есть вот это у нас булевый кубик, гипер кубик размерности энны, мы одну из его вершин случайным образом выбираем, и вот делается допущение, ну, не то что до общения, можно показать, что ожидание. ну. ну это просто потому, что половина вершин в этом купите будет минус один, другая половина плюс один размечена. вот и это по сути, метко мы хотим сейчас свести к супермаслива при этом дисперсия будет единичка это тоже не сложно показать. и почему это удобно? потому, что если мы теперь рассмотрим вот такое выражение, ну, по сути это скалярное произведение то. есть вы вы берете два разных ключика фиксированных, то есть в отличие от тюрем или предыдущий тут у нас включи фиксируются, а теперь вход рандомизирован, и теперь получается вы два еса, то есть вот это вот это результат работы а ес с ключиком к а это результат работы а е с крючком кашри. и вы берете первый бит здесь и первый бит вот у этого есть. и эти два бита просто перемножайте, и получается, что в среднем вот такая вот такое выражение в среднем оно очень маленькое, можно сделать его сгодно, ну как ни сколь угодно маленьким. то есть здесь это сто двадцать восемь. То есть вот эта часть она по себе маленькая, а этпсела использует достаточное количество раундов можно сделать сколько угодно маленький Вот теперь да, это, конечно, легко. Легко. Вот это легко показать, используя предыдущий результат. Если бы у нас вот эти функции в Кае в Каштри были бы чисто артагональный, то есть их нелетное произведение, задаваемое таким образом, было бы ровно моль. Вот тогда можно было бы использоваться результат шаля Шварца и авторов с две тысячи семнадцатого года, где доказано, что для любой такой системы любого такого класса функций всуд ортонормированной системы функция гридный спускок г ну методы обучения на основе кредитного спуска они приводят к не приведут к успех вот но у нас у нас не чистый ноль, соответственно нам мы не можем напрямую использоваться их результат. Хорошо, мы посмотрели что там в каком месте вот ушале шварцы используется и как он как вот это условие используется оно? Используется через не веселя которая оказывается в в линейных пространствах с со скалярным произведением можно в принципе обобщить вот то есть вот это вот получается это обобщенные нераство бесселя но имеет специальное название называется у был, ну не по типу ус суть такая выберете вот д д элементов вот в этом векторном ленином пространстве со скалярным произведением и еще один какой то телемент же теперь вы берете же и пройцируе на вот эти вот фиты потом берете с квадратой этих проектов складывайте, ну, то есть если если вот в школьной терминологии это это сум сумма квадратов катетов если бы у нас эдифд были бы армированы системы. да и вот сумма квадратов катетов она не превосходит в квадратке потянул за ну, с точностью до некого множителя, потому что у нас их один евд они нертонормированы. И вот за счет того, что здесь вылазит вот вот это вот попарное скалярное произведение между элементами внитожита и норма каждого элемента. Но если мы будем считать, что по норме не единичка, по сути, у нас это так и есть. Вот это дисперсия это как раз таки будет норма квадрат норм. Ну вот то то Вот этот ножитель он будет единичкой а. А вот это вот оно как раз и отражает насколько насколько близко эта система эф один эф дэк артонормированной системе и вот если он довольно близко картоном с ними, то, ну, максимум вот эти попарные произведения маленький. Ну и как бы в вырожденном случае если это прямо ортная вмена тема, то мы получаем вот именно не нравится бесселя, которая как раз таки используется в работе шале В Шварц. Но мы вместо неравество весели используем вот это вот неравенство. но при этом мы контролируем вот эту часть попарные произведения, потому что у нас есть вот этот результат, да? То есть мы за счет большого количества раундов всегда можем вот это попарное произведение, даже максимум, сделать сколь угодно близким к один, делить на два в Миде теперь у нас это есть, у нас есть вот это вот неравенство. И как мы будем выучивать, конечно, граде через глубокое, глубокое, неглубокое любое обучение, которое использует грозный спуск то есть вот эту функцию это у нас некий голден чурс который золотой стандарт который мы хотим выучить а выучивает мой был, конечно, в классе на другом в классе не растет вот аш это икс это это класс не рассеет какой то фиксированный архитектур любую уберите архитектуры вот это это все все все параметры этой нерос. Ну вот, соответственно, тут не рассеять, взяв на вход икс вот именно исходный текст она выдаст игрек игры игрек с крышкой Игры с крышкой мы, конечно, хотим сделать, чтобы было максимально близким к бенус один или кс один в зависимость адрекса как бы выучивать такую такую функцию суперс леник То есть мы нагнерируем кучу кучу разных весов разметных через заезд у нас есть он ключ зафиксировал возьмем ключ, зафиксируем, разметим все вот эти вот эксы плюсадими нассадился вот. Это наша наша обучающая выборка это обучающая выборка будем скармливается в волгоритм обучение. Что такое обучение? По сути это подгон подгон на нейросети к к обучающей выборке. Как это сделать? Ну, через империческую функцию риска то есть это это у нас экрический риск и ошибка обучения. То есть мы используем какую то гладкую гладкую в плане дифференцированную функцию эль, которая как раз таки отвечает за потерю, если наша нейросеть выдает вот такую вот такую метку, а на самом деле метка должна быть вот такая, да? И то есть вот как вот эту разницу между ними функция потерь должна отражать? То есть, ну, типовой пример это хадратичная функция потери. Но поскольку здесь классификация, то обычно используется кросс допусти. И вот соответственно мы все эти ошибки собираем на наших примерах усредняем это отношение имперической функцист и теперь мы вот функцию пересун цика будет минимизировать перекри минимум зашивалась и минимум этой функции объявляем параметры которые, минимизируют это как раз такие исковые параметры не расти которую мы считаем наилучшим образом подно на под на, Да, теперь вопрос как мы это дело как меня то есть вообще то вообще то можно.<br />
SPEAKER_02 [2570.56]: Пойди на любой Ас, найти не рассеять, ну, там.<br />
SPEAKER_03 [2578.48]: Определенной архитектуры, которая будет в точности выдавать, ну, тот ответ, который ес. Но все дело в том, что мы ищем ищем значение параметров генным спуском, как он работает. Ну, получается, мы на эту функцию мы хотим минимизировать вот эту вот су ллк почему ка что она зависит отключка, да, если мы вот как бы другой ключик сейчас возьмем, то функция в свою форму поменяет, потому что метки метки тоже поменяются ведь. Вот и соответственно, все вот эти вот разницы они то как работает кредитный способ. Мы берем сначала какую точку наугад ноль, потом делаем шаг в направлении, противоположным градиенту размер шага альфа сделали шаг, потом оказались новые точки, и в этой новой точке вычислили зановоградин и сделали шаг опять в противоположном направлении. и таким образом мы скатываемся в какой то локальный минимум то есть это такой стандарт де факто как как не расте сейчас обучается. Ну вот то есть тут тут важно что что, во первых, сама функция вот это имперические функции инкического риска она она она должна зависеть отключая потому что если. Если. Если мы берем разные ключи, а при этом функции не меняется, ну, тогда это странно, да? То есть тогда что предметки они одни и те же, но это не так метки они будут меняться в зависимости отключат, потому что мы говорим о первом бите а. и понятно, что для половины ключей первый бит будет мидс один для половины ключей первый вид быстро с час а. ну вот и в общем вот эта вот поверхность меняется, соответственно и гредиты это должны меняться. Да, вот вот мы бере как будто началь точно вот это ноль. и, скажем, у нас какой то ключик, но гент один, а если мы использовали бы при этом другой ключики такую же поверхность построили бы то кент совершенно другой должно. Так Вот теперь к ближе к на нашего результата ближе к концу мы используем тот факт почти штартагональности вот этих функций, которые являются первыми битами Аса. то есть это вот тот результат который на основе Лю Теперь берем Булас Беллман, Нера по типу У Беллмана все это берем, конечно, работу шале В шварца, там делаем модификации и получаем такой результат раздат следующее что оказы если мы будем, ну, вот случайным образом ключик берем и смотрим на дисперсию градиента функция потерь, имперская функция риска, то вот дисперсия вот этого градиента, она оказывает очень маленькая, то есть эпсилон мы всегда можем сделать сколь угодно маленький, взяв большое количество раунда поса вот это число вс по себе уже маленькая и здесь есть ну, да, некая, некая вот эта вот не констант функция от это зависишь она мажорирует вот среднеквадратичнаяму градиентно домой не расти но как считается то есть если мы делаем до общения что сама по себе вот эта функция от это она тоже ограничена, то есть не взрывается, то, по сути, у нас дисперсия кредита. А что мы подразвиваем под дисперсии? Это же гигде, это вектор. Случайно вектор получается здесь, потому что. Как случайно? Ну, вот под дисперсией этого случайного вектора мы имеем в виду в среднем как по норме этот градиент отклоняется от своего среднего значения, да? То есть вот вот это вот средний ген каждый градиент в зависимости от отключка когда, смотрим как, он сильно отклоняется от от среднего вот этого кредита а здесь усреднение тоже по ключику пока и просто вычисляем норму потратить вот вот это мы имеем в виду под дисперс, да? Ну и так вот вот это вот среднеквадратичное отклонение градиента от своего среднего значения оно оно очень мал. То есть получается по сути, что. Ну, то есть. Вот вот сами представьте, вот у вас есть случайная вечна, и у нее дисперсия маленькая, очень маленькая, да, там близка к нулю. Так это так это случайная величина, но она почти что не случайно, она почти что констант. И тут. тут вот тоже такой казус получается, что гардин почти что один и тот же всегда вот какой.<br />
SPEAKER_02 [2914.56]: Бы вы ключ не брали? Гн всегда почти один и тот же.<br />
SPEAKER_03 [2918.84]: Ну, соответственно, а как тогда градному способу учится если, гран всегда один и? вы вот получается если, мы этот результаты используем вместе с работой шамира Который, в принципе является продолжением работы шалю шва, так можно строго показать что почему гас полка безуспешен при выучивании даже одного бита а Ес только если, конечно, мы не позволим экспоненциальному количеству шабов гентного скуа. и получается что результат не зависит от от от того класса моделей параметрического класса модели, которую мы используем, это линейная регрессия или там глубокая не рассеять или не глубоко это неважно. Вся проблема в том, что сами гранты они всегда будут у вас в одну сторону посмотреть. если мы во всех этих рассуждениях заменим наезд на обратное есть то мы получаем что то есть мы сейчас пытались же, получается, выучить примешь праване, то есть по исходному тексту пытаться предсказать один бит шифртекста, да? Но все эти рассуждения можно сделать и для обратного Ес, И тогда мы получим, что, по по исход по шифор тексту мы один бит из слоного текста не можем выучить гдными методами запали ное время. Ну вот мы все таки попытались. Ну, понятно, что это тюрьма говорит, что они ничего не получится, но давайте попробуем все равно. То есть мы с Генри кучу кучу пара. то есть у нас будут на входе шифртексты, то есть мы какие то берем исходные тексты, шифруем асом с фиксированным ключом, и это у нас пусть будет, ну, вход, а на выходе в мерке мы используем первый бит бит исходного текста, ну, пытаемся выучить дешифрование. по сути, только один деше так формируемая выборку. Потом три архитектуры рассмотрели. это у нас количество нейронов на каждом слое. То есть понятно, первый слой, входной слой то сто двадцать восемь нейронов. И потом, вот, скажем, первая архитектура здесь на промежуточном слое две тысячи сорок восемь миллионов. и научение понятно, один у нас же мы же хотим делать предсказание одного бита вот ну и соответственно так обучаем эти неросети через стастический гранатный спуск ну И понятно что, ничего хорошего не получается на на тестовой выборке у нас не лучше, чем если бы мы подбрасывали монетку и таким образом предсказывали бы первый бит исходного текста. Если мы берем вот якобы самую успешную архитектуру вот первую которая две тысячи сорок восемь миронов а, посередине в которое более менее что то пыталась хотя бы а верхитнуть, потому что остальные даже переобучиться толком не могут, ну вот этот даже хотя бы попыталась что то запомнить на обучающие выборы. И если мы берем процируем вот эти вот репрезентации с промежуточного слоя на просто на плоскость, то есть используем две первые, две главные компоненты проецируем на плоское, то получаем что отрицательный и положительные примеры они не разделены тут, казалось бы, можно было возразить но типа сицировали очень многомерного пространства на на сегодня лишь двухмерное мы могли бы как бы утратить в структуру но если так подумать в пие это все равно линейная праца и если у вас классы были раздели и причем она же небо как прорицирует а сначала находит, ну, там первое главное компания это направление, вдоль которой дисперсия у вас максимальная, да? То есть это по сути, если представить, что вот эти два класса они были бы разделены в многомерном пространстве, то, вообще то при проекты на на плоской с они должны были остаться раздел разделенными. да, вот, ну вот мне мне не разделяется, не получается. Ну вот, теперь все, почти что уложился.</p><p>The post <a href="https://ntr.ai/webinar/nauchno-tehnicheskij-vebinar-hardness-of-learning-aes-with-gradient-based-methods/">Научно-технический вебинар «Hardness of Learning AES with Gradient-Based Methods»</a> first appeared on <a href="https://ntr.ai">Компания НТР</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Научно-технический вебинар «Глубокое обучение для моделирования и реконструкции 3D форм»</title>
		<link>https://ntr.ai/webinar/nauchno-tehnicheskij-vebinar-glubokoe-obuchenie-dlya-modelirovaniya-i-rekonstrukczii-3d-form/</link>
		
		<dc:creator><![CDATA[Модератор Модераторов]]></dc:creator>
		<pubDate>Thu, 24 Aug 2023 05:50:31 +0000</pubDate>
				<guid isPermaLink="false">https://ntr.ai/?post_type=ntr-web&#038;p=1159</guid>

					<description><![CDATA[<p>Спикер о вебинаре: В докладе я расскажу об одной из [&#8230;]</p>
<p>The post <a href="https://ntr.ai/webinar/nauchno-tehnicheskij-vebinar-glubokoe-obuchenie-dlya-modelirovaniya-i-rekonstrukczii-3d-form/">Научно-технический вебинар «Глубокое обучение для моделирования и реконструкции 3D форм»</a> first appeared on <a href="https://ntr.ai">Компания НТР</a>.</p>]]></description>
										<content:encoded><![CDATA[<p><strong>Спикер о вебинаре:</strong><br />
В докладе я расскажу об одной из важнейших для компьютерного зрения задач – моделирование и реконструкция 3D объектов. Действительно, современные приложения в области компьютерной графики и анимации, построения сцен для виртуальной и дополненной реальности и робототехники были бы невозможными без точных алгоритмов анализа и моделирования трехмерных изображений, учитывающих геометрию сцены. Вы узнаете об основных этапах, которые необходимо пройти при реконструкции 3D объектов, и о том, какие методы на этих этапах можно использовать, а также о том, какие данные для этого требуются и каким образом их можно собирать.</p>
<p><strong>Дополнительные материалы:</strong><br />
&#8212; Oleg Voynov, Gleb Bobrovskikh, Pavel Karpyshev, Saveliy Galochkin, Andrei-Timotei Ardelean, Arseniy Bozhenko, Ekaterina Karmanova, Pavel Kopanev, Yaroslav Labutin-Rymsho, Ruslan Rakhimov, Aleksandr Safin, Valerii Serpiva, Alexey Artemov, Evgeny Burnaev, Dzmitry Tsetserukou, Denis Zorin. Multi-sensor large-scale dataset for multi-view 3D reconstruction. CVPR, 2023. <a href="https://arxiv.org/abs/2203.06111" rel="nofollow">https://arxiv.org/abs/2203.06111</a><br />
&#8212; Andreea Dogaru, Andrei Timotei Ardelean, Savva Ignatyev, Evgeny Burnaev, Egor Zakharov. Sphere-Guided Training of Neural Implicit Surfaces. CVPR, 2023. <a href="https://arxiv.org/abs/2209.15511" rel="nofollow">https://arxiv.org/abs/2209.15511</a><br />
&#8212; Ruslan Rakhimov, Andrei-Timotei Ardelean, Victor Lempitsky, Evgeny Burnaev. NPBG++: Accelerating Neural Point-Based Graphics. CVPR, 2022. <a href="https://arxiv.org/abs/2203.13318" rel="nofollow">https://arxiv.org/abs/2203.13318</a><br />
&#8212; Albert Matveev, Alexey Artemov, Ruslan Rakhimov, Gleb Bobrovskikh, Daniele Panozzo, Denis Zorin, Evgeny Burnaev. DEF: Deep Estimation of Sharp Geometric Features in 3D Shapes. ACM Transactions on Graphics (TOG), Siggraph, 2022. <a href="https://arxiv.org/abs/2011.15081" rel="nofollow">https://arxiv.org/abs/2011.15081</a></p>
<p><strong>Презентация: </strong><a href="https://drive.google.com/file/d/1k56dXPUMVN0O_syGgv5WM7hnscfwasih/view?usp=sharing" rel="nofollow">https://drive.google.com/file/d/1k56dXPUMVN0O_syGgv5WM7hnscfwasih/view?usp=sharing</a><br />
<strong>Видеозапись: </strong><a href="https://youtu.be/rTz5gLaFMJY" rel="nofollow">https://youtu.be/rTz5gLaFMJY</a></p>
<p><strong>Расшифровка вебинара:</strong><br />
<em>Расшифровка выполнена с помощью системы автопрокотолирования Protocol.AI, разработанной НТР</em></p>
<p>Речь идет о генерировании изображений, даже тех, которые не существуют и могут соответствовать какому-либо текстовому описанию. Сегодня я поговорю о нескольких классах алгоритмов, которые могут решать эту задачу. И почему это вообще связано с искусственным интеллектом? А потому, что существуют два типичных подхода к решению подобных задач, и между ними есть некая связь, о которой я расскажу.</p>
<p>Генеративное удаление как таковое развивалось довольно давно, но в 2014 году появился новый подход на основе ГАНов (Генеративных adversarial networks) &#8212; это сверточные нейронные сети, которые берут на вход какой-то вектор шума или шумовую матрицу. Если правильно настроить параметры такой сверточной сети, на выходе можно получить изображения высокого разрешения, например, лиц людей, которые не существуют. Эта техника эксплуатирует факт, что если у нас есть простое распределение, например, равномерное гауссово, то нелинейным отображением его можно преобразовать в arbitrarily сложное многомерное распределение. Вопрос заключается в том, как это сделать.</p>
<p>То есть, мы можем не знать вид плотности распределения рэпле, но мы можем сгенерировать неявное представление этой плотности, которая проявляется в данном случае. Распределение данных, генерируемых ею, напоминает распределение реальных данных, причем этот факт используется в алгоритме, который назван градиентным неконкурентным нерассеивающимся. Кроме того, в 20-м году появился другой класс моделей, основанных на диффузионных процессах. Сначала генерируется шумовое изображение, а затем оно специальным образом расширяется, чтобы получилось изображение, похожее на реальное, как те, что были в обучающих выборках. Кроме того, в идеале изображение коррелирует с описанием, которое пользователь ввел. Эти результаты используют некоторые интересные факты и теорию вероятности, особенно в отношении второго подхода, основанного на диффузионных процессах. Эти факты были заложены теорией паронных процессов, разработанной Колмогоровым, известным математиком прошлого столетия. Вот собственно и три основные компоненты.</p>
<p>Я собираюсь сначала рассказать о диффузионных процессах, которые представляют собой первый подход к построению нериативных моделей. Второй подход &#8212; это оптимальный транспорт, который отличается от диффузионных процессов, но превосходит их математической строгостью и способностью достичь желаемого результата в различных ситуациях. Можно соединить эти два подхода с помощью моста Шелтингера, который также заслуживает внимания.</p>
<p>Диффузионный процесс в непрерывном времени &#8212; это просто преобразование переменной x в момент времени, которое можно записать более просто. Здесь x может быть многомерным и задается нелинейным уравнением, включающим коэффициент сноса. Кроме того, добавляется дополнительное движение, которое задает случайность. Существует начальное значение процесса, которое генерируется случайным образом, и затем траектория запускается из этой начальной точки.</p>
<p>Мы можем заинтересоваться свойствами такого случайного процесса. Например, если начальное распределение точки было сложным или даже представляло собой распределение некоторой сложной величины, такой как изображение, мы можем рассматривать изображение как реализацию случайно влеченной из неизвестного нам распределения реальных изображений.</p>
<p>«Предположим, что изображение реального мира является реализацией неизвестного нам распределения реальных изображений. Мы считаем, что существует некоторое распределение, которое описывает изображения в реальном мире, хотя мы не можем быть уверены в этом. Пусть у нас есть сложное начальное распределение для случайных процессов. Известно, что если мы запустим случайную траекторию из этого распределения, то при определенных условиях (не слишком ограничивающих) её предельное распределение будет стремиться к некоторому фиксированному гауссовскому распределению. То есть в каждый момент времени распределение значения в этой траектории будет сходиться к гауссовскому распределению.»</p>
<p>Этот факт, известный в теории марковских процессов в дискретном времени и в прерывистом случае, также применим к случайным процессам. Существует другой важный факт из теории случайных процессов: если случайный процесс в прямом времени удовлетворяет некоторому уравнению, то случайный процесс, определенный обратным временем, начинается с начального распределения, соответствующего предельному распределению прямого случайного процесса.</p>
<p>Если уравнение траектории такое, то оно сходится к предельному распределению, которое соответствует начальному распределению прямого процесса. Это интересный факт, но требует некоторых дополнительных предположений. Кроме того, необходимо знать плотность распределения прямого процесса в любой момент времени, потому что для запуска обратного процесса требуется знать градиент логарифма этой плотности. Если мы знаем это, то мы можем воспользоваться уравнением, обладающим определенным удивительным свойством, как показано на рисунке. Это также очень важный факт из теории случайных процессов. Почему это оказывается полезным?</p>
<p>Предположим, у нас есть некоторое начальное распределение, например, распределение векторов, каждый компонент которых соответствует пикселю изображения. Мы взяли arbitrarily одну случайную картинку из Интернета, как будто она была сгенерирована из этого распределения, которое нам неизвестно, но мы хотим иметь возможность моделировать его, т.е. генерировать из него наблюдения, похожие на реальные изображения. Мы запускаем траекторию случайного процесса из arbitrarily выбранной начальной точки. Что произойдет дальше?</p>
<p>Если все будет сделано правильно, траектория сходится к предельному распределению, например, гауссовому. Фактически, мы начинаем зашумлять изображение. После определенного количества шагов, где каждый пиксель изображения преобразуется случайным диффузионным процессом, мы получим изображение с пикселями, которые представляют собой гауссовский шум. Если мы можем записать уравнение обратного процесса для данного диффузионного процесса, то мы можем размыть изображение, т.е. взять arbitrarily случайное изображение и преобразовать его в объект из распределения, как будто оно было сгенерировано из начального распределения, которое соответствует распределению реальных изображений. Если мы точно знаем начальное распределение, то мы должны получить изображение, похожее на начальное, а не на шум. Вот как можно реализовать эту идею?</p>
<p>Конечно, для этого необходимо конкретное уравнение, которое удовлетворяет необходимому предельному свойству. Например, такими могут быть уравнения вида «капп», но в нашем случае будем использовать очень простое. В качестве коэффициента диффузии выступает некая функция брата, которая с течением определенного времени стремится к определенному значению с определенной скоростью. Таким образом, мы можем записать уравнение для обратного процесса. Основная сложность заключается в том, что мы не можем явно записать плотность распределения в этом процессе, поскольку оно зависит не только от текущего момента времени, но также от начального распределения, которое нам неизвестно и которое мы именно желаем бы моделировать.</p>
<p>Предположим, нам удалось сделать это с помощью нейросети, в частности, используя универсальный парокситатор. Мы можем ассимилировать градиент логарифма плотности распределения неким хитрым образом. Если нам это удалось сделать, мы получаем следующую систему: у нас есть процесс, который зашумляет изображение, т.е. мы можем применить диффузионный процесс к любой начальной картинке и получить в результате просто шум. Если мы построили такой зашумляющий процесс, его можно обратить, построив некоторую нейросеть, которая аппроксимирует градиент логарифма плотности процесса. Таким образом, мы можем легко размыть изображение</p>
<p>С помощью такого уравнения мы можем легко размыть изображение. Конечно, это уравнение записывается в дискретном времени, и мы вычисляем, как оно взаимодействует с arbitrarily выбранной картинкой, постепенно размывая ее и получая результат, похожий на те картинки, которые мы зашумляли для оценки градиента логарифма плотности распределения. Теперь осталось научить нейросеть размывать изображения таким же образом. На самом деле, все эти методы широко используются в теории случайных процессов.</p>
<p>Если у нас есть распределение траекторий случайного процесса на некотором отрезке для процесса, градиент логарифма плотности которого мы знаем точно, то мы можем оценить распределение траекторий процесса с помощью некоторого расстояния Кульбака-Лейблера между двумя траекториями, рассматриваемыми как случайные функции. Это расстояние задается определенным уравнением, которое включает математическое ожидание внутреннего произведения. В таком случае, что мы могли бы сделать?</p>
<p>Мы вычисляем этот интеграл с помощью модели авторегрессии, вместо интегрирования по времени. Затем мы подставляем значение этой величины, которая задается математическим ожиданием по траектории, во все уравнение и оптимизируем его по параметрам, чтобы обучить нейросеть размывать изображения. Проблема заключается в том, что мы обычно не можем выписать эту формулу явно. Но мы можем воспользоваться следующим трюком: разделим математическое ожидание на две части.</p>
<p>Мы ожидаем не по времени, а по картинкам из обучающей выборки. Мы аппроксимируем это ожидание усреднением по обучающей выборке. Затем мы явно разделяем ожидание на две части: ожидание по картинкам и ожидание по траектории. Мы подставляем оценку плотности логарифма распределения, которую можем вычислить явно для конкретной диффузионной модели, в формулу. Затем мы минимизируем по параметрам. Вот что еще можно сделать: мы можем оценивать все остальное по формуле Монте-Карло для конкретного диффузионного процесса</p>
<p>Здесь мы можем сгенерировать не только картинки, но и картинки, обусловленные текстом. Для этого нам нужно взять выборку пар «картинка-текстовое описание» и добавить в качестве параметра скор-функции некоторый вектор, представляющий условие на текст. Этот вектор получается с помощью вложения текста в некоторое пространство с помощью нейросети. Таким образом, мы можем управлять генерацией картинок с помощью текста.<br />
&#8212;<br />
Хорошо, давайте продолжим. Мы уже обсудили один из подходов к моделям деления. Теперь перейдем ко второму методу, основанному на теории оптимального транспорта. Идея следующая: была задача Монжа, затем Канторовича. В современной постановке задача формулируется так: есть две меры, и мы хотим построить такое отображение T, чтобы оно точно переводило одно распределение в другое. Я уже упоминал, что можно преобразовать любое распределение в любое другое в этом же пространстве, если применить достаточно сложное отображение. Так вот, наша цель — найти среди всех возможных отображений такое, которое минимально изменяет исходное распределение.</p>
<p>Леонид Витальевич Канторович был выдающимся математиком, который работал как в теории, так и на практике, решая множество важных прикладных задач. Он предложил теоретический подход к решению задачи, который оказался очень важным и полезным. Это по сути генеративно-состязательная сеть (ГАН), поскольку генеративные адверсариальные сети — это способ построения отображения, которое трансформирует простое распределение Гаусса в распределение изображений. Важно то, как устроен алгоритм оценки этого отображения и какой целевой функционал оптимизируется.</p>
<p>Теперь обобщим: мы строим генератор, который трансформирует одно распределение в другое, и оптимизируем функционал, который при этом естественно возникает. На самом деле мы не знаем исходные распределения точно; они представлены наборами точек, сгенерированных из этих распределений. Если мы построили такое отображение, можно для любой новой точки предсказать, какой точке она соответствует. Это позволяет трансформировать один домен в другой.</p>
<p>Теперь о классической задаче, также известной как слабый оптимальный транспорт. Если в классическом случае каждую точку одного распределения мы переносим в точку другого распределения так, что кажется, будто последняя была сгенерирована из второго распределения, то в случае слабого оптимального транспорта каждая точка переносится в окрестность, где существует условное распределение в зависимости от этой точки. Мы используем более общее описание функции стоимости, которое не просто учитывает квадрат разности, а зависит от способности порождать новые точки из условного распределения. И вот мы минимизируем этот функционал по всем возможным совместным распределения.<br />
Это то, что называется транспортным планом. В качестве функционала ?C можно использовать квадратичный функционал, который учитывает разность между ?Y и генерированным ?Y из условного распределения при заданном ?X. Однако, если использовать только квадратичную функцию стоимости, это может привести к вырождению транспортного плана в дельта-функцию, то есть условное распределение будет порождать только одну конкретную точку для каждого фиксированного ?X, что нежелательно. Чтобы избежать этого, следует добавить регуляризацию, которая предотвращает вырождение условного распределения.<br />
Такой подход позволяет создавать много разных условных точек ?Y для каждого ?X, используя штраф на дисперсию условного распределения. Это гарантирует, что условное распределение не будет вырожденным. Теперь возникает вопрос, как решать такую задачу оптимального транспорта. Очевидно, что нужно использовать нелинейные преобразования, если ранее мы использовали их для неявного представления распределений. Если раньше у нас было простое распределение, которое трансформировалось в сложное, то теперь ситуация немного сложнее.<br />
Имеется начальная точка ?X, которую мы отображаем в точку ?Y. Однако ?Y не однозначен и как будто генерируется из распределения при фиксированном ?X. Чтобы учесть эту неоднозначность, мы можем генерировать случайные значения шума ?Z, например, из Гауссовского распределения, и за счёт этого дополнительного источника шума разные ?X пропускают этот шум через нелинейное преобразование, получая разные ?Y, как если бы они были сгенерированы из условного распределения.<br />
Это неявный способ моделирования условного распределения, который может усовершенствовать любое условное распределение. Почему эта задача на самом деле важна на практике? Многие задачи анализа данных могут быть поставлены в непарной постановке. Например, мы хотим каждой фотографии сопоставить аниме-лицо, похожее на лицо человека на фотографии, но у нас нет пар «фотография — аниме-лицо». Мы не знаем, какое аниме-лицо на самом деле соответствует каждому человеческому лицу, но мы хотим достичь некоторой разумности в сопоставлении.<br />
Для этого мы задаём функцию стоимости, которая сравнивает лицо реального человека с аниме-лицом, и решая оптимизационную задачу, мы строим такое отображение, которое любую точку из распределения реальных лиц отображает в аниме-лицо, которое похоже с точки зрения функции стоимости на реальное лицо. Это отображение в идеале должно быть эффективным, и предполагается, что меры ??μX и ??μY существуют в одном пространстве одной размерности.<br />
Важно, что при определённых условиях можно достичь того, что отображение будет взаимнооднозначным. Если говорить об исходной задаче, то всегда существует решение. Эту задачу оптимизации можно переписать в двойственной форме, чтобы найти соответствующее отображение. Необходимо взять это отображение и другое преобразование, которое действует как дискриминатор, и оптимизировать данный целевой функционал, что выполняется довольно просто.<br />
Это похоже на задачу, возникающую в генеративно-состязательных сетях (ГАНах), где также присутствует оптимизационная минимаксная задача. Основное отличие здесь заключается в том, что в случае ГАНов существует дополнительное ограничение, которого нет в рассматриваемом нами случае. Задача оптимизируется по параметрам двух моделей, и находится седловая точка. Интегралы в этой двойственной задаче оцениваются методами, предложенными Карлом Декартом.<br />
На практике предположим, у нас есть картинки сумок, и мы хотим для каждой сумки сгенерировать обувь, похожую на структуру сумки. Поскольку из второго распределения при условии точки из первого можно сгенерировать множество различных образцов обуви, мы можем получить множество различных пар обуви для одной и той же сумки.<br />
Примеры подтверждают, что если использовать различные метрики, такие как Receptive Field или другие подобные метрики, качество трансфера может быть таким же или даже лучше. В случае анимационных лиц мы видим, что в целом сохраняется определенная семантика — выражение лица, цветовая гамма, что достигается даже с использованием самых простых функций стоимости.<br />
В этом контексте параметр гамма, о котором идет речь, имеет большое значение: чем больше гамма, тем больше дисперсия условного распределения, что влияет на результаты, которые мы получаем для заданного лица. Это можно использовать на практике, например, для трансформации поля ветра из одного домена, соответствующего климатической модели, в домен, соответствующий реальным измерениям. Это улучшает климатический прогноз, придавая ему свойства, близкие к реальным измерениям, что позволяет более точно оценивать феноменологические риски.<br />
Перейдем к третьей части моего рассказа о мошеннингере, который включает задачу построения оптимального транспорта. Транспортное отображение строится с учетом некоторой функции стоимости, что позволяет генерировать условные ?Y, зафиксированные на ?X, при условии, что функция стоимости не квадратичная и включает регуляризацию для предотвращения вырождения транспортного плана. В качестве такой реализации я использовал дисперсию, но можно применять и другие подходы, например, энтропию этого распределения ΠΠ.<br />
В случае использования энтропии, решение задачи слабого оптимального транспорта в многомерном случае становится практически невозможным, потому что оценка многомерной энтропии распределения ΠΠ в многомерном пространстве — это сложная и неблагодарная работа. Несмотря на то, что энтропия является часто используемым и теоретически привлекательным функционалом, применение его в непрерывных задачах оптимального транспорта, где распределение ?μ известно только выборочно, делает его использование нецелесообразным.<br />
Тем не менее, можно решить задачу оптимального транспорта с энтропийной регуляризацией, просто для этого нужно действовать иначе.</p>
<p>Давайте проясним и улучшим структуру и ясность изложения текста:<br />
________________________________________<br />
Итак, это мост Шрёдингера. Существует задача, которая связывает дефиниционные процессы и оптимальный транспорт. Идея динамического моста Шрёдингера заключается в том, что он представляет собой стохастический процесс, управляемый стохастическим дифференциальным уравнением, который эволюционирует из одного распределения в другое. Мы требуем, чтобы начальное и конечное распределения точно совпадали, и при этом стремимся минимизировать квадрат сноса процесса, делая его траектории как можно более близкими к нулю.<br />
Оказывается, что между решением задачи моста Шрёдингера и оптимального транспорта существует взаимно однозначное соответствие: если решить задачу моста Шрёдингера с определёнными распределениями, то совместное распределение начального и конечного состояний этого процесса будет являться оптимальным транспортным планом для задачи оптимального транспорта. Это интересный факт, показывающий, что вместо прямого решения одной сложной задачи, можно переформулировать её и решить альтернативную задачу моста Шрёдингера.<br />
Как это работает на практике? Рассмотрим прикладную задачу: допустим, у нас есть изображения в плохом разрешении и мы хотим преобразовать их в изображения хорошего разрешения. Технически сложно сделать точные пары изображений одной сцены в разных разрешениях, поэтому традиционный регрессионный подход не применим. Вместо этого у нас есть множество непарных изображений, и мы хотим построить модель, которая &#171;наделяет&#187; изображение в плохом разрешении характеристиками изображения в хорошем разрешении.<br />
Здесь на помощь приходит мост Шрёдингера: начиная с изображения в плохом разрешении и применяя оптимальный стохастический процесс, мы можем постепенно преобразовать его в изображение хорошего разрешения. Если параметр стохастичности ?=0ϵ=0, процесс является детерминированным, и мы получаем прямое преобразование. При ?=1ϵ=1, процесс включает стохастичность, что добавляет вариативность в генерируемые изображения, делая результаты более разнообразными, но похожими на исходное изображение.<br />
Интересно наблюдать, как изменение параметра ?ϵ влияет на &#171;температуру&#187; преобразования: при увеличении ?ϵ стохастичность увеличивается, и конечное изображение может сильно отличаться от исходного, сохраняя при этом общие характеристики.<br />
Эти теоретические разработки важны, поскольку они позволяют формулировать строгие задачи для построения инновационных моделей. Из этих постановок можно извлечь теоретические оценки, объясняющие, почему те или иные алгоритмы работают эффективно. В отличие от эмпирических подходов, таких как ГАНы, где теоретические оценки часто сложны или невозможны, мост Шрёдингера предоставляет возможность для строгой теоретической оценки и объединения нескольких подходов в единую конструкцию.<br />
В заключение, мост Шрёдингера не только решает практические задачи, но и обеспечивает глубокое теоретическое понимание связей между различными областями математики и компьютерных наук.</p><p>The post <a href="https://ntr.ai/webinar/nauchno-tehnicheskij-vebinar-glubokoe-obuchenie-dlya-modelirovaniya-i-rekonstrukczii-3d-form/">Научно-технический вебинар «Глубокое обучение для моделирования и реконструкции 3D форм»</a> first appeared on <a href="https://ntr.ai">Компания НТР</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Научно-технический вебинар “Решена ли проблема обнаружения речевых спуфинг атак?”</title>
		<link>https://ntr.ai/webinar/nauchno-tehnicheskij-vebinar-reshena-li-problema-obnaruzheniya-rechevyh-spufing-atak/</link>
		
		<dc:creator><![CDATA[Alexandra Koroleva]]></dc:creator>
		<pubDate>Wed, 25 Aug 2021 07:31:38 +0000</pubDate>
				<guid isPermaLink="false">https://ntr.ai/?post_type=ntr-web&#038;p=580</guid>

					<description><![CDATA[<p>Спикер о работе: Исследования в области голосовых биометрических систем развились настолько, [&#8230;]</p>
<p>The post <a href="https://ntr.ai/webinar/nauchno-tehnicheskij-vebinar-reshena-li-problema-obnaruzheniya-rechevyh-spufing-atak/">Научно-технический вебинар “Решена ли проблема обнаружения речевых спуфинг атак?”</a> first appeared on <a href="https://ntr.ai">Компания НТР</a>.</p>]]></description>
										<content:encoded><![CDATA[<p><span style="font-weight: 600;">Спикер о работе: </span>Исследования в области голосовых биометрических систем развились настолько, что они потихоньку начинают становиться частью практических индустриальных приложений и процессов. Но повсеместное использование этих систем тормозиться, из-за того что они могут быть легко обмануты с помощью спуфинг атак. В контексте этого вебинара, мы рассмотрим разные подходы и системы для обнаружения спуфинг атак, включая относительно простые модели на основе смеси гауссовских распределений, большие ансамбли разных систем обнаружения атак и модели на основе нейронных систем. Мы также сравним как хорошо разные системы справляются с обнаружением известных и неизвестных атак, а так же как хорошо они работают в контексте одного или нескольких независимых массивов данных.</p>
<p>+ материалы(с примечанием):</p>
<p>P. Korshunov and S. Marcel, &#171;Cross-database evaluation of audio-based spoofing detection systems&#187;, Interspeech 2016.</p>
<p><a href="https://infoscience.epfl.ch/record/219837?ln=en" target="_blank" rel="nofolow noopener">https://infoscience.epfl.ch/record/219837?ln=en</a></p>
<p>P. Korshunov et al. (16 co-authors), &#171;Overview of BTAS 2016 Speaker Anti-spoofing Competition&#187;, IEEE International Conference on Biometrics Theory, Applications and Systems (BTAS), 2016.</p>
<p><a href="http://publications.idiap.ch/index.php/publications/show/3348" target="_blank" rel="nofolow noopener">http://publications.idiap.ch/index.php/publications/show/3348</a></p>
<p>P. Korshunov and S. Marcel, &#171;Joint Operation of Voice Biometrics and Presentation Attack Detection&#187;, IEEE International Conference on Biometrics Theory, Applications and Systems (BTAS), 2016.</p>
<p><a href="https://infoscience.epfl.ch/record/223043?ln=en" target="_blank" rel="nofolow noopener">https://infoscience.epfl.ch/record/223043?ln=en</a></p>
<p>P. Korshunov and S. Marcel, &#171;Impact of score fusion on voice biometrics and presentation attack detection in cross-database evaluations&#187;, IEEE Journal of Selected Topics in Signal Processing, Volume: 11, Issue: 4, June 2017.</p>
<p><a href="https://infoscience.epfl.ch/record/231127?ln=en" target="_blank" rel="nofolow noopener">https://infoscience.epfl.ch/record/231127?ln=en</a></p>
<p>A. Goncalves, P. Korshunov, R. Violato, F. Simoes, S. Marcel, &#171;On the Generalization of Fused Systems in Voice Presentation Attack Detection&#187;, BIOSIG 2017.</p>
<p><a href="http://publications.idiap.ch/index.php/publications/show/3682" target="_blank" rel="nofolow noopener">http://publications.idiap.ch/index.php/publications/show/3682</a></p>
<p>H. Muckenhirn, P. Korshunov, M. Magimai.-Doss, S. Marcel, &#171;Long Term Spectral Statistics for Voice Presentation Attack Detection&#187;, IEEE/ACM Transactions on Audio, Speech, and Language Processing, Volume: 25, Issue: 11, Nov. 2017.</p>
<p><a href="http://publications.idiap.ch/index.php/publications/show/3541" target="_blank" rel="nofolow noopener">http://publications.idiap.ch/index.php/publications/show/3541</a></p>
<p>P. Korshunov, A. Goncalves, R. Violato, F. Simoes, S. Marcel, &#171;On the Use of Convolutional Neural Networks for Speech Presentation Attack Detection&#187;, ISBA 2018.</p>
<p><a href="http://publications.idiap.ch/index.php/publications/show/3779" target="_blank" rel="nofolow noopener">http://publications.idiap.ch/index.php/publications/show/3779</a></p>
<p>P. Korshunov and S. Marcel, &#171;A Cross-database Study of Voice Presentation Attack Detection&#187;, Chapter in Handbook of Biometric Anti-Spoofing: Presentation Attack Detection, 2nd Edition, 2018.</p>
<p><a href="http://publications.idiap.ch/index.php/publications/show/3987" target="_blank" rel="nofolow noopener">http://publications.idiap.ch/index.php/publications/show/3987</a></p>
<p>Примечание! Гиперссылки сайта <a href="http://publications.idiap.ch/" target="_blank" rel="nofolow noopener">http://publications.idiap.ch/</a> могут работать некорректно. Попробуйте скопировать адрес сайта и вставить её в поисковую строку, не используя гиперссылку.</p>
<p>‍</p>
<p><span style="font-weight: 600;">Презентация:</span> <a href="https://drive.google.com/file/d/1U7rdeJpQpYvuuL5Q5Xq_Bp1xrsoHfDog/view?usp=sharing" rel="nofollow">https://drive.google.com/file/d/1U7rdeJpQpYvuuL5Q5Xq_Bp1xrsoHfDog/view?usp=sharing</a></p>
<p><span style="font-weight: 600;">Запись:</span> <a href="https://youtu.be/Ga99jK8pRPA" target="_blank" rel="nofolow noopener">https://youtu.be/Ga99jK8pRPA</a></p>
<p>‍</p>
<p>‍</p>
<p><span style="font-weight: 600;">(00:00:00) (Начало записи)</span></p>
<p><span style="font-weight: 600;">Модератор:</span> Сегодня я представляю Павла Коршунова из Idiap, это Швейцария, с рассказом про voice anti-spoofing. Как это сказать по-русски?</p>
<p><span style="font-weight: 600;">Павел Коршунов:</span> Очень сложно.</p>
<p><span style="font-weight: 600;">Модератор:</span> Я не знаю, Павел, кажется, тоже не знает. Но, тем не менее, я надеюсь, мы поймем, о чём речь, тем более интуитивно по-английски это примерно понятно.</p>
<p><span style="font-weight: 600;">Павел Коршунов:</span> Я погуглил. Речевые спуфинг атак.</p>
<p><span style="font-weight: 600;">Модератор:</span> Слово spoofing не удается внятно перевести на русский. Будем использовать его. Нам предлагают перевод «взлом голосовой идентификации». Перевод по смыслу правильный.</p>
<p><span style="font-weight: 600;">Павел Коршунов:</span> Да, наверно. Spoofing – это не совсем взлом. Это обман, подделка.</p>
<p><span style="font-weight: 600;">Модератор:</span> Я виртуально передаю микрофон Павлу.</p>
<p><span style="font-weight: 600;">Павел Коршунов:</span> Добрый день. Я заранее извиняюсь, у меня будут проблемы с русским языком. Не то, что не умею говорить по-русски, но я вообще не знаю терминологии русского языка. Хорошо хоть подсказали «подделка голоса». Но это малая часть того, что мне надо будет рассказывать. Я заранее извиняюсь за англицизмы, их будет очень много.</p>
<p><span style="font-weight: 600;">Модератор</span> Павел, не пугайтесь, если, что просто переходите на английский. Почти все вас поймут.</p>
<p><span style="font-weight: 600;">Павел Коршунов:</span> Надеюсь. У вас интересная программа семинаров. Еще одно отступление. Я последние несколько лет занимался несколькими вещами. Заинтересовались voice anti-spoofing (подделка голоса). Но я эту тему закончил несколько лет назад. У меня больше нет новых публикаций. Я сейчас занимаюсь вещами – дипфейками, defection of deepfake (определение дефектов) и верификация возраста по видео и аудио (multimode verification or age verification) для того, чтобы не разрешать детям смотреть плохую рекламу, порносайты или даже банальные игры, которые возрастные. Сейчас это становится модной темой, как дипфейки.</p>
<p>Voice anti-spoofing как-то сошло на нет, у нас закончился проект. Я расскажу в основном, что я делал. Тут был анонс. В анонсе я дал все статьи, которые публиковали на эту тему. Последняя статья датируется 2018 годом, глава книжки и статья.</p>
<p>Я немножко слежу за этой темой, потому что я ревьбер публикаций и поддерживаю связь с людьми, которые организуют ASVspoof в Challenge, который сейчас занимается этими делами. Я в конце скажу про то, что сейчас происходит, я более-менее в курсе, хоть сам в этом не участвую.</p>
<p>Это презентация онлайн. Если интересно, статьи можно читать. В каждом слайде, где у меня результаты, я говорю, какая статья использована, чтобы показывать результаты.</p>
<p>Я еще кратенько скажу, что меня зовут Павел Коршунов. Где и что я делаю, и как я сюда попал?</p>
<p>(00:05:01)</p>
<p>Я закончил СПбГУ (Петербургский государственный университет) в Петербурге, факультет матмех. Там у нас кафедра информатики и кафедра системного программирования. У нас был поток computer science. Я по-русски здесь ничего не написал, потому что у меня не стояли шрифты, по-русски ничего не отображалось.</p>
<p>Потом меня позвали, так нечаянно получилось, и отправили в Сингапур на стажировку в National University of Singapore. Это их главный университет. Я там постажировался. Потом они меня пригласили в аспирантуру. Я еще съездил на стажировку в одну лабораторию в Пало-Альто, в PhD отдел. Долго мучился, в итоге домучился. После того, как я домучился, наконец-то закончил (раздолбаям всегда было сложно заканчивать такие вещи), я в итоге смог найти работу postdoc в EPFL. EPFL – это университет в Лозанне (Швейцария), он второй федеральный университет после Цюриховского. Там я проработал postdoc четыре года.</p>
<p>Так как я не хотел никуда уезжать, и меня не пленили ни деньги, ни профессорская стезя, я перешел работать недалеко в соседний кантон в институт исследовательский институт. Это как наши исследовательские институты в России. Студенты из университета EPFL, а работаем здесь. Я research associate, ученый, научный сотрудник, наверно, младший, хоть я уже и не младший.</p>
<p>У меня всю жизнь так получается, что я всё время меняю разные темы в multimedia. Я стал больше заниматься speaker anti-spoofing, больше machine learning, определением манипуляций видео за счет синхронизации аудио и видео, что если происходит десинхронизация, то видео было манипулировано, которое перетекло в дипфейки. Сейчас параллельный проект, чтобы делать multi-model age verification. Так быстренько про себя.</p>
<p>Теперь тема определения атак на систему верификации. Система верификации по пальцу (fingerprint), лицом (face recognition), глаза, вены – все эти системы верификации. Когда ты говоришь человеку, что «Я – это я, я Павел», и система говори: «Да, ты Павел», потому что я был заранее внесен в систему, мои данные донесены, я разместился в системе, и меня сверяют. Верификация – это сверка вводных данных, которые использует эта система, с теми данными, которые были зарегистрированы на предмет совпадения или не совпадения, я Павел я не Павел.</p>
<p>Эти системы, верификации которые стали очень популярны, они были давно популярны, но последнее время они стали супер популярны – даже в московском метро можно торговать лицом. Они все vulnerable, они все легко подвержены разным атакам. Самые известные атаки – это spoofing attacks.</p>
<p>Spoofing attacks – подделка, когда кто-то пытается притвориться быть кем-то другим. Я пытаюсь притвориться дядей Петей. Я каким-то образом пытаюсь изобразить из себя дядю Петю либо камерой, либо сенсором для пальцев. Тут показано, я взял силикон или клей, нашел его печаток пальца, смог снять отпечаток пальца наклеить на силикон, смог надеть на свой палец и притвориться дядей Петей.</p>
<p>(00:10:03)</p>
<p>Либо я скачал в Facebook фотографию дяди Пети, показываю в экран и говорю: «Я дядя Петя». Есть разные способы, я про них буду говорить. Сегодня мы будем рассказывать про голос. Есть системы верификации. В данном случае это автоматическая система верификации по голосу enrollment speech – это регистрационные данные, когда мы регистрируем человека в системе, test speech – во время тестирования, когда установлена система, система проверяет, тот человек, который говорит, что это он или нет.</p>
<p>Есть несколько точек, где можно атаковать эту систему. Можно атаковать в микрофоне, можно атаковать после микрофона, можно взламывать, как кто-то предлагал. Взламывать – это когда ты имеешь доступ к hardware – к железу и софту этой системы, и можешь менять регистрационные данные, можешь менять тренировочную модель, poison data, всё, что угодно. Это всё не касается нас в этой ситуации. Может быть много точек. Мы касаемся первых двух А1 и А2, когда до микрофона и сразу после микрофона.</p>
<p>Это два классических сценария, когда системе надо говорить что-то в микрофон, телефония. Человек звонит в банк, и его по голосу определяют, он этот человек или нет. Это достаточно популярная система верификации в банке. Банковские системы обычно боятся, что их могут обмануть.</p>
<p>Вторая система – это типа Skype или Zoom, когда кто-то через устройство напрямую, не через микрофон, а уже проигрывая что-то на компьютере, напрямую в Zoom, немножко взломал систему. Не совсем взломал, просто напрямую дает сигнал без проигрывания через микрофон, идет напрямую. Как мне пишут, подменили на лету.</p>
<p>А1 называется physical access, так называемые presentation attacks. Есть терминология, я говорю anti-spoofing, но так неправильно говорить. Anti-spoofing – это вульгарно. На самом деле называется presentation attacks, потому что это стандартизация. Сейчас эта область стандартизируется, стандарты пишутся сухим языком, в основном немцами, и там всё очень жестоко. На всех этих аббревиатурах можно сломать мозг. Я не могу помнить, что к чему, аббревиатуры называются из четырех-пяти букв, но я буду стараться, иногда буду срываться, говорить простыми вещами. Presentation attacks – это всякие атаки. Но в основном ты презентуешь это к устройству.</p>
<p>А1 – это когда ты презентуешь к устройству, либо к видеокамере, либо в данном случае к микрофону. Второе – logical access attacks, виртуальный микрофон. Интересная ситуация с голосом, что logical access attacks легче сделать для баз данных, потому что не надо перезаписывать аудио через микрофонные устройства, и они из-за этого более популярны. Баз данных с этими атаками больше, чем с теми, которые называются physical access или replay attacks, которые перепроигрывают настоящую речь через микрофон. Ты записываешь речь с микрофона через колонки к микрофону. Там есть перезапись, поэтому добавляются искажения и шумы. Голос звучит по-другому.</p>
<p>У меня есть примеры. Я тут показываю, какие есть типы. Replay – когда мы записали и проигрываем опять в системе. Есть синтезация с речью через текст, text-to-speech алгоритмы. Здесь нужно понять важную ситуацию.</p>
<p>(00:14:59)</p>
<p>Есть очень много способов генерировать голос из текста. WaveNet, Google Assistant, Siri, они генерируют голос из текста. Но одно дело – просто какой-то голос, a speech, а другое дело – генерировать голос, принадлежащий конкретному человеку, это гораздо сложнее. Внести в этот голос индивидуальность не так просто. Эти системы плохие. Когда человек слышит этот голос, то очень легко отличить человеческим ухом. Но машина в этой ситуации глупее. Даже нам слышится механически, а алгоритм не определяет разницу между настоящим и механическим, потому что там идет очень много фильтрации. Та презентация от этого голоса, которая в итоге попадает в модель, очень похожа на ту репрезентацию, которая используется для генерации голосов text-to-speech или voice conversion.</p>
<p>Voice conversion – это когда берется голос одного человека и конвертируется в другой. Сейчас это модное слово аудио дипфейк – конвертации одного голоса в другой. Это пошло от видео дипфейков, которые будоражат умы, а теперь у нас в этой области люди стали говорить аудио дипфейк, чтобы тоже будоражить умы. Все хотят будоражить умы, особенно людей с деньгами, например, политиков, что хорошо, я не против этого.</p>
<p>Последняя категория – impersonation, когда кто-то мимикрировать с помощью своего голоса, как Галкин у нас, известный имперсонатор, который всех может мимикрировать голосом. Но они не умеют это делать для машин. Интонация, каданс, они ориентированы только на человеческое, а для машин не представляют никакой опасности, очень легко отличить.</p>
<p>У меня есть несколько примеров. Это голос оригинал. Это, когда перезаписали через лаптоп. Может быть, слышно, что там появляются дополнительные шумы. Через iPhone. Там идет фильтрация, много высоких frequencies (частоты), отрезают звук сверху и снизу. Это всякие синтезированные. Плохая синтезация, но сразу понятно. Сейчас стало лучше. Можете погуглить примеры всяких RNM сетей. Они стали лучше, не такой металлический голос, но всё равно слышно. Это голос одного человека и другого человека, конвертация.</p>
<p>В чём состоит проблема атаки на систему? в нормальной ситуации без атак у нас есть два типа тестовых примеров. Это человек, который говорит: «Я Павел», и он Павел, и человек, который не то, чтобы он говорит, что он не Павел, просто другой человек, чтобы отличить того человека от Павла. Система должна сказать, что если это не Павел, но мы проверяем с регистрационными данными с Павлом, то совпадений не должно быть. А если мы при тестовом сценарии проверяем Павла с регистрационными данными Павла, то совпадение должно быть.</p>
<p>В простом понимании, когда тестовый пример совпадает с тем, что зарегистрировали, число должно быть высоким, output системы должен быть высоким. А когда они совпадают, должен быть низким. У нас получается две гистограммы – синяя и красная. Синяя – это настоящий текст, где регистрационные данные совпадают с тестовыми данными, а красная, когда не совпадают.</p>
<p>(00:20:04)</p>
<p>Тут нет никакой специальной атаки, нет злого умысла. Когда появляется злой умысел, кто-то пытается притвориться, проигрывая примеры в системе, которые я показывал, появляется серая гистограмма. Если система не знает, что существует spoofing attack, то она воспринимает фейковые примеры как настоящие, поэтому система оценивает эти примеры так же, как настоящие. По-английски это называется zero-effort impostors – которые genuine, но регистрационные данные не совпадают с тес тестовым примером, а голубенький – genuine accesses, когда совпадает.</p>
<p>Система верификации отделяет мух от котлет, отделяет одни от других. Они должны отделяться как можно дальше. Чем дальше они отделяются, тем лучше работает система. Но spoofing attack часто совпадает с genuine accesses, с настоящими людьми. В этом проблема.</p>
<p>Делают другую систему, чтобы отделять плохие атаки от настоящих genuine samples, от настоящих примеров нормального доступа к системе. Стандартно есть база данных, у нас есть атаки, бинарная классификация. Мы говорим – это наши атаки, это наши настоящие примеры. Мы делаем какие-то features, манипулируем с аудио, делаем какие-то хитрые векторы, которые классифицируема, отделяем одно от другого. Мы создаем пространство, в которых genuine (реальные) аудио отличаются от фейковых аудио.</p>
<p>Потом мы тестируем систему на другом массиве данных и говорим, правильно ли делаем правильно, отличаем фейковых от не фейковых. Система называется Presentation attack detection или система анти-спуфинга, которая отделяет мух от котлет. В данном случае мухи являются фейковыми примерами, а котлеты – это как раз то, что нам нужно.</p>
<p>У нас появляются две системы – система верификации и система отличия фейков от не фейков. Мы их комбинируем в одну систему, много разных вариантов, но так, что в итоге график, который был изначально слева, становится графиком, как справа, где у нас после комбинации, что можем отличать фейк от не фейка и отличать людей, которые зарегистрировались в системе, определять, кто тот или иной человек, его личность. Мы в данной ситуации объединяем эти две системы – верификацию Presentation attack detection в одну, где в итоге все genuine users получаются справа, а атаки и zero-effort impostors – слева. Мы так хотим сделать, это наша цель.</p>
<p>Баз данных. Они сейчас предпринимают большие усилия, чтобы продолжать, это называется ASVspoof и Challenge, который проходит каждые два года. Они представляют данные, чтобы люди пытались сделать системы, которые победили в конкурсе, кто круче отделяет мух от котлет. Их было пока четыре. Сейчас в 2021 году они организуют воркшоп, они заканчивают Challenge 2021 года, по-моему, уже закончили. Сначала у них были только text-to-speech и voice conversion, достаточно простые способы. Примеры, которые я вам играл, они примерно такие.</p>
<p>Было два года, а потом в 2019 году они скооперировались со всякими Google и другими большими компаниями, которые нагенерировали много современных RNM на основе deep learning всяких аудио, в том числе, WaveNet.</p>
<p>(00:25:04)</p>
<p>Эти люди дали большой массив данных, и они в 2019 году стали резко очень популярны, потому что большой маркетинг и много новых данных, молодцы. В 2021 году, к сожалению, они не добавили никаких новых данных. Они разбили на три разных категории, назвав одну из них audio deepfakes.</p>
<p>Всё эти все данные англоязычные. Я еще скажу про португальские, но это не публично, что мы с ними работали. Но язык не должен влиять. По сути, если взять очень по-простому, задача определения фейк/ не фейк – это определение шумов, которые отличаются от реальных шумов, которые мы хотим, чтобы были.</p>
<p>У нас отличие replay attack от обычной записи, что у нас добавляется еще одна пара микрофон-проигрыватель. До этого был только микрофон. Мы говорим в микрофон, и система получает что-то через один микрофон, то, что мы сказали в микрофон, в том числе, и шумы, которые всегда существует вокруг нас.</p>
<p>Когда мы проиграли второй раз, сделали атаку, где-то взяли аудио, которое человек записал в микрофон, а потом еще раз проиграли через проигрыватель в другой микрофон, чтобы зарегистрироваться как тот человек. Это значит, мы добавили шумов, пара микрофон-проигрыватель. Мы должны отличить эти шумы, в этом задача системы, всё остальное принадлежит человеку. И речь, и голос и язык в этой ситуации не важен.</p>
<p>Второй – так называемый logical access, когда мы делаем виртуально микрофон. Там мы не можем проиграть реальный. Мы можем проиграть реальный, но тогда там ничего не сделаешь. Если ты возьмешь просто украдешь и добавишь реальный звук человека, то ничего не появится.</p>
<p>В 2021 году они пишут – они должны поменять тесты. Training data осталась та же. Суть logical access, что ты можешь синтезировать, делать voice conversion и пытаться симулировать. Другие шумы, которые оставляют алгоритмы, добавляют какие-то искажения в голос, и ты должен отличить это искажение. Суть определения фейковых сигналов сильно отличается от системы верификации, тем, что системе верификации требуется быть инвариантной к шумам, чтобы видеть только голос человека, суть того, что определяет человека как этого конкретного человека. Система должна отрезать и выбрасывать шумы. Поэтому, когда мы вносим в эту систему фейковый голос с другими шумами, она игнорирует эти шумы, потому что она заточена игнорировать эти шуму и поэтому она так легко обманывается.</p>
<p>Так же и с лицом. Систему тренируют на лицах с искажением компрессии, abstraction, они хотят определить лицо в плохих условиях. Атака на эту систему – это одни из этих плохих условий, поэтому она инвариантна к этим условиям, она не может их видеть. Поэтому нужна другая система, которая видит конкретно такие плохие условия, которые специфичны для этих атак, а не другие, как, например, компрессия или в данном случае обычные шумы, которые относятся к первой записи, которая genuine – настоящая запись.</p>
<p>Две системы перпендикулярны, поэтому сложно совместить. Надо тренировать каждую отдельно. Это популярный челлендж. Если вы хотите поучаствовать, это хороший вещь. Но есть проблемы, я вам про них скажу.</p>
<p>Я поучаствовал в двух базах данных. У меня сделанf AVspoof в 2015 году, такая же система, как ASVspoof. Потом мы ее немножко расширили, проигрывая разные replay – мы фокусируемся в данной ситуации на replay attack, когда микрофон и устройство проигрывали много разных записей через разные устройства. Мы публиковали, делали Challenge в 2016 году. Но мы не стали продолжать, как те чуваки с ASVspoof.</p>
<p>(00:0:20)</p>
<p>Да, тут confusion – есть AVspoof, а есть ASVspoof. Мы их знаем, они нас знают, но, к сожалению, не смогли скооперироваться в одном месте, чтобы все вместе, их и так много в этой команде, которая занимается ASVspoof.</p>
<p>Пример presentation attacks. Берутся настоящие записи для базы данных, для верификации, потом проигрываются разными парами устройств. Тогда не было десятых айфонов, использовали последний iPhone 6s. Проигрывали в разных местах, например, в офисе, в большой комнате, в маленькой комнате, чтобы были разные шумы.</p>
<p>Есть еще база данных. Это бразильская база данных, которая на португальском, там много народа они записали, но, к сожалению, она не публична, ее нельзя скачать. У меня был к ней доступ, потому что мы писали с чуваками статью. Они это делают на продажу, данные не открыты. Они комбинировали много разных устройств, чтобы записывать. Только replay attack, больше ничего не было. Вот пример того, как это делается. Ставятся какие-то устройства и проигрывается много часов подряд, потом нарезается _____ (00:31:40).</p>
<p>Приведем anti-spoofing методы. Я не буду много рассказывать. Так называемые классические – на основе спектрограммы, MFCC features, разные спектральные features, которые делаются через аудио. Это классические в том смысле, что они понятны. Многие features были сделаны, чтобы хорошо описывать голос человека, убирать из аудио всякое ненужное. Они делаются с 50-х годов, free transform и всё такое.</p>
<p>Классические классификаторы в этой ситуации – это GMM, модели Гаусса, в этой ситуации использовалось 512 mixture models. Это стандартная тема, что делали пять лет назад. На удивление, она неплохо работает даже сейчас. Из их последних челленджей 2019 года, я удивился, что эта система до сих пор неплохо работает.</p>
<p>Тут примеры показывают, что мы взяли разные features. Это такой же классификатор. CQCC (последняя строчка) – это было специально предложено для определения атак. Такие features, которые соотносятся, должны быть меньше по сравнению с другими. IMFCC (пятая строчка) – это как MFCC, только наоборот. Если MFCC убирает высокие частоты, потому что они не нужны для определения голоса, они дают меньше веса, то IMFCC наоборот, больше веса дают высоким частотам и меньше веса низким частотам, потому что мы хотим моделировать шумы, а шумы обычно высокочастотные или сильно низкочастотные. Мы их пытаемся моделировать, поэтому была логика, что IMFCC должны лучше работать в ситуации, когда у вас есть атаки.</p>
<p>CQCC – у них тоже своя специальная система, там какие-то сложности. Почитайте про них статью. Они популярны. Из этих результатов нет особо никакой разницы. В чём суть этих результатов? Мы тренируем на базе данных (training set) и делаем evolution, тестируем на test set. В этой ситуации мы это делаем. Есть еще development set, где мы выбираем threshold – порок в оценках, которые дает система.</p>
<p>(00:35:00)</p>
<p>Она всегда что-то дает. Она не может не давать оценку. Если ты даешь тестовый пример, то она тебе дает от какого-то до какого-то, максимум и минимум. Она калибрована от нуля до единицы. Если не калибрована, может быть всё, что угодно. Но есть маленькое значение, есть большое значение.</p>
<p>Мы тренируем систему на training set, а на development set или на validation set мы находим так называемый гипер параметр, один из них – это threshold, порог. Бинарная ситуация, если выше этого значения, значит, настоящий пример аудио, а если ниже этого значения, значит, это фейковое аудио. Этот threshold обычно вычисляется на development set. Потом он применяется blind (в слепую) на тестовом. В данной ситуации мы не делали такого, мы делали, когда threshold определяется на том же set, на котором и тестируется, что плохо и неправильно делать. Обычно надо тестировать в слепую.</p>
<p>Если мы тестируем на той же самой базе данных, у них еще есть так называемый атаки, которые known и unknown. Их очень часто используют в челленджах. Есть примеры разных атак. Используются разные алгоритмы, чтобы генерировать эти атаки, разные пары устройств, чтобы их проигрывать друг другу.</p>
<p>Известные атаки – это значит, что они были в training set, в том, на котором мы тренировали. Во всех наборах всё одинаковое. В этой таблице всё одинаковое, кроме features. И данные, и классификатор, все параметры одинаковые. Мы же сравниваем, что меняется, больше ничего не сравниваем.</p>
<p>Unknown значит, что в тестируемом сете есть атаки, на которых система не тренировалась, она их не видела во время тренировки. EER – это equal error rate, чем меньше, тем лучше. Если оно большое, значит, плохо.</p>
<p>ASVspoof 2015 года не было replay attack, а в AVspoof были, поэтому у нас есть logical access и physical access. Показывается, что тут physical access сложно определить по сравнению с logical access. Также unknown сложнее определить, чем known, те, которые система видела во время тренировки.</p>
<p>Но если мы сделаем cross-database ситуацию, какой практический сценарий? Компания создает систему, тренирует на какой-то базе данных, какой – неважно, говорит, что у нас такой перфоманс, очень хорошая система, у нас ноль error rate, мы всё очень хорошо отличаем. Потом идет в другое место, продает систему в совершенно другой ситуации, где могут быть другие атаки, другое окружение, шумы, всё другое, и там система начинает работать. И она может не работать, мы же не знаем, как она работает.</p>
<p>Чтобы смоделировать практический сценарий, мы тренируем на одной базе данных, находим там threshold (порог) на основе этих оценок и говорим – теперь мы тестируем на другой базе данных, полностью другой, другие атаки. Мы ее тестируем в слепую, как положено. Тогда оказывается, что у нас все значения очень сильно вырастают, часто даже непонятно, почти random. Нет generalization. Система overfit. Даже системы на основе классических достаточно быстро overfit. И в этом проблема.</p>
<p>Тут показаны графики. Когда мы тренируем и тестируем на той же базе данных, этот график, чем ближе к нижнему левому углу, тем лучше. У нас есть HTER 1,87. А когда мы начинаем на другой базе данных, особенно на physical access, когда совсем другие атаки, у нас HTER становится 9,8, увеличивается, зеленая полоса становится далеко от угла.</p>
<p>Тут еще очень хорошо видно overfit, HTER у голубенькой вообще ноль, а потом становится очень высокой. Проблема, что generalize poorly across database, очень плохой generalization, replay attack challenging.</p>
<p>(00:40:15)</p>
<p>Как комбинируются системы? Система верификации и система определения атак комбинируется параллельно через score fusion, это простая вещь. Можно еще тренировать их вместе. Простой способ – это на score, когда уже есть все числа, и делается еще один маленький классификатор и score fusion, чтобы улучшить общую систему, чтобы она могла определять geniun от zero importers и просто атак. Есть параллельно, а есть последовательно. Сначала отфильтруем одной системой, а потом другой. Тут неважно, первый идет PAD или ASV, результат один и тот же.</p>
<p>Мы попробовали делать это. Тут разные системы. В статье написано гораздо больше. Но суть в том, что если мы не делаем никакой fusion, берем эту систему ASV verification на основе ISV и i-vectors (это достаточно известная, она до сих пор хорошо работает), то проблема, когда у нас есть атаки, то она у нас 94% атак или 92% считает настоящими. Это очень плохо. Нам нужно, чтобы она считала меньше.</p>
<p>Если мы комбинируем систему, которая на основе MFCC и GMM вместе с системой, которая определяет атаки, можно комбинировать в разные способы классификации: Mean (среднее число), Cascade (отфильтровать одно, те тестовые примеры, которые прошли фильтрацию, попадают в следующую систему). Разные способы фильтрации, комбинация двух систем.</p>
<p>Что происходит? Если смотреться первую строчку, у нас обычно ухудшается показатель, она становится хуже как система верификации, зато она становится лучше с точки зрения фильтрации неугодных атак. Это зависит от системы, от того, как комбинировали эти две системы. В этой ситуации есть сложности. Комбинация система, верификация и анти-спуфинг – тоже нетривиальная задача.</p>
<p>Пример, что у нас есть три разные. Черные – это плохие, их надо фильтровать. Есть Mean система. Эти голубенькие должны отличаться от всех остальных. Мы хотим, чтобы они были отдельно. Чем больше они отличаются от всех остальных, тем лучше. Этот график вы уже видели.</p>
<p>Понятно, что если комбинировать мы улучшаем систему верификации с точки зрения противостояние атакам, но ухудшаем ее перформанс с точки зрения обычной системы верификации.</p>
<p>Mega-fusion. Здесь можно сделать много разных систем – fusion, PAD, которые фильтруют атаки и делать их комбинацию, большую систему. Этим в основном занимаются в Challenge.</p>
<p>Мы взяли много-много разных фичей, скомбинировали их. Мы в 2017 году участвовали в Challenge и заняли третье место. Первое место было из России. Но, как мы потом обнаружили, это было читерство (не их вина). Русская команда заняла первое место, я не помню, откуда.</p>
<p>Суть в том, что была бракованная база данных ASVspoof. Чуваки, которые это всё организуют, все заняты, и у них очень мало времени сделать нормальную базу, хотя они стали очень популярны. В итоге они исправили, теперь она версия два, потому что там можно было просто взять первые 20 миллисекунд аудио и в genuine sample был такой beep. Когда они записывали, они каждый раз при записи в начале вставляли эти пикалки. А потом они сделали _____ (00:44:27) noise, чтобы его убрать, чтобы не было beep, но не убрали до конца и в итоге он был.</p>
<p>Если взять 20 миллисекунд, то они очень сильно отличались у genuine от атак, и там было очень просто определить. Русским повезло. Они там навертели, но они только на каких-то очень маленьких кусочках смогли, либо они это поняли, либо нечаянно, исправили систему. Но мы не знаем, кто в итоге занял места. Суть в том, что mega-fusion помогают выиграть Challenge.</p>
<p>(00:44:59)</p>
<p>Не знаю, насколько это полезно с точки зрения практики. Но если взять на одной базе данных и тренировать, в тестировать на другой, всё равно плохие результаты. Нет меньше 10% error rate. Мы хотим error rate хотя бы меньше 10%.</p>
<p>Как насчёт neural networks? Проблема neural networks, что они быстрее делают overfit. Им надо гораздо больше данных, чтобы хорошо тренироваться. Может быть трансформеры, которые вам будут скоро рассказывать, помогут решить эту серьезную проблему.</p>
<p>Проблема всех этих атак, много баз данных Google, Facebook, большие компании, которые собирают эти базы данных, которые разводят людей на личные данные и собирают данные со всего мира. Они забирают данные, чтобы определять людей, тренируют системы и базы построены таким образом, чтобы быть рядом к шумам. А тут атаки. Таких баз мало, где есть атаки, где добавляют туда маленькие странные шумы, чтобы их отличать. Большинство систем, которые популярны, моделей архитектур, построены для того, не отфильтровывать шумы, а нам надо в этой области наоборот, и не все модели подходят. Они часто overfit, _____ (00:46:45) плохо работает в этой ситуации, когда мы меняем данные, чтобы, наоборот, сделать больше variability. Но мы не можем сделать в этой ситуации, когда у нас атаки, когда надо отличать маленькие шумы.</p>
<p>Это такая проблема, что мы еще двигаемся не в том направлении, как общество. Наука двигается, чтобы хорошо определять людей, а не чтобы отфильтровывать шумы, поэтому это нишевая вещь, становится сложнее.</p>
<p>Мы сделали небольшой тест. Мы взяли маленькую CNN и побольше, простое, и сравнили, улучшится или нет, если мы увеличим глубину. Улучшается. Если сравнивать с классической и CNN, там сложно. Насколько глубокая должна быть CNN по сравнению с этими данными, и сколько данных у вас есть , чтобы найти хороший баланс. У нас не так много данных, как в этих челленджах. У них немного данных. Глубокие системы почти не работают, в этом проблема.</p>
<p>В нашей ситуации у нас были большие базы данных, особенно CPqD, которая private, она очень огромная. Там 200 тыс. аудио примеров по 20 секунд, длинные аудио примеры и очень много данных. CNN достаточно хорошо тренировалась на ней.</p>
<p>Но voicePA тоже достаточно большая, там 80 тыс. примеров, но там 5 сек., 10 сек. Максимум. Суть в том, что deep может быть немножко лучше, но тоже зависит. Это показываю челленджи ASVspoof. Я быстро проскочил по верхам, можете посмотреть статьи. Суть понятна. Я говорил основные тезисы.</p>
<p>Что произошло? Я отношусь к этому скептично, потому что я почитал, что навертели в этих челленджах. Очень интересно, что поучаствовал WaveNet, Google, взяли RNN, современные системы для генерации голоса. Но, как показал Challenge, системы анти-спуфинга легко их определяют.</p>
<p>Самая большая проблема replay attack, потому баз для replay attack мало, где проигрывается настоящая речь через разные спикеры, эти шумы гораздо сложнее отличить этим системам, а синтетические вещи легко отличить, так же, как в видео, GAN-based images легко отличить. Они там генерируют такие частоты GAN, что их легко видно, легко на них тренируются. Speech deepfakes – это WaveNet, я так понимаю. Я взял их overview прошлого года, там, где рассказывают про Challenge и топ-истемы.</p>
<p>(00:50:03)</p>
<p>Если взять эти строчки B (baseline) и посмотреть на hidden track, это значит те тестовые примеры, которые не были видны людям, которые участвуют в Challenge, какие-то новые атаки. Они были replay attack, потому что их было мало, но они были. Если посмотреть на equal error rate, посмотрите, топ-системы 20% ошибки и больше – это очень много на бинарной системе. Некоторые 40, считайте, random, ничего не работают. Они делают overfit. Очень маленький equal error rate, который был виден, и очень большой на том, который был не виден.</p>
<p>Baseline 01 – это MFCC, GMM, который я вам показывал, который уже пять лет известен, она была на 12% лучше, чем все остальные. Никто не мог переплюнуть baseline, что ужасно. О чём это говорит? О том, что ничего не работает. Это страшно.</p>
<p>Но с другой стороны, как я сказал в конце в этом пункте, мы никогда не останемся без работы, потому что проблема не решена, проблема сложная. Я не знаю, как она решится. Generalization – это сложная проблема. Мое личное мнение, мы считаем, что мы решили задачу системы лиц человека, идентификации по лицам, но мы решили эту проблему тем, что мы тренировали наши большие огромные модели на всём мире. Google с Facebook собрали миллиарды людей, и если overfit на весь мир, то ты решил проблему. Зато ты не можешь определять пришельцев с других планет, потому что тебя нет на них данных, unknown attacks. Распознавание пришельцев у них не получится.</p>
<p>С этой системой атак то же самое, потому что атаки и постоянно модифицируются, постоянно становятся новыми, и они могут быть не похожи одна на другую. Так же, как с дипфейками, всё время новые вещи, постоянно будет гогка. Мы никогда не сможем ее решить. Это мое такое пессимистическое.</p>
<p><span style="font-weight: 600;">Модератор:</span> Павел, спасибо большое за рассказ. У нас есть некоторое количество не отвеченных вопросов в чате и в QnA, давайте я их зачитаю. Иван Захаров спрашивал нас: «Эти датасеты англоязычные?».</p>
<p><span style="font-weight: 600;">Павел Коршунов:</span> Да, я сказал, они англоязычные, кроме CPqD, которые мы использовали. Но они, к сожалению, недоступны снаружи всем.</p>
<p><span style="font-weight: 600;">Модератор:</span> Алексей Свищов, видимо, находясь глубоко в этой же теме, комментирует, что в 2021 году они не меняли тренча, всевозможные канальные искажения, эффект сжатия данных, кодирование сигналов. Делать тестовые данные более адекватными относительно реальных сценариев использования.</p>
<p><span style="font-weight: 600;">Павел Коршунов:</span> Да, я знаю. Но проблема, что они делают симуляцию, дают людям так называемые physical access, чтобы тренировать модели, а тестирует на реальных. Эта табличка говорит о том, что если ты даешь hidden track, совсем другие атаки, то они у них не получатся ни у кого, все модели overfit, ломаются. Я так понимаю, в этом в этом году людям будет еще хуже.</p>
<p><span style="font-weight: 600;">Модератор:</span> Meen…</p>
<p><span style="font-weight: 600;">Павел Коршунов:</span> Я ответил, во всех моделях одинаковые.</p>
<p><span style="font-weight: 600;">Модератор:</span> Дмитрий Башкирцев спрашивает, не рассматривались ли механизмы Fingerprint.</p>
<p><span style="font-weight: 600;">Павел Коршунов:</span> Fingerprint – это очень известная тема. Это решало бы всю проблему. Так же, как с аудио, видео и аудио одинаково. Но проблема сложная технически, тебе надо делать fingerprint на каждом устройстве, которое должно где-то проходить сертификацию. Любое устройство записи – камера или микрофон должен на железе, на чипе, который записывает, делать fingerprint, что эта запись с этим микрофоном, вот паспортные данные. Когда делается фейк, этот Fingerprint искажается, его можно заметить. Так делают в Youtube. У них есть база настоящего контента певцов, они дают реальные sound track, альбомы, которые они выпускают в публичное поле.</p>
<p>(00:55:09)</p>
<p>Когда люди копируют mp3, перекомпрессуют, они находят этот контент в YouTube видео и блокируют YouTube видео, потому что там у них нелегальный контент, за который они не платили, copywriter контент. Как они делают? Они делают Fingerprint. Но YouTube это делает, потому что у них договор с правообладателями. А если нет договора с правообладателем, если это не правообладатель, а обычный человек, то нет Fingerprint. Поэтому проблема сделать на каждом устройстве.</p>
<p>Американцы, в этом проекте участвовал Пентагон, они рассказывали, что они ездили в Афганистан, им надо делать фотки местности. Они используют устройство, которое делает Fingerprint, hardware, и там есть все записи. Если человек захватил их в Талибан и забрал это устройство, им надо знать, откуда эти фотки потом появляются. Они будут знать, что с этого устройства этот человек захватил. Они могут узнать все фейки, если кто-то что-то потом модифицирует. Это может быть только под конкретную задачу.</p>
<p>Артем Чирковский. Replay атаки в логичном канале не распознаваемо вообще или могут быть какие-то признаки? Replay атаки в логичном канале, когда нет микрофона, нет проигрывателя. Там только компрессия. Она и так существует, ничем не будут отличаться, поэтому их даже никто не рассматривает.</p>
<p>В Пентагоне была шифровка и метаданных, watermarking. Если модифицировали изображение, они хотели знать, что оно модифицировано. Там оба. Им давали специальные телефоны со специальным приложением, которое делало это на телефоне, потому что нет интернета. Криптокомпания. Но это делала контора.</p>
<p>_____ (00:57:17) в реальном бою с большой ошибкой. Современные разработки _____ (00:57:20). Да, с большой. В Tesla я бы руль крутил на всякий случай или во всех этих вещах, эти bias. Сейчас очень модная тема – bias, когда модели тренируются на определенных базах данных, и они к чему-то bias.</p>
<p>Была смешная статья из Китая, долго у нас лежала, где люди тренировали на базе данных преступников и не преступников. Они с точностью почти 100% определяли преступников по фотографии. В conclusion написано «Преступники меньше улыбаются, поэтому наша модель хорошо определяет преступников от не преступников. Она поняла, что преступники меньше улыбаются».</p>
<p>Конечно, у них база данных преступников – это полицейские сфоткали их в полиции на опознании, они там не улыбаются. А база данных обычных людей с Facebook какого-нибудь, где люди улыбаются. Конечно, так можно определять, преступник или не преступник. Если подход к задаче, то конечно.</p>
<p>На чём ты тренируешь, так система потом и будет определять. Если в базе данных мало темнокожих людей, то она будет, как в Microsoft несколько лет назад, у них был скандал, что они выпустили определение лиц, и темнокожих людей определяли как обезьян. Понятно, потому что у них в базе данных, на которой они тренировали, были в основном белые. Это называемое bias. Сейчас много тем о том, как делать unbias, как тренировать данные, которые bias, в которых некоторые категории не репрезентативны, minority. Она так тренировал, чтобы она всё равно опознавала эту категорию. Это сложная система.</p>
<p>Имеет ли _____ (00:59:17) систему, которая решает задачу за счет огромного набора данных? Я думаю, да. Этические вопросы? Конечно, этические вопросы очень сложные, особенно в странах, где этические вопросы вообще «задвигаются в тумбочку». Тут вообще проблема.</p>
<p>Я поражен Московским метро. Люди с удовольствием зарегистрировались в этом метро, чтобы определяться лицами. Не то, чтобы это спасло бы их, но всё равно.</p>
<p>Как вы считаете, решаются задачи авторизации или всё-таки идентификации? Авторизация и идентификация – это похожие задачи. Авторизация – при verification, подмножество идентификаций. Идентификация – много верификаций.</p>
<p>(01:00:01)</p>
<p>Верификационная задача – это базовый блок идентификационных задач. Verification – это пара, два – enrolled, который зарегистрирован, и тестовый, сверяется – «да/нет», «да/нет».</p>
<p>Идентификация – делается то же самое, только тест сверяется со всеми enrolled, со всеми зарегистрированными, «да/нет», «да/нет», и максимум. Я думаю, что он больше всего похож. Идентификация – это много верификаций.</p>
<p>Несколько сложно обмануть современную систему, которая используется, например, в банках? Как раз в банках они пока толком не используются, потому что очень легко обмануть. Но я знаю много людей, которые у нас ушли в компании, которые этим занимаются и продают банкам.</p>
<p>Делается гибридно. В банках есть и аудио верификация, но они еще должны на лету задавать вопросы. Самый простой – это интерактивные вещи, «скажите номер паспорта или пин-код». Они слушают сразу, что если ты генерируешь на ходу, тебе сложно это сделать, и вопросы нужно менять. Интерактивные вещи помогают.</p>
<p>Система верификации на телефонах, например, на iPhone решается за счет сенсорных камер. У нас есть большая программа, где используется много разных камер: infrared, тепловые камеры, несколько хороших сенсоров. Проблема решается достаточно легко, существует hardware. Когда ты покажешь экран и камеру, то infrared этот экран будет плоским, он не будет выглядеть, как человек.</p>
<p>Маска силиконовая тоже, тепло не так распределено, как на настоящей человеческой коже. Ее греют феном, протирают, чтобы она нагревалась, и всё равно не такой pattern, не так выглядят, как настоящее лицо.</p>
<p>С сенсорами проблему видео легче решать, поэтому тут 3D сенсор как раз для верификации лица. Более дешевыми телефонами, где нет разных сенсоров, я бы не стал пользоваться для распознавания лица, потому что очень легко сделать спуф. Покажешь хорошую фотографию, отпечатанную на принтере, она пройдет.</p>
<p>Голосом сложнее, потому что голосом сенсором не решишь. Нет сенсоров, есть микрофон, и всё. Если ты пойдешь на шумную улицу, сложно решить эти вопросы, поэтому такая ситуация. Голосом как раз проблема будет долго, поэтому надо интерактивность. Я только это могу предложить</p>
<p><span style="font-weight: 600;">Модератор:</span> Павел, спасибо за очень живое обсуждение воспроизвести.</p>
<p><span style="font-weight: 600;">Павел Коршунов:</span> По нескольким секундам речи _____ (01:03:05) что угодно. Воспроизводить голос? Смотря, как. Можно. Технически для системы верификации голос можно определить уже сейчас. По несколько секунд? Минуты достаточно, чтобы голос сейчас воспроизвести. Но пока еще будет сложно сделать так, чтобы человек не догадался.</p>
<p>У этих RNN есть проблемы, что генерировать deepfakes для не так просто за счет того, что у нас ухо очень чувствительно к обрывам речи, к помехам, когда не совпадает фаза. Когда фазы не совпадает в речи в каком-то месте, то человек очень хорошо чувствует. Машина – нет, потому что нарезает на куски, и каждый кусок анализа используется отдельно, в человек слушает continuously (постоянно). Когда генерируется речь, она генерируется кусками, и эти куски очень сложно связывать, чтобы идеально совпадала фаза.</p>
<p>Это не мой опыт, а человек рассказывал из Facebook и Google, они пытаются заниматься. Они говорили, что это очень сложная задача именно голоса, как сделать так фейковый голос, чтобы не было никакой шероховатости, когда соединяешь разные куски аудио, при том, чтобы был похож на голос того человека. Это не так просто. Машину можно обмануть, а человека не так просто. Если добавить шумы, то да. Если будешь говорить по радио, то там столько шумов, что ничего не услышишь.</p>
<p>Можно. Deepfakes видео много, а deepfakes аудио очень мало.</p>
<p>(01:05:03)</p>
<p>В Challenge сейчас называют deepfakes аудио, на самом деле WaveNet. Там нет deepfakes аудио. Там есть voice conversion, но они не такие хорошие, как синтетический голос, как Google Assistant, который просто какой-то голос. Не чей-то голос, а какой-то голос. Его можно хорошо генерить. А какой-то голос не так просто генерить пока. Может быть, что-то придумают, но эта проблема гораздо сложнее, чем видеоизображения</p>
<p><span style="font-weight: 600;">Модератор:</span> Спасибо, Павел. Спасибо всем присутствующим. Очень живое, очень интересное обсуждение. Приглашаем всех на наши будущие вебинары, приходите. То, что сегодня было, будет опубликовано, частично презентации уже опубликованы на сайте. Спасибо и до свидания.</p>
<p><span style="font-weight: 600;">Павел Коршунов:</span> Пожалуйста. До свидания.</p>
<p><span style="font-weight: 600;">(01:06:06) (Конец записи.)</span></p><p>The post <a href="https://ntr.ai/webinar/nauchno-tehnicheskij-vebinar-reshena-li-problema-obnaruzheniya-rechevyh-spufing-atak/">Научно-технический вебинар “Решена ли проблема обнаружения речевых спуфинг атак?”</a> first appeared on <a href="https://ntr.ai">Компания НТР</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Научно-технический вебинар &#171;Одноканальное разделение источников в аудио данных: современные методы и их применение&#187;</title>
		<link>https://ntr.ai/webinar/nauchno-tehnicheskij-vebinar-odnokanalnoe-razdelenie-istochnikov-v-audio-dannyh-sovremennye-metody-i-ih-primenenie/</link>
		
		<dc:creator><![CDATA[Alexandra Koroleva]]></dc:creator>
		<pubDate>Mon, 09 Aug 2021 09:21:44 +0000</pubDate>
				<guid isPermaLink="false">https://ntr.ai/?post_type=ntr-web&#038;p=319</guid>

					<description><![CDATA[<p>В докладе мы разберем проблему разделения источников в аудио данных, [&#8230;]</p>
<p>The post <a href="https://ntr.ai/webinar/nauchno-tehnicheskij-vebinar-odnokanalnoe-razdelenie-istochnikov-v-audio-dannyh-sovremennye-metody-i-ih-primenenie/">Научно-технический вебинар «Одноканальное разделение источников в аудио данных: современные методы и их применение»</a> first appeared on <a href="https://ntr.ai">Компания НТР</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>В докладе мы разберем проблему разделения источников в аудио данных, дадим обзор современных подходов к ее решению и покажем области применения решений для музыки и речи. Мы поговорим о преимуществах и недостатках работы со спектрограммами и сырым аудио, рассмотрим современные supervised и self-supervised методы как в классической постановке задачи (с использованием только аудио данных), так и с привлечением дополнительных источников информации, таких как видео и музыкальные партитуры. Мы также приведем варианты решений проблемы для случаев, когда количество источников в исходном аудио неизвестно, и обсудим численные метрики оценки качества решений.</p>
<p><span style="font-weight: 600;">Видео:</span> <a href="https://youtu.be/rCCm7ouXAp0" target="_blank" rel="nofollow noopener">https://youtu.be/rCCm7ouXAp0</a></p>
<p><span style="font-weight: 600;">Презентация:</span></p>
<p>Для того, чтобы открыть презентацию спикера, необходимо:</p>
<p>1. Скачать ZIP-архив: <a href="https://drive.google.com/file/d/1aBe1UjcN7_cXuxbCoN1wBzAIikZR77hS/view?usp=sharing" rel="nofollow">https://drive.google.com/file/d/1aBe1UjcN7_cXuxbCoN1wBzAIikZR77hS/view?usp=sharing</a>;</p>
<p>2. Найти файл slides/index.html;</p>
<p>3. Открыть этот файл с помощью браузера.</p>
<p>‍</p>
<p><span style="font-weight: 600;">(00:00:00) (Начало записи) </span></p>
<p><span style="font-weight: 600;">Николай Михайловский: </span>Еще раз здравствуйте. Я Николай Михайловский. У нас в этом году первый вебинар, который проводит «НТР» с Высшей IT-школой Томского университета. С нами Ольга Слизовская с докладом «Одноканальное разделение источников в аудиоданных».</p>
<p><span style="font-weight: 600;">Ольга Слизовская:</span> Меня зовут Ольга, я нахожусь в физически в Барселоне, работаю в компании, которая называется Voctro Labs. Мы занимаемся самыми разными задачами с обработкой аудио и с обработкой звука. В частности, сейчас я в основном занимаюсь конвертацией голоса, real time конвертация голоса. Доклад будет в основном про то, чем я занималась частично во время написания кандидатской диссертации, которую я защитила в университете Pompeu Fabra в прошлом году. Поэтому везде, практически на протяжении всей презентации, будет ярлычок университета висеть.</p>
<p>Я думаю, что в докладе не будет очень много технических деталей, будет, скорее, такое overview методов, которые существовали и существуют, и которыми пользуются, и для чего ими пользуются. Немножко во второй части презентации я буду рассказывать, а что конкретно делала я.</p>
<p>Давайте начнем. Состоит доклад из четырех частей, сначала я покажу примеры того, как работает разделение источников в аудио, сформулируем задачу, расскажу про классические и Deep Learning методы и про мультимодальные подходы к решению задачи, и зачем они вообще нужны.</p>
<p>Начнем с примеров и постановки задачи. Наверняка вы слышали про denoising, когда у вас есть зашумленное аудио, и вы хотите чистое. Применений этому не счесть, потому что это, в принципе, мечта для всех, иметь плохой микрофон, шумных соседей, и в записи всегда иметь очень чистое звучание, желательно еще с хорошим динамическим диапазоном. Если мы приходим к разделению источников в аудио через denoising, то получаем такой denoising на стероидах, потому что мы хотим не только сигнал от шума отделять, а несколько сигналов друг от друга. Каждый из них должен быть чистым, и мы не хотим ни интерференции, ни артефактов, ни искажений, мы хотим практически иметь их в том виде, как если бы они были записаны по отдельности.</p>
<p>Строго говоря, эта задача недоопределена, потому что мы не знаем зачастую ни исходный сигнал, ни то, как они смешивались. Поэтому в большинстве случаев мы считаем, что смешивались они в простой очень линейной модели, как сумма, и пытаемся определить только отдельные сигналы в этой сумме. Но, вообще говоря, это чуть сложнее. Я потом поговорю про формальную постановку задачи, а пока примеры, в каких случаях нам это нужно.</p>
<p>Основные случаи, когда нам это нужно, это, например, мы хотим уметь разделять двух говорящих людей, которые говорят одновременно, и чтобы&#8230; Чтобы не говорила я все время, я буду показывать примеры во время презентации. Например, с речью довольно наделавшая шума в свое время публикация, называется «Смотреть, чтобы слушать на коктейльной вечеринке», несколько лет назад она вышла. Я вам покажу видео того, как эта система работает, как они разделяют речь двух говорящих одновременно спикеров.</p>
<p><em>(Видео.)</em></p>
<p>(00:05:05)</p>
<p>Понятно, что́ они пытаются сделать. Были более современные примеры из дебатов Трампа и Байдена, где они делали в принципе то же самое – брали записи с дебатов и пытались послушать, что же говорит каждый по отдельности.</p>
<p>Аналогичные вещи можно делать в музыке. В музыке в основном пытаются разделять треки, которые уже замикшированы, и пытаться отдельно слушать трек, в котором записан голос, трек, в котором записан аккомпанемент или басы, или ударные инструменты. Один из примеров, который мы тоже можем послушать, это работа из Facebook Research, о которой я упомяну тоже позже. Вот пример смеси, которую они берут.</p>
<p><em>(Аудио.)</em></p>
<p>_____, который у них есть, исходные дорожки, в этом случае исходные дорожки есть.</p>
<p><em>(Аудио.)</em></p>
<p>Так это звучит в оригинале до сведения, и так звучит в разделенном виде.</p>
<p><em>(Аудио.) </em></p>
<p>Еще мы можем разделять аудио всего, чего угодно, без привязки к речи, без привязки к музыке. Это задача, которая не очень сильно развита, но которая начинает иметь все большую и большую важность во всех исследованиях. Универсальное разделение источников, когда вы пытаетесь отделить музыкальные инструменты от лая собаки или от каких-нибудь капель падающих, или от речи, в общем-то, от всего, чего угодно. В этот момент у нас возникает еще больше проблем, потому что мы не знаем, сколько источников мы хотим разделять, какие они, что с ними делать вообще.</p>
<p>Есть работы, которые уже довольно неплохо с этим справляются. Например, есть тема одной из исследовательских работ из Google, где таким образом звучит смесь, которая представляет собой кубики льда падающие и шум из телефона. Они на самом деле набрали просто всяких-разных шумов из большой базы данных, и смешивали, и, в принципе, научились их разделять.</p>
<p><em>(Аудио.)</em></p>
<p>Зачем это все нужно? В принципе, это важная тема для умных колонок, для голосовых помощников, для людей, которые носят слуховые аппараты, потому что в принципе разделение источников может довольно сильно улучшить жизнь людям с нарушениями слуха. Это можно использовать для предобработки аудио, для улучшения распознавания речи, для классификации из этого аудио потом чего угодно. В музыки это применяют для создания караоке, хотя единственный кейс, который я знаю про создание караоке, это Spotify, которые зарелизили японское приложение, приложение в Японии, где их караоке работает на основе их собственной технологии разделения источников, и больше, мне кажется, они нигде не смогли получить права на то, чтобы его запустить.</p>
<p>Я буду в основном рассказывать про музыкальные данные, потому что это то, с чем я больше всего работала. Другое применение в музыке – это возможность пересвести уже записанный трек или переделать микширование для аудиотреков, которые уже записаны и сведены.</p>
<p>(00:09:59)</p>
<p>В некоторых случаях для оркестровой музыки, например, в принципе, не очень много вариантов, как свести мультимикрофонную запись, и разделение источников отчасти с этим может помочь, потому что когда вы записываете оркестр, у вас всегда будет интерференция.</p>
<p>Промышленные исследования вообще в области разделения источников в основном двигаются за счет голосовых помощников и умных колонок, потому что голосовым помощникам и умным колонкам нужно понимать, что говорит этот конкретный человек, и желательно человек, который обращается к этой колонке. Так что музыкой, кроме Spotify и Sony особо никто не занимается в промышленных исследованиях.</p>
<p>Я вам покажу еще одно видео снова с неформальной постановкой задачи, с тем, чем я, например, занималась, и потом мы перейдем к формальной постановке задачи.</p>
<p><em>(Видео.)</em></p>
<p>Мы хотим уметь перемикшировать все заново, как если бы все было записано по отдельности. В этом случае все действительно было записано по отдельности, но, конечно, хочется иметь систему, которая могла бы работать с абсолютно любыми записанными аудио.</p>
<p>Итак, формальная постановка задачи. У нас есть аудиосигнал, временной аудиосигнал. Обычно во всех примерах, про которые я буду рассказывать, это будет моно аудиосигнал. Когда мы используем стерео, у нас больше возможностей для того, чтобы посчитать интерференции между разными каналами и использовать. Но большинство, подавляющее большинство систем разделения источников в аудио, которые вы найдете, работают со смесями моносигнала. Эта смесь состоит из индивидуальных источников, и мы рассматриваем простую линейную модель, где смесь – это сумма этих источников. Мы хотим найти параметры некоей модели, которая может восстановить нам индивидуальные источники, оценку этих индивидуальных источников из смеси.</p>
<p>Есть в принципе две большие ветви про то, как это делать. Мы можем пытаться предсказывать что-то из сырого аудио, и можем предсказывать что-то из спектрограмм или из спектрограмм, которые прошли постобработку. В случае с сырыми аудиоданными, как правило, функция потерь, которую мы используем, то, на что мы смотрим, это L2 loss между предсказанным аудиосигналом и оригинальным аудиосигналом.</p>
<p>В случае со спектрограммами есть много вариантов. Есть люди, которые используют L2 loss непосредственно между спектрограммами, хотя считается, что это не очень хорошо работает, по разным причинам. Исторически изначально люди использовали бинарные маски, то есть накладывали маску из нулей и единиц на спектрограмму и смотрели, что получилось. Получался довольно-таки сильно фильтрованный сигнал с большим количеством артефактов.</p>
<p>После этого начали использовать вещественные маски вместо бинарных, стало получаться лучше. Но, в принципе, у методов, которые работают со спектрограммами, есть неприятная особенность – как правило, в них во всех не учитываться фаза. Все эти функции потерь, вся эта радость обсчитывается только на магнитуде спектрограмм, за исключением очень небольшого количества работ, про которые я даже не буду упоминать.</p>
<p>(00:15:08)</p>
<p>Они хорошие и интересные, но они совершенно капля в море.</p>
<p>Мы считаем, на самом деле, если мы работаем с вещественными масками, то мы считаем тот же самый L2 loss на каждом значении вещественной маски между предсказанной вещественной маской и той вещественной маской, которую мы посчитали для _____. (00:15:35)</p>
<p>Перед тем, как мы будем рассматривать методы, я расскажу еще, как все эти методы оцениваются. Все это хорошо, но слушать каждое аудио по отдельности и пытаться понять, хорошо мы его разделили или плохо мы его разделили, не получится. Здесь у меня будет такой маленький спойлер, потому что метрик много, и я их вкратце упомянула, основные, без вдавания в детали. Но что нужно знать про все эти метрики, то, что обычно в статьях можно найти упоминание о всех этих метриках, все посчитаны в большой табличке, много колонок, много цифр, как сравнивать, непонятно. В принципе, первые пять метрик на этом слайде – это разновидности отношения «сигнал-шум», то есть это сигнал-шум, который учитывает разные особенности восприятия на слух. Например, первый учитывает дисторсии, второй – интерференции, артефакты и так далее, и последние два, Scale-Independent и Scale-Dependent варианты, они были предложены как усовершенствование первых трех метрик, потому что первые три метрики используются на протяжении последних 18 лет, и они не очень хорошо. Ну, как? Они хорошо работают, потому что они почти единственные, которые существуют.</p>
<p>В этом году сотрудники одной из французских лабораторий предложили еще одно усовершенствование на основе тех же самых метрик. Но, в принципе, эти первые три, я бы сказала, основные, первые, следующие две – это те, которые набирают все бо́льшую популярность. Последняя – это для очень специфического кейса, если вам нужно смотреть, насколько много у вас интерференции в абсолютных значениях.</p>
<p>Как я сказала, это все разновидности отношения «сигнал-шум» с разными субъективными параметрами. Например, были исследования, в которых люди при оценке разных систем предпочитают системы с высоким SDR и низким SAR, скорее, чем системы с низким SDR и высоким SAR. Они предпочитают слышать интерференции, чем артефакты, чем дисторсии.</p>
<p>Мы примерно знаем, что́ собираемся делать, и как собираемся это оценивать. Давайте, если есть сейчас вопросы, потому что я не вижу QNA, я вижу только себя и экран с презентацией. Если вопросов нет, то я продолжу, начну раздел про методы. Если вопросы есть&#8230;</p>
<p><span style="font-weight: 600;">Николай Михайловский:</span> Вот прилетают вопросы в чат. Пожалуйста, Александр Абдулов спрашивает: «Капля в море, но есть в итоге в фазе пользы или нет?»</p>
<p><span style="font-weight: 600;">Ольга Слизовская:</span> Говорят, что есть. Люди опубликовали статьи, конечно, в своих статьях они пишут, что есть вроде польза. Поищите в Facebook, но только face как ph, как phase.</p>
<p>Можно изучать именно эти направления, да, а можно всем дружно ринуться на предсказание оригинальной вейвформы во временном домене, и не работать со спектрограммами никогда. Да, можно, можно и нужно.</p>
<p>(00:19:59)</p>
<p><span style="font-weight: 600;">Николай Михайловский:</span> В QNA уважаемый Юрий Багуров спрашивает: «Разделение до нескольких голосов тоже рассматриваете? Или разделение только, видимо, для музыкальных инструментов?»</p>
<p><span style="font-weight: 600;">Ольга Слизовская:</span> В этом докладе я не буду рассказывать про разделение для нескольких голосов. Я только упомянула об этом в начале. Но я могу еще сказать, что да, там есть проблемы с инвариантностью лоссов, потому что мы можем&#8230; Когда мы разделяем голоса, мы можем начать случайно перемещать аудио из одного канала в другой канал, предсказывать. Нет, мы не будем об этом сегодня разговаривать.</p>
<p>Давайте поговорим немножко о классических методах. Что с этим делали, когда Deep Learning не было? На самом деле, история разделения сигналов, кажется, уходит в глубины веков, совсем-совсем в глубины веков, в шестидесятые годы, хотя тогда, конечно, никто с аудио не работал, тогда все пытались сканировать радиочастоты и находить источники в радиочастотах. С аудио, мне кажется, работают где-то с восьмидесятых, может, с семидесятых годов. Основные классические методы, все они основаны на методах линейной алгебры, на матричном разложении и на приближении матрицы меньшего ранга, чем исходная матрица спектрограммы. Все они работают со спектральными представлением аудио и никогда с сырыми аудиоданными, конечно.</p>
<p>Самый популярный метод из всех, что я встречала, это NMF, неотрицательное матричное разложение. Основное его отличие, здесь будет картинка из «Википедии», которая иллюстрирует примерно, что он из себя представляет. У нас есть исходная матрица со спектральным представлением смеси источников, которую мы пытаемся разложить на две компоненты: на матрицу «словарь паттернов» и матрицу активаций.</p>
<p>Матрица «словарь паттернов» – это матрица, в которой мы будем записывать спектральные паттерны каждого источника, и мы можем для каждого источника определить несколько паттернов. Тогда матрица W будет шире. В матрице активаций мы будем прописывать, когда эти паттерны активируются. Потом, чтобы получить оценку этого источника, мы будем перемножать набор паттернов для этого источника с набором активаций для этого источника, и таким образом его оценивать.</p>
<p>Основное отличие этого конкретного метода от, например, принципа Component analysis, который тоже про приближение низкоранговыми матрицами, в том, что в этом случае в NMF все компоненты обоих матриц неотрицательны, в PSE вещественные, но, в принципе, если вы знакомы с PSE или с LBA, или с каким угодно матричным разложением, то идея все та же самая.</p>
<p>Большое достоинство NMF в том, что он практически не зависит от данных. Это supervise-метод, но мы оптимизируем только компоненты самих матриц. Это итеративный процесс, нам не нужно взять все данные все вместе, прогнать их через большую сеть, посчитать функцию потерь и прогнать _____, (00:24:32) поэтому, в принципе, обучение гораздо быстрее проходит. Параметры модели, по сути, не оптимизируются по данным, они оптимизируется итеративно, мы только считаем ошибку по данным.</p>
<p>(00:24:52)</p>
<p>С NMF работали на протяжении очень долгого времени, поэтому работ по NMF очень много. Соответственно, есть работы, которые работают с одноканальным разделением источников, с многоканальным разделением источников. Есть работы, которые используют дополнительные источники данных в основном для инициализации этих маленьких матриц. Например, самое простое для музыки – это для матрицы W используется некоторая предобученная модель спектральных паттернов, которая натренирована на каждом голосе или на каждом музыкальном инструменте, а для матрицы H можно использовать партитуры музыкальные, и таким образом прописать там, в какой момент какая нота будет звучать. Это очень хорошо сказывается на качестве конечной модели. Таким образом, она может быть informed.</p>
<p>Так как этот метод изучался в течение двадцати с лишним лет, наверное, больше гораздо, есть очень много его разновидностей и вариантов оптимизации, вариантов обучения. Я не большой специалист, поэтому за деталями и подробностями всех этих разновидностей я, скорее всего, порекомендовала бы этот обзор, который вторая ссылка, 2018 года, это люди из INRIA, из Франции, один из которых наш соотечественник, и они собаку съели на этом, они очень много опубликовали хороших вещей с очень детальным математическим разбором, какой параметр за что отвечает и для чего это все используется.</p>
<p>Я перейду к методам глубокого обучения, в целом к обзору того, что там есть. Я вижу еще одно&#8230; «Микрофон немного подальше». Хорошо.</p>
<p>Я перейду к методам глубокого обучения. Посмотрим на историческое развитие, откуда они начались, к чему они пришли, и чем сейчас люди пользуются, в основном, опять же, с применением для музыкальных данных.</p>
<p>Самая первая работа, которую я знаю, в разделении источников с помощью глубокого обучения, это статья 2017 года, которая, по сути своей, говорит, что давайте возьмем очень тяжелый автоинкодер с небольшим количеством сверточных слоев и с некоторым количеством полносвязных слоев, и попробуем из исходной спектрограммы восстановить маски для каждого из источников. Это 2017 год публикации.</p>
<p>Мне кажется, в 2017-м же было еще несколько публикаций для разделения речи, но я о них ничего не помню, и здесь они не фигурируют. А вот для музыки это была, наверное, первая попытка действительно чего-то использовать, использовать сверточные сети для разделения источников.</p>
<p>Положительным аспектом этой работы был тот факт, что разделение forward pass было довольно быстрым, достаточно быстрым, даже, мне кажется, быстрее, чем NMF, потому что NMF, возможно, нужно было предпросчитывать что-то, не помню. Помню, что было гораздо быстрее. Но обучение, конечно, занимало гораздо больше времени, чем классические матричные методы. Этот метод работал едва ли лучше, чем NMF, на тот момент. Мне кажется, может быть даже, даже и хуже работал. Но, тем ни менее, он дал старт ряду&#8230;</p>
<p>(00:29:59)</p>
<p>Не то, чтобы этот метод дал старт ряду других работ, но он был одним из первых.</p>
<p>Следующим этапом развития стала U-Net. Дело в том, что появлялись новые модели в смежных областях, в основном в области машинного зрения, компьютерного зрения, и исследователи, аналитики аудио активно применяли все модели, которые появлялись в компьютерном зрении, и которые появлялись, в частности, для разделения масок в _____. (00:30:46) Таким образом, в 2017-м же году, мне кажется, вышел препринт этой работы, а опубликована она была в 2018-м, где ряд исследователей из Нью-Йорка использовали U-Net для разделения источников, для разделения голоса от аккомпанемента, основное, что они делали, это разделять голос от аккомпанемента.</p>
<p>Появлялись все новые модели, исследователи продолжили их адаптировать, и следующим шагом был переход от работы со спектрограммами к работам с сырыми данными. Так появилась Wave-U-Net, которая отчасти было была основана на U-Net, на Vanilla U-Net,и отчасти была основана на WaveNet, и использовала далее этот convolution _____ (00:31:45) свертки с дырами, dilated-свертки, которая тоже работала на тот момент несколько хуже, чем вариант со спектрограммами, но, тем не менее, дала толчок к развитию новых методов, которые работали с сырым аудио.</p>
<p>После этого, на самом деле, с точки зрения архитектуры сетей ничего кардинально нового не появилось. Появлялись новые методы, появлялись новые функции потерь, но то, что используется сейчас, в последние годы, это в основном те же самые U-Net в работе от Deezer, которая называется Spleeter. Это некоторая разновидность time dilated convolutional network с BiLSTM от Facebook, с примерами, которые я демонстрировала в самом начале.</p>
<p>Та же самая time dilated convolutional network с некоторыми особенностями для Universal Sound Separation, и свертки с BiLSTM в Open-Unmix, который является совместной работой Sony и одной из немецких групп, University of Erlangen, если я правильно помню.</p>
<p>В общем архитектуры сильно не менялись, но я видела несколько трансформеров в последнее время, потому что аудиоисследователи пытаются адаптировать все time series (00:33:38) модели, которые видят. Но, в принципе, я не видела больших успешных моделей, которые с этим работают.</p>
<p>В последнее время, мне кажется, идет большой глобальный drift, shift в сторону unsupervised-методов, то есть создание искусственных смесей и разделения из искусственных смесей, и дальнейший анализ, а что же с этим можно делать. возможно, мы можем использовать не простые линейные модели, а какие-то более сложные модели смешивания сигналов, или оценивать, локализовывать источники в разных местах, в разных местах помещений, и пытаться определить направление до источников, использовать эту информацию для разделения.</p>
<p>Большой shift есть в unsupervised-методы, например, использование классификации как подзадачи, которая помогает для разделения. Это, например, используется в Universal Sound Separation, это же используется в Source separation on weakly labelled data, это другая работа.</p>
<p>(00:35:05)</p>
<p>Очень много исследований в области функций потерь, потому что можно использовать L1 Loss, можно использовать L2 Loss, можно использовать соотношение «сигнал-шум», можно использовать spectral consistency loss, который, по сути, собой представляет&#8230; Не буду вдаваться в подробности, потому что все равно не смогу на пальцах объяснить.</p>
<p>В общем, ведутся исследования в области loss-функций, как это обычно бывает. Так как у нас остается 20 минут, я перейду – сейчас посмотрю в чат, в чате ничего – и перейду к тому, чем я занимаюсь сама. Я занималась разделением аудиосигналов в музыкальных данных, но в музыкальных данных конкретно специфических, для оркестровой музыки, для камерной музыки.</p>
<p>В чем особенности оркестровой и камерной музыки? В том, что у них очень много есть сигналов, которые довольно сложно отличить. Для этого в качестве примера постановки задачи послушаем еще несколько примеров, и попробую задать вопрос, если вы можете услышать разницу между несколькими кусочками аудио, которые вы будете слушать сейчас.</p>
<p><em>(Аудио.)</em></p>
<p>Как правило, с первого раза услышать разницу между этими тремя примерами довольно сложно. На самом деле, так как разницы не слышно, то я вас попрошу послушать, вот это на самом деле, это та разница, которая была между каждым аудио. Это то, в чем они отличались.</p>
<p><em>(Аудио.)</em></p>
<p>Слышно голоса гораздо лучше, совершенно точно. Это иллюстрация того, что же вы слушали. Человек, который говорил, что басов не слышно, в принципе, был прав, потому что в первом случае, в первом аудио, там были скрипки, виолончель и контрабас, во втором аудио были скрипки и две виолончели, и в третьем были скрипки, виолончель и кларнет.</p>
<p>В чем же проблема, в чем у нас проблема с музыкой? В том, что сходные музыкальные инструменты, из одного и того же семейства очень похожи и звучат одинаково. В том, что в камерной и в оркестровой музыке мы не можем знать заранее количество источников, как правило, это не известно. В том, что как только мы добавляем новые источники, сложность проблемы увеличивается, и чем больше источников нам нужно разделить, тем сложнее проблема, и потому что между источниками есть очень много интерференций как во времени, так и в частотах. Если смотреть на виолончель и контрабас, они очень перекрывают друг друга, особенно если они в унисон звучат.</p>
<p>Поэтому вся идея моей работы была в том, что давайте посмотрим, можем ли мы использовать дополнительную информацию, которая у нас доступна, для того, чтобы улучшить разделение источников.</p>
<p>(00:40:00)</p>
<p>Дополнительной информацией в этом случае у нас будут лейблы музыкальных инструментов, какие конкретно инструменты мы хотим разделить, и видео, которое доступно вместе с аудио.</p>
<p>Изначально мы начали работать с разделением источников во временном домене, с сырыми аудио. Это был интересный подход, но очень дорогой с точки зрения компьютерного, вычислительного времени. Поэтому в итоге перешли обратно на спектрограммы. Но, тем не менее, мы начали исследования с informed wave unit, скажем так, это архитектура U-Net, которая принимает на вход смесь и выдает несколько разделенных источников. У нее там есть какие-то residual connections.</p>
<p>Что мы попытались сделать с самого начала, это добавить лейблы музыкальных инструментов в bottleneck этой архитектуры, в bottleneck этого, по сути, автоинкодера, не совсем автоинкодера, но практически, и посмотреть, насколько лучше эта система будет разделять источники по сравнению с baseline. Кажется, здесь пропущен один из слайдов. Результаты были в том, что стало разделяться чуть больше, но большой выгоды в использовании только лейблов, особенно в bottleneck, не было, и в целом результаты этих исследований показали, что работа с сырыми данными очень накладна. Если у вас есть доступ к TPU, то можно этим заниматься, если вы не богатый исследователь в университете, то, скорее всего, это достаточно сложно.</p>
<p>Поэтому мы вернулись в спектрограммы и начали&#8230; А, нет, вот же оно. Это датасет, который мы использовали для обучения. Он состоял всего из 44 видео, это порядка часа данных, наверное, меньше часа данных. В итоге вся система была обучена на 30 видеозаписях длиной в три минуты, плюс-минус, и она разделяла.</p>
<p><em>(Аудио.)</em></p>
<p>В целом, большая проблема работы с сырыми данными, что в сырые данные протекает гораздо больше интерференций. Артефактов не так много, слышно было хорошо, но интерференций достаточно. Результаты были неплохими, нам очень понравилось, но TPU не хватало, и пришлось вернуться к спектрограммам. Мы сделали несколько ablation, ускорили оригинальную имплементацию, которая была на Tensor Flow, перенесли ее&#8230; В общем, это детали, не столь важно.</p>
<p>После этого мы все-таки решили попробовать видеоданные. Видеоданных не хватало совсем, то есть не было возможности научить сеть с видеоданными, которая бы обучалась на 44 видео, поэтому, как водится, мы собрали свой собственный датасет из YouTube-видео, которые были исключительно соло, исключительно индивидуальные записи, в основном хорошего качества, вручную их посмотрели и убедились, что все хорошо, и микшерили их на лету. Использовали ту же самую модель с суммой сигналов, ничего не придумывали нового, и составляли новые сэмплы для разделения на лету во время обучения.</p>
<p>(00:44:59)</p>
<p>В тот момент, когда мы перешли на спектрограммы, у нас начались проблемы с дизайном решения, потому что в литературе очень много разных вариантов того, что можно использовать, в каком месте можно добавлять экстраданные, в начале энкодера, в середине, в конце, какие маски использовать, какие лоссы использовать. Поэтому в какой-то момент мы провели еще одно ablation study, выбрали самую лучшую, оптимальную с точки зрения времени и производительности и качества архитектуру, и начали&#8230; В общем, это была baseline-архитектура, та, которая подсвечена, и потом эта baseline-архитектура была перемножена на все остальные параметры. С этой baseline-архитектурой мы попробовали фьюжен с экстрадатами в начале энкодера, в декодере, в ботлнеке этой архитектуры и так далее. Разные типы, разные типы в добавлениях и разные типы экстра-данных, собственно _____ (00:46:08) лейблы и информация из visual conditioning.</p>
<p>Мы использовали One-Hot Encoding для векторов лейблов, мы использовали для visual conditioning просто-напросто информацию, которую могли бы получить из предобученной сверточной сети, и для visual motion conditioning информацию из предобученной сверточной сети с LSTM.</p>
<p>Есть другая работа, которая называется Sound of Motion, там они идут дальше, там они делают похожие вещи, но, например, которые работают для разделения двух скрипок друг от друга, потому что в нашей работе мы только можем отделить скрипку от виолончели или скрипку от контрабаса, а они отделяют уже две скрипки, используя вектора движения, оценивая optical flow, они используют модель deep optical flow, которая оценивает вектор движения для каждого источника и использует эту информацию для улучшения разделения источников.</p>
<p>Это был слайд про то, где собственно мы добавляли экстраданные, в начале, в середине, в конце или перемножали лейблы на маски в самом конце _____ (00:47:48) архитектуры.</p>
<p>Результатом всей этой большой работы стала идея, что лучше всего в нашем случае работала система с лейблами, она показывала лучшие SI-SDR и SDR, то есть видеоинформация помогает по сравнению с чистым аудио, но если вы добавляете лейблы, то это еще лучше.</p>
<p>QNA. «Пробовали ли добавлять информацию об инструментах не через One-Hot, а через эмбеддинги?» Нет, не пробовали. Хороший вопрос, спасибо. В принципе, не факт, что что-то сильно бы изменилось, но вообще да, можно было бы попробовать.</p>
<p>В конце я вам покажу, что из этого всего получилось, как работала лучшая система для разделения источников. Мне кажется, это система конкретно с лейблами как раз, которые перемножены на маски в конце. Она работает уже с количеством источников до 4, потому что 4 – это было максимальное количество источников в датасете, на котором мы сравнивались, то есть в единственном датасете, для которого был _____, (00:49:41) реальные смеси, датасет URND, в котором 44 видео. Вся оценка, весь evaluation проводился на нем.</p>
<p>(00:50:00)</p>
<p><em>(Аудио.)</em></p>
<p>В целом результаты такие, что интерференции, конечно, все еще есть, но с новым датасетом и с новым типом&#8230; с новым датасетом после ablation study со всеми conditionings, со всем на свете, и на спектрограммах стало работать гораздо лучше. Минутка саморекламы.</p>
<p>Если у вас есть вопросы, я буду очень рада на них ответить. Спасибо.</p>
<p><span style="font-weight: 600;">Николай Михайловский:</span> Ольга, спасибо большое за рассказ. Коллеги, пожалуйста, ваши вопросы. Здесь у нас минутка саморекламы одновременно от нас. Ива, (00:52:36) спасибо. Александр Абдулов спрашивает: «Были попытки обучать на синтетических данных, посредством синтезаторов музинструментов?»</p>
<p><span style="font-weight: 600;">Ольга Слизовская:</span> Хороший вопрос, спасибо. Нет, на синтетических данных мы обучать не пробовали. Но, наверное, это хорошая идея. Наверное, это можно попробовать действительно. Мы хотели&#8230; Они все равно не столь реалистичны, но, в принципе, я согласна, что с точки зрения Data Augmentation это валидный подход, это можно использовать.</p>
<p><span style="font-weight: 600;">Николай Михайловский:</span> У меня есть вопрос. В части unsupervised learning, обучения без учителя какие есть работы по source separation, и что здесь можно на ваш взгляд делать? Потому что у вас работы чисто supervised, а сейчас все движение идет в сторону unsupervised, semi-supervised learning.</p>
<p><span style="font-weight: 600;">Ольга Слизовская:</span> Последняя работа, на самом деле, в некоторой степени self-supervised, потому что все смеси, которые мы используем, делались на лету, в последнем. Так делают в основном сейчас все, и совсем unsupervised есть, Universal Sound Source Separation, там они тоже берут совсем рандомные аудио из большой базы данных и смешивают их, и точно так же, в ту же сторону, semi-supervised. В Audio Visual почти все работы self-supervised и semi-supervised, потому что они используют contrastive loss, free loss и так далее, пытаясь научить эмбеддинги, которые приближают друг к другу то, что мы выучиваем из аудио, и то, что мы выучиваем из видео.</p>
<p>(00:54:59)</p>
<p>Не знаю, понятно ли я объясняю, конечно, вы об этом слышали.</p>
<p><span style="font-weight: 600;">Николай Михайловский:</span> Да нет, очень понятно, на самом деле.</p>
<p><span style="font-weight: 600;">Ольга Слизовская:</span> В работах Universal Source Separation и в работах Learning to Separate Sounds from Weakly Labeled Data, по-моему, так оно звучало, это тоже из Google работа, там они используют self-supervised исключительно.</p>
<p><span style="font-weight: 600;">Николай Михайловский:</span> Предположим, у нас есть большое-пребольшое количество записей, в которых мы знаем количество источников. А как можно было бы к такой задаче подступиться?</p>
<p><span style="font-weight: 600;">Ольга Слизовская:</span> Один из подходов, которые есть, это попытаться в каждый момент времени отделять тот источник, у которого больше всего энергии, то есть обсчитывать, можно делать просто итеративный процесс, и в каждый момент времени отделять тот источник, который громче всего звучит, ренормализовывать подпрограмму, и снова отделять тот источник, который громче всего звучит, до тех пор, пока в конце шум не останется, или ничего не останется.</p>
<p><span style="font-weight: 600;">Николай Михайловский:</span> Михаил Усачев спрашивает: «Какая производительность алгоритма? Может ли работать в реальном масштабе времени?»</p>
<p><span style="font-weight: 600;">Ольга Слизовская:</span> Можно, если хорошо оптимизировать, это все, конечно, работает в реальном времени.</p>
<p><span style="font-weight: 600;">Николай Михайловский:</span> Тут, наверное, еще вопрос, на чем, потому что есть _____, (00:56:51) а есть маленькие мобильные процессы.</p>
<p><span style="font-weight: 600;">Ольга Слизовская:</span> Это правда. Со мной можно связаться по электронной почте, я вам сейчас ее напишу. Вообще, все это ужасно интересно, потому что в каждом типе данных свои особенности. Я ничего не рассказала про веб сегодня, а если бы мы углубились в разделение источников из окружающей среды, например, птиц или собак, или шумов, или собственно голоса, в каждой из этих сфер есть столько работ и столько деталей, за которыми нужно следить и которые нужно учитывать. Я ничего не рассказала про пост-процессинг, например, а этим активно люди пользуются, многоканальными фильтрами Винера. В общем, это большой и очень интересный мир.</p>
<p><span style="font-weight: 600;">Николай Михайловский:</span> Да, многие из нас знают, насколько это большой и насколько это интересный мир. Спасибо большое за очень интересный рассказ.</p>
<p><span style="font-weight: 600;">Ольга Слизовская:</span> Спасибо вам.</p>
<p><span style="font-weight: 600;">Николай Михайловский:</span> Я надеюсь, что коллегам было тоже интересно вас послушать. До свидания всем.</p>
<p><span style="font-weight: 600;">(00:58:19) (Конец записи) </span></p><p>The post <a href="https://ntr.ai/webinar/nauchno-tehnicheskij-vebinar-odnokanalnoe-razdelenie-istochnikov-v-audio-dannyh-sovremennye-metody-i-ih-primenenie/">Научно-технический вебинар «Одноканальное разделение источников в аудио данных: современные методы и их применение»</a> first appeared on <a href="https://ntr.ai">Компания НТР</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Научно-технический вебинар &#171;Автоматическое определение профиля авторов в социальных сетях&#187;</title>
		<link>https://ntr.ai/webinar/nauchno-tehnicheskij-vebinar-avtomaticheskoe-opredelenie-profilya-avtorov-v-soczialnyh-setyah/</link>
		
		<dc:creator><![CDATA[Alexandra Koroleva]]></dc:creator>
		<pubDate>Mon, 09 Aug 2021 07:29:47 +0000</pubDate>
				<guid isPermaLink="false">https://ntr.ai/?post_type=ntr-web&#038;p=313</guid>

					<description><![CDATA[<p>Спикер о предстоящем вебинаре: Обсудим преимущества и недостатки использования социальных [&#8230;]</p>
<p>The post <a href="https://ntr.ai/webinar/nauchno-tehnicheskij-vebinar-avtomaticheskoe-opredelenie-profilya-avtorov-v-soczialnyh-setyah/">Научно-технический вебинар «Автоматическое определение профиля авторов в социальных сетях»</a> first appeared on <a href="https://ntr.ai">Компания НТР</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Спикер о предстоящем вебинаре:</p>
<p>Обсудим преимущества и недостатки использования социальных сетей. Кратко опишем модель векторного пространства. Представим идеи мягкого косинусного cходства и синтаксических n-грамм. Обсудим применение методов машинного обучения к анализу текстов в социальных сетях. Опишем как профиль автора (пол, возраст) может быть автоматически определен на основе текстов в социальных сетях. Представим экспериментальные данные на различных текстовых данных.</p>
<p>Спикер также рассказал о стипендиальных программах Национального Политехнического института г. Мехико и пригласил подавать заявки.</p>
<p><span style="font-weight: 600;">Видео:</span> <a href="https://youtu.be/L1BquAAOkH8" target="_blank" rel="nofollow noopener">https://youtu.be/L1BquAAOkH8</a></p>
<p><span style="font-weight: 600;">Презентация:</span> <a href="https://drive.google.com/file/d/1hjlhc0sz4-3TcKGQGFF2VyEV-dBCNhWE/view?usp=sharing" rel="nofollow">https://drive.google.com/file/d/1hjlhc0sz4-3TcKGQGFF2VyEV-dBCNhWE/view?usp=sharing</a><br />
<a href="https://drive.google.com/drive/u/1/folders/1mSowl84BsDgqLdaIQK2-D1IaI-s94ngU" target="_blank" rel="nofollow noopener">‍</a></p>
<p><span style="font-weight: 600;">[00:00:00] [Начало записи]</span></p>
<p><span style="font-weight: 600;">Модератор: </span>Сегодня с нами Григорий Сидоров. Прямая трансляция из Мехико-Сити. И Григорий Сидоров будет рассказывать нам об автоматическом профилировании авторов в соцсетях. Те вещи, которые мне больше всего интересны – это разного рода метрики, который Григорий и его команда вводили на пространствах авторов, как я понимаю. Мы послушаем и узнаем, что там такое на самом деле.</p>
<p>Григорий, может быть, пока не началось, вы начнете с рассказа о том, что у вас за группа по вычислительной лингвистике в Политехническом университете Мехико.</p>
<p><span style="font-weight: 600;">Григорий Сидоров:</span> Добрый день, наверное, добрый вечер! У нас еще утро. По поводу нашей группы. Про центр я чуть-чуть попозже, наверное, расскажу. Наша группа состоит из трех сотрудников. Все трое из России: я, Александр Феликсович Гельбух, который является начальником нашей лаборатории. И Ильдар Батыршин. Не знаю, слышали ли вы про такого. Он из Казани.</p>
<p>Может быть, вы даже захотите их потом пригласить на свой семинар. Я думаю, будут говорить про другие темы, что будет вам всем интересно. Говорить они будут, конечно, тоже по-русски, никаких вопросов нет.</p>
<p>Вот такая у нас небольшая группа. У нас сейчас довольно много студентов разных уровней: мастерские студенты, докторские студенты. Большинство из Мексики, но есть из других стран. Человек шесть-семь у нас сейчас из Пакистана. Из России приглашаем, но народ не очень откликается.</p>
<p>Хотя есть такие возможности. Правительство Мексики, как это ни странно, платит стипендию иностранцам за то, чтобы они здесь учились. Где-то на мастерском уровне это 500 долларов в месяц, а на докторском уровне – 750 долларов в месяц. Конечно, не очень большие деньги, но прожить здесь вполне можно.</p>
<p>И большой плюс нашей лаборатории в том, что вы можете заниматься теми темами, которые вас интересуют. Не то, что у нас есть один проект, и обязательно в этом проекте делать какой-нибудь винтик. Что для студентов хорошо, что практически нет&#8230; Все, что связано с обработкой языка – добро пожаловать. Не знаю, есть ли интересующиеся. Можете с нами связаться.</p>
<p><span style="font-weight: 600;">Модератор:</span> Я подозреваю, что бо́льшая часть участников сейчас существенно в постстуденческом возрасте. Я думаю, все уже собрались. И я еще раз представляю Григория Сидорова и передаю ему слово. Он будет рассказывать про автоматическое профилирование авторов в соцсетях, то бишь про _____ (00:04:04) лингвистику. Пожалуйста, Григорий. Как вам правильнее задавать вопросы: после того, как вы расскажете, в ходе?</p>
<p><span style="font-weight: 600;">Григорий Сидоров:</span> Можно и в ходе. Народу немного.</p>
<p><span style="font-weight: 600;">Модератор:</span> Я думаю, текстовым образом можно задавать вопросы прямо в ходе презентации. У нас для этого есть чат. У нас есть для этого пункт Q&amp;A, «Вопросы и ответы». А если хочется задать человечьим голосом, то можно поднять руку. И в тот момент, когда&#8230;</p>
<p><span style="font-weight: 600;">Григорий Сидоров:</span> Правда, когда я показываю презентацию, я вопросов, наверное, не вижу. Не знаю.</p>
<p><span style="font-weight: 600;">Модератор:</span> Я буду пытаться ворваться и вежливо добавить вопросы в текущий разговор.</p>
<p><span style="font-weight: 600;">Григорий Сидоров:</span> Да.</p>
<p><span style="font-weight: 600;">Модератор:</span> Хорошо. Тогда я полностью передаю бразды. Григорий, ваше слово.</p>
<p>(00:05:03)</p>
<p><span style="font-weight: 600;">Григорий Сидоров:</span> Я уже начал. У меня был такой план немножко рассказать о своей лаборатории. В этом смысле, если у вас есть молодые сотрудники, вы можете их к нам присылать. Они могут работать над вашими темами, получая здесь стипендию. Это такая возможность.</p>
<p>Сейчас мы находимся на введении. Потом я немножко поговорю о социальных сетях. Наверное, какие-то общие слова. Расскажу о модели векторного пространства. Прощу прощения, если кто-то&#8230; Наверное, большинство это знает. По моему опыту, это что-то, что обычно выпадает из поля зрения методов машинного обучения. Это принимается как должное.</p>
<p>Потом я расскажу еще о паре идей, связанных с синтаксическими n-граммами (00:06:05) и с мерой мягкого косинусного сходства. Потом немножко поговорю о профиле авторов в социальных сетях. Представлю экспериментальные результаты. У меня есть много таблиц. Наверное, я покажу какие-то таблицы, чтобы мы имели представление о том, что там происходит.</p>
<p>Все-таки еще раз о нашем центре. Это здание нашего центра. Это довольно крупный центр. Там около 50 научных сотрудников, 12 лабораторий. Покрывается все computer science, то есть hardware, software. Если кто-то надумает, то можете распространять эту информацию в университетах. Мы заинтересованы в студентах, особенно в хороших студентах. Чем больше кандидатов, тем нам лучше. Тогда не буду особо больше говорить про наши программы, мастерские и докторские. Если кто интересуете, можете мне написать.</p>
<p>Теперь немножко фактов про социальные сети. Для тех, кто занимается обработкой языка, социальные сети – это просто золотое дно. Люди пишут, люди пишут много, люди пишут на разные темы. Раз пишут, то это тексты. Раз это тексты, их можно изучать, исследовать. И очень много данных. Для современных методов обработки это, конечно, необходимая вещь.</p>
<p>Конечно, оттуда тоже происходит интерес фирм к социальным сетям: что пишут про мою фирму в данный момент, как узнать, что думают о моем продукте, насколько эффективна моя рекламная кампания. Все это можно пытаться автоматически вытаскивать из социальных сетей.</p>
<p><span style="font-weight: 600;">Модератор:</span> Григорий, можно вас попросить? У вас все время видно первый слайд.</p>
<p><span style="font-weight: 600;">Григорий Сидоров:</span> Тогда еще раз. Видно сейчас, лучше?</p>
<p><span style="font-weight: 600;">Модератор:</span> Да.</p>
<p><span style="font-weight: 600;">Григорий Сидоров:</span> Вы просто не забывайте сдвигаться на следующий слайд.</p>
<p><span style="font-weight: 600;">Модератор:</span> Я не забываю. Просто у меня была какая-то презенташка, но это был, наверное, другой способ представление. Хорошо. Вот о чем мы будем говорить. Вот это наш центр, про который я так много говорил. 50 сотрудников, все области computer science.</p>
<p><span style="font-weight: 600;">Модератор:</span> По-прежнему стоит сайт с agenda.</p>
<p>(00:09:20-00:10:27)</p>
<p><span style="font-weight: 600;">Григорий Сидоров:</span> Про социальные сети. Естественно, оттуда интерес фирм. Даже какие-нибудь медицинские фирмы вполне могут проверять эффекты, дополнительные эффекты своих лекарств, просто читая в социальных сетях, что вот я выпил ваше лекарство, а у меня потом болела голова. Это можно пытаться вытащить из социальных сетей.</p>
<p>Поэтому это для нас как исследователей совершенно неоценимый источник информации. А для нас как пользователей это, конечно, тоже что-то очень полезное.  Но, к сожалению, это что-то, что у нас отнимает очень большое количество времени. Это очень популярная вещь, все ей пользуются. Есть некоторые исследования, сто студенты, школьники проводят где-то 8 часов в день в социальных сетях, то есть это full-time работа. И конечно, это может сильно отвлекать.</p>
<p>Это новый способ взаимодействия людей между собой. Раньше если человек застенчивый, ему не так просто устанавливать контакты с другими людьми. В социальных сетях это почему-то гораздо проще. Пишет пост, сразу получает ответы, сразу у него есть много друзей, он себя чувствует гораздо лучше.</p>
<p>И в этом есть какая-то психологическая реальность. У меня есть знакомый, он все время пишет длинные, тщательно продуманные письма. В день может написать пять-шесть писем. А потом жалуется, что у него 100 тысяч непрочитанных сообщений. К сожалению, да. Я ему всегда говорю: «Возьми трубку и позвони человеку по телефону. Ты гораздо быстрее и эффективнее решишь все вопросы». Какая-то психологическая нагрузка в этом есть.</p>
<p>Конечно, есть преимущества в использовании социальных сетей. Этим легко пользоваться, устанавливаются контакты, можно общаться с огромным количеством людей. Можно очень быстро получить фидбэк, кто что о вас думает.</p>
<p>И, наверное, что тоже очень важно, очень легко померить, насколько вы успешны. У меня 100 тысяч последователей за мной следуют в сетях, и я сразу становлюсь очень важным  человеком. Или мне поставили 100 лайков, и я очень этим доволен, сразу вижу, что ой, как хорошо. Это тоже удовлетворяет какие-то наши психологические потребности.</p>
<p>Но у всего есть плюсы, естественно, и есть минусы. Анонимность. Мы никогда не знаем, о людях, которые говорят с нами в социальных сетях, правда ли это именно они. Каждый может придумать себе географию, ник и просто говорить в социальных сетях от этого имени. И все это будет неправдой.</p>
<p>По большому счету, конечно, социальные сети – это иллюзия. Это не жизнь. Нельзя начинать проводить свою жизнь в социальных сетях. Может, конечно, оно и приятно, но надо себя ограничивать. Нельзя пойти, попить виртуального пивка с друзьями в социальных сетях. Конечно, они друзья, а одолжат ли они вам деньги – тоже большой вопрос.</p>
<p>Сейчас, как мы можем наблюдать, социальные сети находятся на пике. Это очень модно. Возможно, эта мода будет немножко проходить. Если сейчас каждый свой шаг люди пишут в социальных сетях, возможно, в какой-то момент&#8230; Я читал мнения психологов, что, возможно, это будет считаться не очень приличным – каждый свой шаг расписывать в социальных сетях. Увидим, к чему все это придет.</p>
<p>(00:15:05)</p>
<p>В общем, что можно сказать? Да, социальные сети – это очень полезный инструмент. Для нас это бесценный источник информации. Если вы ими пользуетесь, надо этими пользоваться осторожно, не злоупотреблять. Особенно если сталкиваетесь с какими-то негативными явлениями, надо просто забанить неприятных вам людей и не расстраиваться по этому поводу. Говорят, что даже доводят людей до самоубийства в социальных сетях, устраивают травлю. С этим надо, конечно, бороться волевыми усилиями. Это довольно несложно.</p>
<p>Теперь перейдем к модели векторного пространства. Это довольно традиционная вещь, просто, думаю, что будет полезно. Содержание моего доклада в том числе можно прочитать в этой книжке. Конечно, я сейчас буду очень кратко говорить. В книжке это расписано несколько подробнее.</p>
<p>В этой книжке две основные части. В первой части я буду рассказывать основные идеи про векторное пространство, а во второй части книжки буду рассказывать про синтаксические n-граммы. Эту идею я вам вкратце расскажу сегодня.</p>
<p>Эта книжка вышла в Springer в 2019 году. Ровно так же книжка вышла по-русски в 2018 году в издательстве Московского университета. Если кого-то интересует, можете мне написать, я ее положу. Пока еще я ее не выложил, все руки не доходят выложить ее по-русски. По-английски тоже могу ее предоставить, не окончательную версию, а авторский вариант. Почти то же самое.</p>
<p>У вас семинар по машинному обучению. Я вам предлагаю на минуточку задуматься, что вообще могут делать компьютеры. Могут вычислять, складывать, вычитать числа, очевидно. Могут применять какие-то алгоритмы. Алгоритм – это последовательность шагов. Я говорю: «Сделай это, это, это», – компьютер делает.</p>
<p>Могут применять какие-то эвристики. Эвристики – это такие правила. Особую роль здесь играют  bio-inspired, типа генетические алгоритмы. Есть целая группа похожих алгоритмов. Все они являются на самом деле алгоритмами оптимизации. И в какой-то момент, в конце 1990-х – начале 2000-х даже считалось, что искусственный интеллект – это вот эти эвристические алгоритмы, потому что они помогают нам принимать решения. Но потом пошли немножко дальше. И сейчас считается, что искусственный интеллект – это что-то связанное с машинным обучением.</p>
<p>Если наша проблема – это обработка языка или обработка изображений, что могут делать компьютеры в этом смысле? Я не могу придумать алгоритма, последовательности шагов, который будет сам по себе обрабатывать язык и вести себя как человек. Выяснилось, что это невозможно.</p>
<p>Что же тогда могут делать компьютеры в этом отношении? И ровно тот же самый вопрос: машинное обучение о чем? О чем машинное обучение, если я попрошу вас сказать одним словом? Каждый может записать себе на бумажке, если хочет, свой ответ. А я вам сейчас скажу свою точку зрения по этому вопросу. Машинное обучение – это о сходстве объектов. Все машинное обучение – это о сходстве объектов.</p>
<p>Единственное, что могут делать компьютеры, когда мы не говорим о точных алгоритмах или об эвристических алгоритмах – это вычислять сходство разных объектов. Сходство объектов.</p>
<p>И следующий вопрос. Хорошо, вот компьютеры могут вычислять сходство объектов. Как же они могут это делать? Тут я немножечко говорю про искусственный интеллект.</p>
<p>(00:19:58)</p>
<p>Сначала, в 1960-1970-е годы была идея, что искусственный интеллект – это алгоритм. Потом решили, что искусственный интеллект – это знания, и тогда был большой интерес к так называемым экспертным системам, к системам, основанным на знаниях. Казалось, пустячок: посадим эксперта, вытащим из него знания, и система сможет это обрабатывать. Оказалось, что очень сложно вытащить эти знания, они всегда противоречивые.</p>
<p>Потом эта мода на экспертные системы  прошла, и в моду в конце 1990-х – начале 2000-х вошли оптимизационные задачи, bio-inspired алгоритмы, основанные на каких-то природных феноменах, как генетические алгоритмы. Там есть ant colony, particle swarm optimization, такого типа алгоритмы.</p>
<p>Сейчас пришли к тому, что big data и machine learning. Я считаю, что это практически одно и то же, потому что machine learning основан на больших данных. «Большие данные» – это такой термин, который опять же сейчас в моде.</p>
<p>Когда мы говорим о машинном обучении, как вы наверняка знаете, мы можем говорить о supervised и unsupervised. Supervised – когда нам известны про каждый объект его ярлыки, то есть к какому классу он относится, и unsupervised – когда нам это неизвестно. Очевидно, что в supervised машине гораздо легче обучаться, чем в unsupervised.</p>
<p>Теперь ключевой вопрос: и как же мы должны вычислять сходство наших объектов? Модель векторного пространства представляется чуть ли не единственным способом для этого. Мы выбираем какие-то характеристики. Эти характеристики будут иметь значение. И в конце концов представляем каждый объект как вектор значений наших характеристик. И теперь эти векторы мы уже можем легко сравнивать, чуть позже я скажу, как. Это модель, то есть мы абстрагировались от многих-многих других характеристик наших объектов и используем только выбранные характеристики.</p>
<p>Является ли эта модель объективной или субъективной? Она является и тем, и другим. Объективна, потому что она отражает реальность. Но, с другой стороны, эта модель субъективна, потому что мы выбрали какие-то характеристики. Мы могли бы выбрать другие характеристики. То есть модель объектива и субъективна.</p>
<p>Мы выбираем характеристики. Мы выбираем типы значений, которые могут иметь эти характеристики. _____ (00:23:21) как характеристики, то мы можем  использовать разные типы значений: булеановские или TF-IDF.</p>
<p>И еще важный момент, что мы выбираем шкалы значений. Мы можем мерить вес в тоннах, а можем мерить вес  в килограммах, и наши значения будут очень-очень различны.</p>
<p>Это все части нашей модели векторного пространства. Мы уже сказали, что она модель. Ясно,  откуда там взялись векторы. Почему это пространство? Векторы имеют явную геометрическую интерпретацию. Здесь можно наблюдать, что всегда приводится в книгах про машинное обучение. Еще раз. Мы имеем векторное пространство из двух измерений: одно измерение, второе измерение. Наши векторы имеют два элемента.</p>
<p>И вопрос: в этом векторном пространстве, когда наш объект является точкой&#8230; Это наш один объект, наш другой объект, еще один какой-то объект векторного пространства. В двух измерениях это легко представить. Когда n измерений представить это нельзя, но это ровно то же самое. И вопрос: как же мерить сходство объектов в векторном пространстве?</p>
<p>(00:24:55)</p>
<p>Есть две основные идеи. Здесь я говорю об идее cosine similarity, то есть косинусного сходства. Идея, что надо мерить угол между двумя векторами, между двумя стрелочками. И интуиция, что если вектора идут в одном направлении, то они похожи. А если они идут в разных направлениях, то они различны. Вот такая идея мерить сходство.</p>
<p>И очень простая формула. Здесь у нас dot product, а здесь мы делим на длину вектора, то есть приводим все вектора к единичным векторам. Это вещь, необходимая для измерения угла. Длина вектора – это не что иное как теорема Пифагора. Вот это вектор, это один катет, это другой катет. И это не что другое как значение наших характеристик. Это квадратный корень из произведения квадратов для нашего вектора. Мы получаем его длину. А dot product – здесь мы перемножаем соответствующие элементы наших векторов. Очень простая формула.</p>
<p>И другое, что здесь я не говорю – это просто эвклидово расстояние. Здесь мы хотим померить вот такое расстояние. И тоже здесь мы не идем дальше теоремы Пифагоры. У нас есть такой треугольник, и мы хотим померить эту гипотенузу. Этот катет – просто разница между этим значением и этим значением. Так делаем для n измерений.</p>
<p>Здесь я хотел бы отметить интересную вещь, что обычно эвклидово расстояние применяется без нормализации, то есть без приведения векторов к единичным векторам. Наверное, это все-таки не очень правильно. Если вы пользуетесь эвклидовым расстоянием, я рекомендовал бы вам делать нормализацию.</p>
<p>Простой пример. Я могу взять вектор, умножить все его значения на два и посчитать сходства этих векторов. Эвклидово расстояние будет довольно большим. А на самом деле это один и тот же вектор, просто разной длины.</p>
<p>Вот машинное обучение. Как мы знаем, в чем состоит машинное обучение – это когда нам дано какое-то векторное пространство, мы должны разделить наши классы, классы наших объектов, найти гиперплоскость, то есть каких их разделить наилучшим образом. В векторном пространстве алгоритмы машинного обучения ищут, как нам разделить наилучшим способом наши объекты. Еще раз подчеркну, в векторном пространстве.</p>
<p>Теперь, если мы работаем с текстами&#8230; Опять же, думаю, что это вам известно, но здесь я довольно быстро проговорю. Когда мы работаем с текстами, мы можем в качестве характеристик&#8230; Мы сказали: хотим строить векторное пространство, будем выбирать характеристики. В качестве характеристик можем выбирать, самое простое, слова. Тогда у нас получается модель bag of words, то есть «мешок слов». И в качестве значений мы можем выбирать двоичные значения, частоты слов.</p>
<p>Какая идея за частотой слов? Что частотные слова более важные. Это обычно так, за исключением, как мы знаем, стоп-слов, то есть вспомогательных слов, грамматических слов типа предлогов, в других языках артиклей, вспомогательных глаголов и так далее. У них всегда большая частота, но для многих задач они не годятся. Опять же, тут надо осторожно. Это нам не очень полезно для семантического анализа текстов. Но если мы хотим, скажем, анализировать стиль автора, то там такие слова нам наоборот могут быть очень полезны. Даже есть методы, которые говорят, что надо выбирать n-граммы, сделанные только из служебных слов. Что такое IDF, наверное, я сейчас не буду говорить.</p>
<p>(00:30:00)</p>
<p>Тут пример – два текста. Мы получил наши характеристики, наши измерения. И этот текст переводится в такой вектор, этот текст переводится в такой вектор. Мы видим, что здесь это слово повторилось два раза, здесь частота – два. Слово № 3 в этом тексте отсутствует, здесь ноль. Такой перевод наших текстов в векторное представление.</p>
<p>Есть какие-то варианты. Может быть, надо делать какую-то предобработку, то есть перевести все слова в нижний регистр. Может быть, использовать слова вместе с их грамматическим ярлыком. То есть cars – существительное. Может быть, проделать лемматизацию. Зависит от нашей задачи. Обычно лемматизация помогает.</p>
<p>Можно в качестве характеристик&#8230; Мы использовали только слова. Возможный подход. И всегда, когда мы работаем над какой-то задачей, наша первая идея должна быть: попробуем-ка мы «мешок слов». С этим потом можно сравнивать.</p>
<p>Можно использовать в качестве характеристик n-граммы слов, то есть 2-граммы, 3-граммы. Просто три идущих подряд слова. Такие традиционные n-граммы. Я немножко попозже расскажу о синтаксических n-граммах. Это были слова.</p>
<p>Другой подход – использовать n-граммы символов. My name is John. «My», «y_» – будет следующая характеристика. И «_n» будет следующая характеристика. И так далее. 2-граммы, 3-граммы слов.</p>
<p>Выяснилось, что почему-то 3-граммы слов работают очень хорошо для очень многих задач. Если вы будете сравнивать «мешок слов», то всегда рекомендуется сравнить символьными 3-граммами. Всегда. Почему? Говорят, что они выхватывают и лексическую, и грамматическую информацию. Вот такое объяснение дается. Это n-граммы символов.</p>
<p>Про значения я уже что-то сказал. Про IDF, я думаю вы знаете. Идея IDF, Inverse Document Frequency, что если у меня есть коллекция документов, то слова, которые встречаются во всех документах, не очень мне полезны. В этом идея Inverse Document Frequency. Слова, которые встречаются в одном документе, мне полезны. В каком смысле? Если придет какой-то запрос, то я точно знаю, какой документ выбрать. А если это слово запроса встречается во всех документах, то мне совершенно не нужно. Поэтому я эти документы буду как-то наказывать.</p>
<p>Что можно сказать о современных подходах? Современные подходы – это применение нейронных сетей разных архитектур. Все идеи этих нейронных сетей основываются, как это ни странно – во всяком случае, в лингвистике – на таком утверждении, высказанном еще в 1957 году, что узнаете слово по словам, которые его окружают. То есть по контексту. Практически контекст определяет слово. И все современные подходы как раз анализируют контексты слова.</p>
<p>В некотором смысле можно сказать, что дистрибутивная семантика была предтечей всех этих нейронных сетей. Дистрибутивная семантика говорит: мы будем строить векторное пространство и в качестве характеристик будем брать слова, которые находятся в нашем ближайшем контексте. И потом можно делать все, что можем делать с векторным пространством. Сейчас для этого используются нейронные сети.</p>
<p>(00:34:55)</p>
<p>Идея в том, что сложная нейронная сеть может найти такие шаблоны, которые мы сами найти не можем. В этом смысле машина может работать даже лучше, чем мы сами можем обрабатывать текст.</p>
<p>Началось это все на уровне слов. Word2Vec в 2013 году. Идея простая, как мы теперь понимаем. Мы берем нейронную сеть. Там есть разные подходы, но, грубо говоря, у нас есть контекст, и мы хотим предсказать вероятность слова. Мы строим нейронную сеть. У нее предпоследний уровень, уровень до того, как она будет принимать решение. Скажем, было 300 нейронов. И мы берем значения этих 300 нейронов, и у нас получается вектор из 300 чисел. И мы эти 300&#8230; Тренируем это для каждого слова. И каждому слову у нас теперь соответствует вектор из 300 различных измерений.</p>
<p>Опять же, потом выяснилось, что это очень интересно моделирует семантику слов. Зная геометрические свойства этих векторов, что если от Франции отнять Париж и прибавить Лондон, то получится Англия, такого типа. Если от короля отнять мужской и прибавить женский, то получится королева. Получится не в точности, но вектор, наиболее похожий на вектор королевы, будет после такого сложения, вычитания значений этих векторов.</p>
<p>Word2Vec,  потом появились fastText, GloVe. Это идея, что словам соответствуют векторы. И еще очень полезное свойство этих векторов. В чем проблема традиционного векторного пространства? В том, что оно очень разреженно, очень много нулей. А эти вектора практически всегда ненулевые.</p>
<p>И потом от уровня слова мы, естественно, переходим к более крупным единицам, как Universal sentence encoder. Он кодирует таким образом предложения. ParagraphToVec кодирует таким образом абзацы.</p>
<p>И в конце концов, следующий логический шаг – мы переходим к целым текстам. Вместо целых текстов у нас получаются какие-то векторы. Это то, что делают сейчас современные Transformers, дополненные механизмом внимания типа BERT, GPT-II и другими. Выяснилось, что в очень многих задачах обработки языка все эти Transformers работают значительно лучше, на 5-10% лучше, чем традиционный machine learning, когда мы сами выбираем характеристики  и что-то с этим делаем.</p>
<p>Теперь, что мы должны делать, если мы хотим заниматься обработкой языка? Опять же, может быть, вы уже все это знаете и всегда это применяете. Но повториться никогда не вредно. Будем говорить о supervised machine learning.</p>
<p>Наш первый шаг – мы должны сформулировать нашу проблему как проблему классификации. Скажем, если у нас проблема определения авторства, то как все сформулировать как проблему классификации? Наши классы будут авторы. Мы обучаем систему. Мы знаем, какие тексты соответствуют каким авторам. Пришел новый текст, кто его автор, к какому классу он _____ (00:39:28).</p>
<p>После этого нам надо готовить корпус, то есть собирать данные. Естественно, чем больше, тем лучше. Опять же, если потом мы его должны размечать и размечать вручную, то, может быть, слишком большой корпус нам тоже не подходит для разметки.</p>
<p>(00:39:52)</p>
<p>Мы размечаем корпуса в зависимости от проблемы. В случае определения авторства никакой особой разметки не требуется. Просто достаточно знать, какому автору какой корпус соответствует.</p>
<p>Следующий наш шаг – мы должны начать строить нашу модель векторного пространства. Но, может быть, перед этим мы можем какие-то элементы удалить. Мы можем удалить стоп-слова на этом этапе. Тогда они уже не будут входить в нашу модель векторного пространства, даже если мы возьмем n-граммы. Они уже получатся без служебных слов. Зависит от нашей проблемы, хотим мы это делать или не хотим. Потом мы выбираем наши модели, выбираем, какие характеристики.</p>
<p>Потом мы опять можем отфильтровать. У нас есть наш набор характеристик. Очевидно, можно выбросить все характеристики. Частота, скажем, один – малоинформативно.</p>
<p>Наш следующий шаг опциональный, необязательный. Можно применить модели трансформации нашего векторного пространства. Есть пространство, мы можем применить latent semantic analysis, principal component analysis. И то, и другое нам трансформирует наше векторное пространство и сделает новое векторное пространство с идеей, что это новое векторное пространство лучше ложится на наши данные. Потом мы должны выбрать соответствующе алгоритмы классификации, то есть Naive Bayes, Support Vector Machines, Random Forests. То есть какие-то традиционные алгоритмы классификации.</p>
<p>Лет 5-10 назад это было самое-самое, такой процесс обработки. Сейчас уже надо делать это и еще пробовать Transform. После этого надо делать эксперименты. Современная компьютерная лингвистика – это практически эмпирическая наука. Да, мы выбрали какие-то характеристики. Эксперимент покажет, насколько эти характеристики хороши, стоит ли применять LSA или стоит ли применять PCA.</p>
<p>И наконец, последний этап – мы хотим сравнивать с бейслайнами. Бейслайны – это какие-то самые очевидные методы или самые глупые методы. Статистический бейслайн – это явный бейслайн. А если мы хотим еще сравнивать, я уже сказал, что стоит всегда сравнить с bag of words model и использовать 3-граммы символов. С какими-нибудь традиционными классификаторами: Naive Bayes или SVM. И если мы выбрали какие-нибудь хитрые характеристики, и у нас получилось лучше, чем бейслайн, то уже про это можно писать какую-то статью. Это уже научное открытие.</p>
<p>Вот некоторые примеры задач обработки естественно языка, которые мы можем решать. Про какие-то я уже говорил. Все они основаны тоже на вычислении сходства, даже Information Retrieval. У нас коллекция документов, пришел запрос. Задача выбрать, какой документ наиболее похож на этот запрос, похож в некотором специфическом смысле. Определение плагиаризма. Насколько текст, который пришел, похож на тексты, которые у нас уже есть. И все это мы должны сформулировать как проблему классификации.</p>
<p>Теперь быстренько пару идей, которые мне представляются довольно новыми. Синтаксические n-граммы. Когда я кому-то говорю: «Синтаксические n-граммы», – мне говорят: «А, ты имеешь в виду n-граммы из тэгов частей речи». А я говорю: «Нет, это совсем не тэги частей речи».</p>
<p>Идея синтаксических n-грамм. Это вот традиционные n-граммы: John likes, likes red, red apples. Идея синтаксических n-грамм: мы строим синтаксическое дерево для фразы и потом будем брать элементы, просто следуя путям в этом синтаксическом дереве. Такая простая идея.</p>
<p>(00:45:05)</p>
<p>Единственное, что нам здесь нужно&#8230; Вот это наше дерево, и отсюда мы будем строить наши n-граммы. Единственное, что нам нужно здесь отметить – что делать в случае, когда у нас здесь происходит разветвление. Предлагается особый синтаксис: здесь ставятся квадратные скобки, а здесь ставится запятая: likes [John, apples]. Это нам необходимо, потому что у нас может быть последовательность из тех же самых слов. Это нам необходимо, чтобы разделить эти два случая. И запятая нам нужна, потому что если у нас есть, как здесь, «красные яблоки», то запятая говорит, что «Джон» отдельно, а «красные яблоки» – это последовательность символов. Я их назвал continuous и non-continuous. Такая идея.</p>
<p>Очевидно, мы можем строить n-граммы из разных элементов. Мы можем строить их из слов или из лемм. Мы можем строить их из тэгов частей речи. У нас будет существительное, множественное число, мужской род. Можем строить их из тэгов синтаксических отношений. То есть у нас подлежащее, сказуемое, дополнение. Из таких тэгов мы тоже можем строить синтаксические n-граммы.</p>
<p>Даже, наверное, мы можем строить их из символов. Сначала мы должны построить самые длинные n-граммы из слов, а потом из этих слов уже выбирать, строить n-граммы из символов. И в конце концов, можно строить какие-то смешанные n-граммы.</p>
<p>Здесь пример, что у нас получилось. Мы решали задачу определения авторства. Выбирали самые частотные в данном случае 2-граммы, 3-граммы, 4-граммы, 5-граммы из символов. И у нас получались вот такие результаты. А когда мы использовали синтаксические n-граммы Syntactic relations tags, то есть из тэгов синтаксических отношений, то у нас получалось несколько лучше 2-грамм и 3-грамм.</p>
<p>Следующая идея, которую я хотел бы вам вкратце рассказать – это Soft Similarity. Идея, что если у нас есть характеристики, то они между собой могут быть похожи. Традиционный косинус это просто не определяет. Если разные характеристики, они разные. Идея, как принять во внимание сходство этих характеристик. Вот это пример, что не определяется.</p>
<p>И ответ очень простой. Эта формула очень похожа на формулу традиционного косинуса, только она теперь не для каждой пары характеристик, она для всех против всех характеристик. И плюс сюда добавляется какая-то матрица сходства между собой этих характеристик. И нормализуем мы, очевидно, на такие же значения.</p>
<p>Мы это попробовали для задачи Question Answering System. Это было тоже какое-то международное соревнование. Это было тоже еще в 2014 году у нас. В качестве меры сходства мы использовали расстояние Левенштейна, то есть за сколько операций мы можем одну строку превратить в другую. И у нас получилось, что с soft cosine наши результаты получились на 5% лучше, чем традиционные.</p>
<p>Вот такая идея: принять во внимание сходство характеристик между собой в модели векторного пространства.</p>
<p>Теперь уже чуть-чуть про профиль автора. Профиль – это может быть его возраст, может быть пол, могут быть какие-то психологические характеристики автора, может быть его родной язык.</p>
<p>(00:50:00)</p>
<p>Русские будут писать по-английски по-другому, чем мексиканцы или китайцы. И это можно  опять же выяснить. Были тоже такие международные соревнования, конкурсы таких систем. Кстати, очень рекомендую всем участвовать в таких соревнованиях. Это интересно.</p>
<p>Очевидно, что это проблема классификации. Если мы говорим о поле, то это мужской, женский. Два класса. У нас есть тексты, написанные мужчинами, есть тексты, написанные женщинами. Пришел новый текст. В какой класс он относится?</p>
<p>Где это можно применять? В криминалистическом анализе, в рекламе, в безопасности. Конечно, с оговорками, потому что ответы всегда вероятностные, то есть никогда мы не можем 100% сказать, что именно так.</p>
<p>Вот были международные соревнования. Там можно получить, по крайней мере, данные для своих экспериментов. Они уже размечены. И потом можно сравнить результаты своей системы с тем, что было раньше.</p>
<p>Вот какие-то не очень свежие результаты. Тут было интересно, что они выяснили, что мужчины чаще используют прилагательные, артикли. А женщины используют местоимения, отрицания, чаще говорят в настоящем времени. Это такие стилистические черты.</p>
<p>Другой тип профиля – по возрасту. Очевидно, что нельзя говорить 31 или 32, там мы не определим. Поэтому берутся возрастные интервалы. Вот тоже были какие-то корпуса, какие-то данные.  И у них получились довольно хорошие результаты на этих корпусах.  С учетом того, что это ранги возрастов, это довольно хорошие результаты. У нас пять классов, то есть наш бейслайн, случайный бейслан был бы 20%. Здесь получается 75, то есть довольно хорошо.</p>
<p>И методы. Можно мерить стиль или можно мерить содержание. Если кто-то говорит про прически, то скорее это будут женщины, чем мужчины. Такая идея, по содержанию пытаться определить. Или определить по стилю письма.</p>
<p>Это пример, если мы будем говорить по содержанию и будем говорить о рангах возрастов. От 10 до 20 лет люди о чем говорят? О математике, о домашнем задании, о сестре, о матери, как все мне надоело, кто-то дурак. А когда ему уже стало от 20 до 30, он уже студент, о чем говорят эти люди в социальных сетях, пишут в блогах? Семестр, квартира, пьяный, пиво, студент, университет, бар. А когда ему уже за 30, о чем начинает говорить типичный блогер? О браке, о налогах, о демократии, о детях, о работе.</p>
<p>Если по содержанию, то вот так примерно можно определять. То есть два направления анализа. Это анализ по содержанию письма. Можно определять по стилю письма.</p>
<p>И наверное, я вам еще немножко покажу наши результаты для определения профиля авторов. Мы взяли четыре разных корпуса: Social Media, Hotel Reviews, Blogs, Twitter. Все это мы взяли с международного соревнования PAN. Было много подобных данных.</p>
<p>И два набора экспериментов. Один cross-genre, то есть когда мы тренируемся на текстах одного жанра, а делаем эксперименты на текстах другого жанра.</p>
<p>(00:55:03)</p>
<p>И  the same genre, когда мы тренируемся и делаем эксперименты на текстах того же самого жанра. Вот такие у нас были ранги возрастов, такие корпуса, столько текстов. В общем, не очень много текстов.</p>
<p>Мы применяли традиционные n-граммы, пытались применять синтаксические n-граммы, традиционные n-граммы part of speech, n-граммы символов и разные комбинации n-грамм. Это рассказываем. Мы пробовали эти классификаторы. Отбирали характеристики по Information-Gain и использовали 10 folds cross-validation. И мы считали точность системы. Результаты у нас были порядка 60%, что для рангов возраста, в общем, не так плохо.</p>
<p>Можно наблюдать, что для того же самого жанра результаты получаются лучше в среднем, чем для разных жанров. Хотя не всегда. Twitter  и блог тоже дал довольно хорошие результаты.</p>
<p>Здесь мы пользовались синтаксическими n-граммами по тэгам грамматических категорий. Тоже довольно неплохие результаты получились для рангов возрастов. Я прошу прощения, это все для gender. Для gender результаты не сильно хорошие. Наш бейслайн – 50%. То есть у нас получается где-то 60. Да, лучше, статистически значимо, но не сильно лучше.</p>
<p>Здесь многие результаты очень близки к бейслайну, здесь получилось 60%. То есть задача довольно сложная, особенно учитывая, что текстов мало. Синтаксические n-граммы нам дали несколько лучше результаты.</p>
<p>Это cross-genre. Можем заметить, что получилось несколько хуже, что вполне объяснимо. Когда мы тренируемся на текстах одного жанра, получаем хуже.</p>
<p>Вот такие таблицы. Это уже для возраста. Когда наш бейслайн где-то 20%, здесь получается 40. Не так плохо. Система что-то находит, но нельзя сказать, что работает очень хорошо. Тоже для возраста. С синтаксическими n-граммами здесь было даже несколько хуже, чем с лексическими элементами. С лексическими элементами здесь проще – текстов все-таки слишком мало.</p>
<p>Наверное, на этом можно закончить мою презентацию. Не знаю, есть ли вопросы.</p>
<p><span style="font-weight: 600;">Модератор:</span> Григорий, спасибо. Коллеги, есть вопросы к Григорию? Я напоминаю, можно через чат, можно через&#8230; Итак, Александр Толмачев. Пожалуйста, Александр.</p>
<p><span style="font-weight: 600;">Александр Толмачев:  </span>Добрый день! Хотел поинтересоваться. Когда у нас будет присутствовать много авторов, либо будут присутствовать новые авторы, что бы вы делали в таком случае?</p>
<p>(00:59:57)</p>
<p><span style="font-weight: 600;">Григорий Сидоров:</span> Наверное, я думаю, все то же самое. У вас есть корпус. И даже если в нем много авторов, наверное, вы будете делать то же самое. Вот те эксперименты, которые я вам показывал, что синтаксические n-граммы дали лучший результат – там было три автора. Сейчас мы делали эксперименты немножечко в другом аспекте. Делали эксперименты, меняется ли стиль автора в процессе времени. Тоже задача классификации. Разделяется на несколько этапов его творчество. Там было 11 авторов.</p>
<p>В социальных сетях много авторов. Делать то же самое, наверное, да. Что делать? Выбирать характеристики. Гипотеза, что да, стиль автора все-таки уникален. Пробовать разные характеристики. Я уже говорил, что если определение авторства, то предлагалось использовать 8-граммы из служебных слов. Выкинуть все другие слова, строить 8-граммы только из служебных слов. Пробовать комбинации разных характеристик: вот это, добавить туда еще что-то, еще что-то.</p>
<p>Если мы занимаемся анализом авторов, то надо выбрасывать слова, которые четко связаны с какими-то темами. Наверное, надо выбрасывать имена собственные, надо выбрасывать названия.</p>
<p>Я думаю, что все то же самое. Я думаю, что в PAN были такие соревнования. Я думаю, что мы в них прямо не участвовали. Опять же, тогда можно посмотреть, что там писали люди, какие у них получились результаты. Поискать этот PAN. Я думаю, что да, традиционный подход – искать правильные характеристики и проверить, какие характеристики вам будут давать лучшие результаты. Это называется даже feature engineering, инженерия характеристик.</p>
<p><span style="font-weight: 600;">Модератор:</span> Григорий, _____ (01:02:36).</p>
<p><span style="font-weight: 600;">Александр Толмачев: </span>Спасибо.</p>
<p><span style="font-weight: 600;">Модератор:</span> С вашего позволения дополню то, что вы говорили. Наши эксперименты в смежной области показывают, что для задач классификации с возрастанием количества классов, на которые надо классифицировать, все более и более выигрышными становятся вещи типа triplet loss.</p>
<p>Если у вас есть 10 классов, то вы можете любой классификатор учить. И классификатор на основе triplet loss будет работать примерно так же, с точностью до десятых долей процента. Если у вас несколько десятков классов, то triplet loss начинает обгонять. Если у вас сотни, тысячи, десятки тысяч классов, эмбединги на основе triplet loss покрывают, как Красноярский край Бельгию, то, что делает любой традиционный классификатор.</p>
<p>Поэтому чем больше у вас классов, тем больше будет преимущество triplet loss или аналогичных loss-функций над любым классическим классификатором, софтмаксовским и так далее. Поэтому если у вас больше сотни классов, по всей видимости, надо тренировать эмбединг, связанный с triplet loss.</p>
<p><span style="font-weight: 600;">Александр Толмачев: </span>Хорошо, спасибо. Очень полезно.</p>
<p><span style="font-weight: 600;">Модератор:</span> Через некоторое время мы опубликуем, тогда это можно будет почитать. Сейчас это еще не готово.</p>
<p>Коллеги, еще вопросы к Григорию? Дмитрий Меньшиков, пожалуйста.</p>
<p><span style="font-weight: 600;">Дмитрий Меньшиков: </span>Добрый вечер! Григорий, спасибо за доклад. Вопрос относительно классификации по возрастам. Вы там выделили несколько возрастных групп. Правильно ли я понимаю, что вы классифицировали в классическом понимании по этим классам?</p>
<p>(01:04:59)</p>
<p>Вопрос: смотрели ли вы confusion matrix? Мне просто любопытно, как легло распределение. Одно дело, когда мы ошиблись между группами, грубо говоря, 18-20 и 20-25 лет, и 18-25 и 65+.</p>
<p><span style="font-weight: 600;">Григорий Сидоров:</span> Да, правильно, конечно, всегда надо смотреть confusion matrix. Это полезная вещь. Я не помню, конкретно в том случае мы анализировали это или нет. У меня сейчас нет под рукой confusion matrix, поэтому не могу ответить на ваш вопрос. Но да, идея очень правильная, надо всегда смотреть confusion matrix.</p>
<p><span style="font-weight: 600;">Дмитрий Меньшиков: </span>Да, было бы очень интересно посмотреть.</p>
<p><span style="font-weight: 600;">Модератор:</span> Коллеги, пожалуйста, еще вопросы к Григорию. Григорий, у меня есть несколько вопросов. Первый вопрос. Почему, несмотря на то, что у вас задача классификации, вы стараетесь использовать эвклидовы пространства, а не гиперболические? Графы естественным образом вкладываются в гиперболические пространства. И любая задача классификации, по идее, должна лучше в гиперболическом пространстве с отрицательной метрикой решаться.</p>
<p><span style="font-weight: 600;">Григорий Сидоров:</span> Сложный вопрос.</p>
<p><span style="font-weight: 600;">Модератор:</span> Ладно.</p>
<p><span style="font-weight: 600;">Григорий Сидоров:</span> Я не готов ответить.</p>
<p><span style="font-weight: 600;">Модератор:</span> ОК. Еще вопрос. У вас в первой презентации, о которой вы говорили, упоминаются современные технологии: трансформеры и все. А там, где вы говорите про профили в социальных сетях, в основном классические методы типа Support Vector Machine и так далее. Вопрос. Вы пробовали использование синтаксических n-грамм с современными методами эмбединга, с теми же трансформерами или еще с чем-то? Если пробовали, то что получилось?</p>
<p><span style="font-weight: 600;">Григорий Сидоров:</span> Да, вопрос, конечно, интересный. Еще не пробовали, но да, такие планы действительно есть. С одной стороны, нам говорят, что трансформеры всю эту информацию уже получили. Они получили информацию о морфологическом анализе, о синтаксическом анализе. Говорят это. И какой-нибудь Кристофер Мэннинг пишет статьи, что они ищут, где там эти&#8230; Вот какая-то часть их характеристик, где там синтаксические характеристики. И как бы даже кто-то такое находит.</p>
<p>Я думаю, что все равно в этом смысле было бы интересно попробовать синтаксические n-граммы для трансформеров. Да, это пока в планах.</p>
<p><span style="font-weight: 600;">Модератор:</span> ОК. А когда вы строите синтаксические n-граммы, вы чем пользуетесь для их построения?</p>
<p><span style="font-weight: 600;">Григорий Сидоров:</span> Для английского мы пользуемся Stanford Parser. Для испанского у нас есть тоже система FreeLing. Он, кстати, и для русского работает, FreeLing. _____ (01:09:06) слышали.</p>
<p><span style="font-weight: 600;">Модератор:</span> ОК. А для русского вы бы рекомендовали FreeLing или что?</p>
<p><span style="font-weight: 600;">Григорий Сидоров:</span> Я очень давно на русском материале не работал, к сожалению, поскольку в Мексике у нас&#8230;</p>
<p><span style="font-weight: 600;">Модератор:</span> Не так много русского языка.</p>
<p><span style="font-weight: 600;">Григорий Сидоров:</span> _____ (01:09:27) все обязаны работать на испанском тексте. И чтобы лучше публиковаться, надо работать на английских текстах. Поэтому, конечно, для русского я сейчас не очень в курсе, какой синтаксический анализатор получше.</p>
<p><span style="font-weight: 600;">Модератор:</span> ОК, понятно. Хорошо.</p>
<p>(01:09:58)</p>
<p>Дмитрий Башкирцев отмечает, что для русского промоутят Natasha. Natasha – хороший парсер. Мы даже его, Дим, используем в другом проекте. Он хороший, но не идеальный.</p>
<p>Коллеги, пожалуйста, еще вопросы к Григорию. Если больше нет вопросов, Григорий, большое спасибо за выступление. И до новых встреч.</p>
<p><span style="font-weight: 600;">Григорий Сидоров:</span> Хорошо. Большое спасибо за приглашение. Рад был познакомиться.</p>
<p><span style="font-weight: 600;">[01:10:48] [Конец записи]</span></p><p>The post <a href="https://ntr.ai/webinar/nauchno-tehnicheskij-vebinar-avtomaticheskoe-opredelenie-profilya-avtorov-v-soczialnyh-setyah/">Научно-технический вебинар «Автоматическое определение профиля авторов в социальных сетях»</a> first appeared on <a href="https://ntr.ai">Компания НТР</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Научно-технический вебинар &#171;Идентификация автора исходного кода при помощи нейронных сетей&#187;</title>
		<link>https://ntr.ai/webinar/nauchno-tehnicheskij-vebinar-identifikacziya-avtora-ishodnogo-koda-pri-pomoshhi-nejronnyh-setej/</link>
		
		<dc:creator><![CDATA[Alexandra Koroleva]]></dc:creator>
		<pubDate>Mon, 09 Aug 2021 07:24:28 +0000</pubDate>
				<guid isPermaLink="false">https://ntr.ai/?post_type=ntr-web&#038;p=311</guid>

					<description><![CDATA[<p>Задача идентификации автора исходного кода, не смотря на свою нетривиальность, [&#8230;]</p>
<p>The post <a href="https://ntr.ai/webinar/nauchno-tehnicheskij-vebinar-identifikacziya-avtora-ishodnogo-koda-pri-pomoshhi-nejronnyh-setej/">Научно-технический вебинар «Идентификация автора исходного кода при помощи нейронных сетей»</a> first appeared on <a href="https://ntr.ai">Компания НТР</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Задача идентификации автора исходного кода, не смотря на свою нетривиальность, является значимой для прикладных областей: информационной безопасности и форензики, интеллектуальной собственности и противодействия плагиату. В докладе будут рассмотрены проблема деанонимизации автора исходного кода, различные подходы к ее решению, а также их эффективность в сложных и простых случаях идентификации.</p>
<p>‍</p>
<p><span style="font-weight: 600;">Запись прошедшего вебинара:</span> <a href="https://youtu.be/ndIuYaNUntQ" target="_blank" rel="nofollow noopener">https://youtu.be/ndIuYaNUntQ</a></p>
<p><span style="font-weight: 600;">Презентация:</span> <a href="https://drive.google.com/file/d/1thEBfIb0GJniMo88FyA1Sw0G3yXAFVx-/view?usp=sharing" rel="nofollow">https://drive.google.com/file/d/1thEBfIb0GJniMo88FyA1Sw0G3yXAFVx-/view?usp=sharing</a></p>
<p>‍<span style="font-weight: 600;">(00:00:00) (Начало записи) </span></p>
<p><span style="font-weight: 600;">Анна Куртукова:</span> Добрый день. Меня зовут Куртукова Анна, я Junior Data Scientist компании «НТР». Сегодня мы с вами поговорим об идентификации автора исходного кода при помощи нейронных сетей.</p>
<p>Я думаю, для всех нас очевидный факт, что современные технологии, системы и другие инструменты цифровизации имеют ряд безусловных достоинств, которые улучшают общественную жизнь и упрощают профессиональную деятельность. Однако за множеством этих преимуществ скрывается существенный недостаток, это уязвимость подобных разработок, их незащищенность от неполадок и сбоев. Источниками подобных проблем зачастую являются недоработки при проектировании или неправильная эксплуатация используемых средств, но не исключены и случаи намеренного нарушения их функционирования злоумышленниками.</p>
<p>Наиболее распространенным способом осуществления сбоев в работе технических и программных средств является внедрение вредоносного кода. Несмотря на то, что деятельность по созданию, использованию и распространению вредоносных программ регулируется на законодательном уровне и влечет за собой уголовную ответственность, автороведческие экспертизы, проводимые над исходными кодами таких программ, до сих пор осуществляются экспертами вручную. Такой подход может быть уместен, но исключительно в простых случаях, но надо понимать, что он даже тогда является неоправданно времязатратным.</p>
<p>Далеко здесь ходить не надо, примеров в судебной практике огромное множество, но расскажу о наиболее ярком с точки зрения понесенного убытка. Данный случай произошел в 2017 году, при слиянии двух банков не была построена система обеспечения информационной безопасности, в том числе, на каждом компьютере, как ни парадоксально, отсутствовал антивирус, а операционист регулярно посещала Интернет-ресурсы непристойного содержания, в связи с чем компьютер подвергся заражению вредоносной программой, и злоумышленники смогли удаленно управлять доступом к компьютерам. В конце рабочего дня операционист, в очередной раз нарушив требования безопасности, не выключила, не заблокировала компьютер, и ночью злоумышленники с использованием этой самой программы завладели управлением и стали переводить денежные средства на счета банковской карты. За ночь итого преступники совершили хищение денежных средств на сумму свыше 75 миллионов рублей. В данном случае речь, конечно, идет именно об использовании вредоносной программы, а не о ее создании, но масштаб проблемы позволяет понять.</p>
<p>В случае с использованием вредоносного программного обеспечения компьютерно-техническим экспертам обычно достаточно установить IP-адреса злоумышленников. Но в случае с созданием такие простые меры действенными уже не будут, и необходимо будет доказывать факт написания вредоносной программы некоторым разработчиком. Из-за отсутствия соответствующих экспертиз программных средств для осуществления этой деанонимизации число преступлений и масштаб с каждым годом становится все больше, а раскрываемость таких преступлений, напротив, только меньше.</p>
<p>Безусловно, определение автора, вирусописателя не является единственной областью применения моделей для идентификации автора исходного кода. Судебная практика в Российской Федерации говорит о многочисленных нарушениях в области авторских прав и интеллектуальной собственности, а также о бесконтрольном плагиате исходных кодов программных продуктов. Применение моделей, способных точно идентифицировать автора программного обеспечения в судебных разбирательствах, предметами которых являются споры об интеллектуальной собственности, может позволить избежать серьезных убытков, которые зачастую достигают сотен миллионов в коммерческой сфере.</p>
<p>Последняя сфера, по большому счету, она вытекает из предыдущей, но не влечет за собой ответственности, это выявление плагиата программ студентами технических специальностей. Думаю, все знакомы с системой «Антиплагиат», которая определяет наличие плагиата в естественно-языковых текстах, и, по сути, в данном случае полученное решение считается его аналогом для исходных кодов программ, что позволит оценивать работы студентов технических специальностей на плагиат по дисциплинам, связанным с программированием. Могу сказать, что уже сейчас она успешно применяется в моем вузе, и с ее помощью этот плагиат отслеживается успешно.</p>
<p>Итак, мы определили значимость, и теперь можем поговорить о самой задаче. Сформулировать ее можно следующим образом. У нас имеется множество исходных кодов и множество авторов-программистов. Для некоторого подмножества исходных кодов, где авторы известны, существует множество пар «исходный код и программист», и задачей является установление, какой автор-программист из множества является истинным автором анонимных образцов исходных кодов.</p>
<p>(00:04:54)</p>
<p>В данной постановке задачу идентификации следует рассматривать как задачу классификации с несколькими классами. В таком случае множество программистов состоит из предопределенных классов и меток, а пары «исходный код – автор» являются тренировочными образцами, и множество анонимных образцов содержит непосредственно классифицируемые образцы. Целью является построение классификатора, который решает поставленную задачу, то есть находит некоторую целевую функцию, которая относит случайный исходный код множества исходных кодов к его истинному автору. Значение функции интерпретируются как степень принадлежности объекта классу, то есть единица соответствует полностью положительному решению, минус единица – полностью отрицательному.</p>
<p>Несмотря на то, что задача является довольно нетривиальной, она находит немалое количество решений в рамках научных трудов исследователей. Эти решения представляют собой самые разнообразные подходы, но условно их можно разделить на три группы: во-первых, статистические методы; во-вторых, машинное обучение: в-третьих, нейронные сети.</p>
<p>Статистические методы – это методы, которые основываются в основном на подсчете определенных признаков, так или иначе, характеризующих авторский стиль. Но могут встречаться и не совсем стандартные решения, например энтропийный подход, о котором я позже еще расскажу, и данные методы являются простыми в реализации, не требуют больших вычислительных ресурсов и временны́х, в том числе, но заметно проигрывают в точности иным подходам.</p>
<p>Методы машинного обучения. Наиболее популярными среди них является метод опорных векторов и абстрактные синтаксические деревья. И те, и другие встречаются даже в современных исследованиях, и нередко конкурируют по точности с моделями нейронных сетей и даже глубоких нейронных сетей. Из личного опыта могу этот факт подтвердить, метод опорных векторов на проработанном наборе признаков давал почти сопоставимую с глубокой нейронной сетью точность, но при этом время на его обучение было крайне мало.</p>
<p>Наконец, методы, основанные на нейронных сетях. Самое популярное сегодня решение базируется на глубоких архитектурах нейронных сетей, особенно распространенными являются двунаправленные рекуррентные нейронные сети – (Bi)LSTM, (Bi)GRU, кому знакомо. Причины их распространенности понятны, это простое решение для текстовых последовательностей, когда возникает необходимость в определении долгосрочных зависимостей. Довольно часто нейронные сети применяются не вхолостую, а в комбинации с иными подходами, такие варианты мы тоже посмотрим.</p>
<p>А сейчас более подробно рассмотрим наиболее популярные подходы к идентификации автора исходного кода. В рамках первого подхода, который мы рассмотрим, вводится нейронная сеть обратного распространения. Она основана на оптимизации методом роя частиц, методом оптимизации, и идентификация начинается с вычисления набора определенных показателей, характеристик, включая показатели лексики и разметки, показатели структуры, синтаксиса, итого там около 20 измерений. Затем эти метрики вводятся в нейронную сеть для обучения, веса которой выводятся гибридным алгоритмом метода роя частиц и обратного распространения ошибки. Предложенный подход был оценен на языке Java, и его точность составила 91%.</p>
<p>Во втором подходе усовершенствуется тривиальная для задач определения авторства методика, основанная на абстрактных синтаксических деревьях, путем создания ансамбля с глубокой нейронной сетью, в данном случае с двумя нейронными сетями. Это обычная LSTM-модель и двунаправленная LSTM- модель. Точность данной методики для Python составила 92% для LSTM обычной, и 96% – для двунаправленной, и для С++, соответственно, 80 и 85 процентов точности. Следует отметить, что данная методика зависит от языка, и даже по этим результатам это видно.</p>
<p>Третий подход в свое время считался прорывом среди решений задач идентификации автора исходного кода. Это метод SCAP, расшифровываться как «авторские профили исходных кодов», и используется статистический подсчет определенных метрик, на основе которых составляется профиль почерка и вычисляется отклонение от данного профиля для каждого отдельного автора. Данная методика, одна из немногих, не является зависимой от языка программирования, и это, конечно, является преимуществом.</p>
<p>Четвертый подход основан на совокупном применение n-грамм структурных метрик, полученных из абстрактных синтаксических деревьев, статистических метрик, а также ранее описанного метода SCAP. Классификация производится в данном случае методом опорных векторов с линейным ядром. Для языка Java такой метод дает 88%.</p>
<p>(00:09:57)</p>
<p>Ранее я говорила о не совсем стандартном решении, это энтропийная классификация при помощи сжатия. Особенность этого метода состоит в применении архиваторов. В целом он звучит так: анонимные коды присоединяются к образцам кодов, принадлежащих заведомо известным авторам, полученные документы сжимаются архиватором, а затем проверяется полученный уровень сжатия. Собственно, самым вероятным автором будет тот, к чьему коду образец жмется лучше всего. Данный метод применялся авторами к вирусам, написанным на языке Delphi, и позволил верно идентифицировать все анонимные образцы, то есть сто процентов. Но тут есть оговорка, соответственно, данный метод неприменим для решения реальных задач, потому как требует единообразия как языка, так и компилятора, и даже платформы для всех образцов кода.</p>
<p>Шестой подход применяет метод стилометрии абстрактных синтаксических деревьев и так называемых code smells. Последние представляют собой ряд весьма специфичных признаков, указывающих на авторские недочеты в программе, на участки кода, подлежащие рефакторингу, то есть нарушающие парадигмы того или иного языка программирования. Я делаю на этом такой акцент, так как сама наблюдала большой прирост точности при обучении машины опорных векторов на признаках с использованием code smells. Полученные признаки использовались авторами для обучения машин опорных векторов, алгоритма G48, наивного байесовского классификатора и К ближайших соседей, но наибольшая точность составила лишь 75%, с помощью машины опорных векторов.</p>
<p>Седьмой метод основывается на алгоритмах классификации случайных деревьев и нечетких абстрактных синтаксических деревьев. Такая методика позволила авторам получить точность 90% для программистов, пишущих на Python, и в дальнейшем была усовершенствована калибровочными кривыми для анализа неполных и некомпилируемых образцов кода, что позволило получить 73%, но при наличии лишь одного образца исходного кода автора, который программирует на С++. Также авторы данного метода стали единственными исследователями, которые выполнили эксперименты на обфусцированных исходных кодах, написанных на С++, и в данном исследовании было доказано негативное влияние обфускации на методы идентификации автора исходного кода. Как мы видим, потеря в точности составила около 30%.</p>
<p>Еще один нетривиальный подход является одним из первых решений данной задачи, если не ошибаюсь, в далеком 2008 году. Это подход Burrows, атрибуция исходного кода в данном случае выполняется за счет ключевых подстрок в n-граммах исходного кода, и полученные частоты выстраиваются в так называемый рейтинг, где автор, занявший первую позицию, считается истинным автором анонимного образца.</p>
<p>Следующий метод объединяет статический и динамический анализы стилометрии. Что подразумевается под статическими признаками? Это ключевые слова, структурные элементы и другие признаки. Динамические подразумевают вызов функции, выделяемую память и другие подобные признаки. Преимущество этого метода состоит в применении небольшого количества созданных вручную функций, возможности расширения исследуемой выборки без переобучения, и устойчивости результата к изменению количества авторов, участвующих в эксперименте. Точность достигает 94% для языка Python.</p>
<p>Последний метод, который мы рассмотрим, осуществляет идентификацию независимо от языка программирования. Архитектура глубокого обучения, принятая в этой работе, использует представление на основе TF/IDF и нескольких слоев рекуррентных и полносвязных слоев нейронной сети. Затем глубокое представление подается в классификатор случайного леса с целью масштабируемости, чтобы деанонимизировать автора. Эксперименты позволили достигнуть 95% для языка С++.</p>
<p>Исходя из представленных подходов, видно, что наилучшую точность идентификации дают именно нейронные сети, и в частности, глубокие архитектуры.</p>
<p>Теперь обсудим то, в чем все эти методы схожи, и их недостатки. Первый и, пожалуй, главный из них – это неуниверсальность. Авторы не проводили исследования с более чем парой языков программирования, а те, которые считаются независимыми от языка, демонстрируют недостаточно высокую точность.</p>
<p>Второе, это что почти все данные подходы за редким исключением требуют большого количества тренировочных данных. Основной недостаток – это то, что все подходы применимы лишь для простых случаев идентификации исходного кода, не осложненных такими факторами, как обфускация или корпоративный стиль, который унифицирует те элементы исходного кода, которые несут в себе информативные признаки.</p>
<p>(00:15:00)</p>
<p>Таким образом, стал вопрос о создании такой модели нейронной сети, которая позволит решить все озвученные проблемы и идентифицировать автора исходного кода вне зависимости от языка, его квалификации, от обфускации и корпоративного стиля.</p>
<p>Данные проблемы решила гибридная нейронная сеть, которая представлена на слайде. Хочу отметить, что при выборе архитектуры данной нейронной сети учитывались особенности исходных кодов как объекта исследования, то есть лексические, синтаксические и семантические правила, парадигмы различных языков программирования, которые могут, так или иначе, влиять на процесс идентификации программиста.</p>
<p>Известный факт, что наиболее популярными сегодня архитектурами глубоких нейросетей являются рекуррентные и сверточные нейронные сети. Так возникла идея о совместном их применении для решения задач идентификации автора исходного кода. Исходный код представляет собой последовательность символов, и это обуславливает необходимость применения рекуррентной архитектуры из-за их способности запоминать состояние, получаемое от обработки предыдущих элементов.</p>
<p>Авторские признаки исходных кодов могут быть различны по размеру. Здесь тоже удобны в применении сверточные нейронные сети, которые предназначены для распознавания локальных и глобальных признаков.</p>
<p>Сверточная составляющая гибридной нейронной сети реализована сетью Google Net, которая более известна как Inception v1, и особенность данной архитектуры состоит в параллельной работе слоев со свертками разных размерностей и их дальнейшей конкатенацией в конечный результат.</p>
<p>Рекуррентная часть представлена двунаправленной сетью GRU, которая, по существу, является упрощенной версией LSTM, но с меньшим количеством функций, и двунаправленность рекуррентной сети как раз таки положительно сказывается на результате, так как позволяет выявлять не только прямые, но и обратные зависимости в исходном коде.</p>
<p>Хочу отметить, что гибридная нейросеть не нуждается в предварительном определении набора авторских признаков, и более того, способна находить их самостоятельно.</p>
<p>Немного внимания уделим процессу обучения нейронной сети. Первый вопрос, возникающий к процедуре обучения, это данные и, в частности, формат их представления. В случае с гибридной нейросетью было решено осуществлять посимвольное One-Hot-кодирование. Тем, для кого это понятие в новинку, уточню, что это способ преобразования каждого символа исходного кода в вектор из 256 нулей и единиц на позиции кода символа с индексом, равным коду символа, в данном случае для кодировки ASCII. Минимизация ошибки, получаемая при обучении модели нейронной сети, происходит в процессе оптимизации смещения внутренних параметров и весов. Для этого использовался метод адаптивного шага обучения AdaDelta. Результат работы нейросети должен иметь эффективное ограничение, то есть соответствующее вероятностное распределение на выходе последнего слоя. Такое распределение было определено функцией активации Softmax, обобщенной логистической функцией для многомерного случая, которая позволяет трактовать выходные значения нейронов как вероятность принадлежности к какому-то целевому классу. Активатор Softmax позволяет избежать проблемы затухания градиентов, которая свойственна алгоритму обратного распространения ошибки, которая встречается, как правило, при его использовании в глубоком обучении.</p>
<p>Наконец, в противовес возможному переобучению применялась процедура регуляризации с помощью прореживания. Прореживание обновляют часть элементов вектора, и тем самым позволяет процесс переобучения предотвратить.</p>
<p>Обученнаяя модель нейросети применялась для решения практических задач идентификации автора исходного кода. Результатом работы модели являлось принятое на основе распределения вероятности решение относительно принадлежности анонимного исходного кода к одному из классов обучающей выборки.</p>
<p>Процесс обучения любой модели и дальнейшая ее оценка подразумевает использование репрезентативных данных. Их сбор был произведен с крупнейшего хостинга IT-проектов GitHub. Были отобраны языки, входящие в топ наиболее популярных языков программирования. Репозитории для парсинга исходных кодов выбирались случайным образом. Для объективности оценки применялась десятифолдовая кроссвалидация, перекрестная проверка. Здесь приведены полученные точности по ее итогам.</p>
<p>Здесь у нас приведена информация о количестве данных и результаты, полученные для каждого из языков программирования. Это простой случай, и здесь модель демонстрирует высокую точность для всех языков, единственно, особенности языков каким-то образом все таки влияют на результативность, но в данном случае не критично.</p>
<p>Обфускация исходного кода является особо востребованной и для интерпретируемых языков программирования, то есть для языков, где операторы транслируются и выполняются последовательно друг за другом. Это обусловлено тем, что программы на таких языках представляют собой скрипты, программные сценарии, описывающие последовательность действий, выполняющихся интерпретатором, а не исполняемый машинный код, который зачастую сложнее поддается анализу.</p>
<p>(00:20:16)</p>
<p><span style="font-weight: 600;">Николай Михайловский:</span> Извиняюсь, у нас тут вопрос есть про предыдущий слайд.</p>
<p><span style="font-weight: 600;">Анна Куртукова:</span> Я нее видела. Какой вопрос?</p>
<p><span style="font-weight: 600;">Николай Михайловский:</span> В чате вопрос: «Колонка «исходные коды», это что?»</p>
<p><span style="font-weight: 600;">Анна Куртукова:</span> Да, сейчас поясню. «Исходные коды» – это количество исходных кодов, которые были в наборе данных. Здесь нет длин в данном случае, я не приводила длины.</p>
<p><span style="font-weight: 600;">Николай Михайловский:</span> Исходный код, это что за единица измерения?</p>
<p><span style="font-weight: 600;">Анна Куртукова:</span> Это количество именно исходных кодов на каком-то языке программирования.</p>
<p><span style="font-weight: 600;">Николай Михайловский:</span> Исходный код – это файл, строка?</p>
<p><span style="font-weight: 600;">Анна Куртукова:</span> Файл, да, файл.</p>
<p><span style="font-weight: 600;">Николай Михайловский:</span> Количество исходных кодов – это количество файлов?</p>
<p><span style="font-weight: 600;">Анна Куртукова:</span> Количество файлов, да.</p>
<p><span style="font-weight: 600;">Николай Михайловский:</span> Спасибо.</p>
<p><span style="font-weight: 600;">Анна Куртукова:</span> Вернемся к предыдущему слайду, к следующему, вернее. Итак, в рамках данного эксперимента было решено оценивать точность как для обфусцированных исходных кодов на интерпретируемых языках, в данном случае Python, PHP и JavaScript, так и на компилируемых языках, в данном случае для С и С++. В качестве обфускаторов были выбраны свободно доступные на GitHub реализации, которые подходят для автоматизированного запутывания большого количества исходных кодов. Для каждого языка программирования было необходимо использовать отдельный инструмент, который учитывает его особенности. Результаты экспериментов позволяют сделать вывод об устойчивости модели гибридной нейросети к лексической обфускации, такой, как удаление пробельных символов, преобразование строк, конвертирование, кодирование. Точность идентификации автора и лексически запутанного исходного кода оказывается ниже в среднем на 7%, чем исходного экземпляра. Напомню, что у единственного аналога модели, проверенного на обфусцированных данных, потеря составила порядка 35%.</p>
<p>В случаях более сложной обфускации, которая выполняется, в данном случае это инструмент Pyamor, где происходит запутывание байт-кода объектов, дополнение исходного кода псевдосложным кодом и прочее, разность в точности составляет около 30%.</p>
<p>Здесь также есть интересный момент с обфускатором для С++ Obfuscator ISS. Это обфускатор, написанный моими коллегами из университета для проведения именно данного эксперимента. Идея его написания возникла из-за того, что все рассмотренные обфускаторы, как и в целом обфускаторы, осуществляют, как правило, устранение информативных признаков, то есть удаление комментариев, незначительных директив, пустых и неиспользуемых функций и других элементов кода, незначимых для работоспособности. Такой подход к запутыванию не оказывает слишком уж сильного влияния на процесс идентификации. Разработанный обфускатор осуществляет, напротив, добавление запутывающих элементов, то есть лишних комментариев, переменных, директив в случайные строки кода, создает сигнатуры функций, увеличивает вложенность кода. К такому виду обфускации, запутывания модель оказалась в целом устойчива.</p>
<p><span style="font-weight: 600;">Николай Михайловский:</span> Аня, у нас есть еще один вопрос. «А когда применяем Softmax, предполагается что список возможных авторов заранее известен? Откуда мы можем взять всех возможных авторов?»</p>
<p><span style="font-weight: 600;">Анна Куртукова:</span> У нас есть множество авторов&#8230; Наверно, давайте я в конце поясню этот момент, потому что это небыстро будет. Я вернусь к этому вопросу попозже.</p>
<p><span style="font-weight: 600;">Николай Михайловский:</span> Спасибо.</p>
<p><span style="font-weight: 600;">Анна Куртукова:</span> Совсем свежее еще исследование позволило оценить степень влияния корпоративного стиля на идентификацию автора исходного кода. Конечно, реальные корпоративные исходники получить было бы невозможно, поэтому было решено прибегнуть к хитрости и использовать открытые проекты, которые имеют рекомендации по оформлению кода. Таким образом были собраны данные из репозиториев разработчиков проекта Linux Kernel. Рекомендации, выдвигаемые к разработчикам, могут негативно сказываться на таких признаках, как выравнивание логических блоков программы, использование определенного вида пробельных символов, стиль именования переменных, классов, методов, форматирование комментариев к строкам исходного кода, и все тех же code smells, о которых я ранее уже говорила. В таком случае работа гибридной нейросети сводится к поиску неявных информативных признаков, которые позволят разделить авторов-программистов между собой.</p>
<p>(00:24:56)</p>
<p>Общее количество исходных кодов в данном эксперименте составило свыше 250 тысяч экземпляров на языке программирования С. Полученные с GitHub данные были преобразованы в различные по объему тренировочные наборы, а именно по 10, 20 и 30 файлов длиной от 1000 до 10000 символов. Такой подход был выбран, чтобы вынести методические рекомендации по минимальному объему данных, который необходим для эффективной идентификации автора исходного кода, написанного в корпоративном стиле. Полученный график демонстрирует прямую зависимость точности от объема тренировочного набора, то есть увеличение количества файлов в наборе или (и) предельной длины исходных кодов, влечет за собой рост точности идентификации.</p>
<p>Хотя модель демонстрирует высокую точность даже в сложных случаях идентификации, она имеет ряд проблем, над которыми придется задуматься в дальнейшем. Конечно, главная из этих проблем – это необходимость в большом объеме вычислительных мощностей, затем необходимость большого объема данных для определенного рода задач, как в случае с корпоративным стилем, где маленький объем данных не позволяет достигнуть достаточной точности. Также есть пара гипотез, что на чересчур большом количестве классов или при ограниченном количестве обучающих данных модель эффективной уже не будет. Но на это будут направлены дальнейшие исследования.</p>
<p><span style="font-weight: 600;">Николай Михайловский:</span> Не более чем 20 классов, это не более чем 20 авторов?</p>
<p><span style="font-weight: 600;">Анна Куртукова:</span> Да, в данном случае да.</p>
<p>Резюмируя все сказанное, хочу выделить несколько аспектов решения данной задачи. Это, во-первых, что современные модели нейросетей позволяют добиться высокой точности, более 95%, но имеют ряд ограничений, которые связаны с языком, квалификацией программиста, объемом данных, обфускацией и корпоративными стандартами.</p>
<p>Во-вторых, гибридная нейронная сеть, представленная мной, позволяет эффективно определить автора исходного кода, несмотря на эти ограничения, однако, в-третьих, требует много вычислительных мощностей, времени, как и большинство других современных моделей глубокого обучения. Однако она, конечно, решаемая при использовании модели в качестве основы коммерческих проектов.</p>
<p>В принципе, на этой ноте я хочу свой доклад закончить и перейти к вопросу, на котором мы остановились до этого. Что касается Softmax и возможных авторов, речь была о чем? Наверняка в данном вопросе подразумевалось, что количество авторов, то есть обучение производится на неизвестных авторах. В общем, суть в том, что область применения основная, это в данном случае криминалистические экспертизы, подразумевает, что авторы уже известны. Есть какой-то набор потенциальных авторов, которые могут быть авторами, истинными авторами анонимного образца исходного кода, и они известны заранее, да.</p>
<p><span style="font-weight: 600;">Николай Михайловский:</span> У нас есть следующий вопрос.</p>
<p><span style="font-weight: 600;">Анна Куртукова:</span> Да, я сейчас прочитаю.</p>
<p><span style="font-weight: 600;">Николай Михайловский:</span> Про использование двумерной свертки. Я Дмитрию сразу отвечу. Если я правильно помню слайд, там были свертки&#8230;</p>
<p><span style="font-weight: 600;">Анна Куртукова:</span> Да, я поняла, про какой слайд речь. Двумерная свертка не использовалась, если речь идет про 2D-свертки, это размерность фильтра свертки, то есть 1, 3 и 5, это именно окошко свертки. Использовались 1D-свертки.</p>
<p><span style="font-weight: 600;">Николай Михайловский:</span> На слайде следует читать&#8230;</p>
<p><span style="font-weight: 600;">Анна Куртукова:</span> Да, это не совсем корректно, возможно, да, это фильтры, размер фильтров.</p>
<p><span style="font-weight: 600;">Николай Михайловский:</span> 1 на 1, 3 на 1, 5 на 1.</p>
<p><span style="font-weight: 600;">Анна Куртукова:</span> Да. По большому счету, да. Хорошее замечание, я исправлю. Так, и еще был вопрос&#8230; А, это все один и тот же вопрос, все, поняла. «Если авторы объединились, один пишет начало&#8230;» Да, такой вопрос у меня и у самой был, но пока что этот случай не рассматривается, потому что опять же основная область применения – криминалистические экспертизы, там не предполагается такого. А именно для коммерческой среды и для определения в рамках компании авторства – это да, это надо будет исследовать еще. как раз буквально в ближайшие полгода это будет сделано, и в моих исследованиях это будет освещено, я думаю.</p>
<p><span style="font-weight: 600;">Николай Михайловский:</span> Вопрос, а можно ли осуществить такой style transfer, который будет запутывать систему определения авторства?</p>
<p><span style="font-weight: 600;">Анна Куртукова:</span> По большому счету, как раз я рассказывала про обфускатор, который писали у нас в рамках проектного обучения, он как раз это и делает, по большому счету.</p>
<p>(00:30:03)</p>
<p><span style="font-weight: 600;">Николай Михайловский: </span>Обфускатор, видимо, это делает программистским способом, но есть же style transfer с помощью нейронных сетей, который теоретически можно применить и к исходному коду.</p>
<p><span style="font-weight: 600;">Анна Куртукова:</span> Это надо исследовать, конечно, и проверять уже, как будет работать нейронная сеть с таким случаем.</p>
<p><span style="font-weight: 600;">Николай Михайловский:</span> Вот еще нас спрашивают: «Как юридически легализовать выводы модели? Она же может ошибиться, а человека&#8230;»</p>
<p><span style="font-weight: 600;">Анна Куртукова:</span> Да, конечно, об этом мы как раз говорили с заинтересованными лицами, и речь была о том, что ни при каких обстоятельствах невозможно будет полностью автоматизированную систему, то есть использовать только систему будет нельзя. Это в любом случае должно будет контролироваться экспертами какими-то, то есть интерпретация результатов, все это должно проходить через экспертов, никто модели доверять не будет в таких серьезных вопросах, как криминалистические экспертизы, например. По сути, это вспомогательный инструмент.</p>
<p><span style="font-weight: 600;">Николай Михайловский:</span> Так, коллеги, пожалуйста, еще вопросы, предложения. А, вот спрашивают: «Как это работает на восстановленных исходных кодах, например, полученных в результате декомпиляции?»</p>
<p><span style="font-weight: 600;">Анна Куртукова:</span> Я как раз, пока готовилась к этому выступлению, задумалась о том, что надо попробовать к Assembler это применить. Пока не могу, к сожалению, ответить на этот вопрос.</p>
<p><span style="font-weight: 600;">Николай Михайловский:</span> Здесь же речь не только об Assembler, а мы, например, Java можем восстановить.</p>
<p><span style="font-weight: 600;">Анна Куртукова:</span> Я понимаю, да, но как работает, сложно сказать, потому что я этого не делала пока что.</p>
<p><span style="font-weight: 600;">Николай Михайловский:</span> Вот у нас есть еще предложение: «А вы пробовали парсить публичные репозитории, например, GitHub, для того, чтобы теоретически определить авторство программиста? В этом случае при высокой степени точности можно было бы на коммерческой основе понять, а свой ли код выслал кандидат после собеседования».</p>
<p><span style="font-weight: 600;">Анна Куртукова:</span> Да, хорошее предложение, действительно, стоит попробовать.</p>
<p><span style="font-weight: 600;">Николай Михайловский:</span> В качестве дополнительного предложения, мне представляется, что если подобные вещи надо применять к классификации на большое число классов, то есть web scale ко всем программистам, то, вероятно, надо применять какой-то вариант Triplet loss для того, чтобы в эмбеддинге развести разных авторов по разным местам. Так же, как лица определяем, вероятно, Triplet loss позволяет классифицировать подобные вещи на очень большое число классов. Но это такое предложение потенциальное.</p>
<p>Еще нам задают вопрос, на который, я подозреваю, у Ани ответа не будет, но тем не менее: «А как на практике круг подозреваемых определить? Может, там тоже Machine Learning?»</p>
<p><span style="font-weight: 600;">Анна Куртукова:</span> Machine Learning где?</p>
<p><span style="font-weight: 600;">Николай Михайловский:</span> Есть же сейчас уже сеть Facebook, которая код пишет.</p>
<p><span style="font-weight: 600;">Анна Куртукова:</span> Да, действительно. Круг подозреваемых определять – это уже не относится к возможностям этой системы, это должно быть заранее сделано уже.</p>
<p><span style="font-weight: 600;">Николай Михайловский:</span> Так, у нас есть&#8230; А, у нас этот вопрос уже был у нас в QNA еще, помимо чата, есть тот же вопрос про работу на восстановленных исходных кодах. Так, коллеги, пожалуйста, еще вопросы. Если вопросов нету&#8230; А, вот еще Дмитрий Козлов спрашивает: «Сравнивали ли вы ваше решение с open source решениями в GitHub по Copy/paste detector?»</p>
<p><span style="font-weight: 600;">Анна Куртукова:</span> Свое решение я сравнивала только с тем, что&#8230; о которых рассказывала.</p>
<p>(00:34:58)</p>
<p>Но конкретно с такими – нет, не сравнивала.</p>
<p><span style="font-weight: 600;">Николай Михайловский:</span> Интересный вопрос Игорь задает: «Сами пробовали ли что-то обучать?»</p>
<p><span style="font-weight: 600;">Анна Куртукова:</span> В плане, на реальных данных? Если так, то да, конечно, как я говорила, уже применяем в университете регулярно. А подозреваемых обычно, как мне сказали, обычно это очень узкий круг, то есть не больше десяти однозначно. Я судить не могу, я опираюсь на то, что мне эксперты говорили.</p>
<p><span style="font-weight: 600;">Николай Михайловский:</span> А в случае университета – две-три группы.</p>
<p><span style="font-weight: 600;">Анна Куртукова:</span> Да, обычно. Но там сначала&#8230; Тоже там не сразу применяется именно эта модель, сначала там проверяется на соответствие&#8230; то есть построчное сравнение, и если находятся какие-то похожие образцы, тогда уже применяется модель к ним, то есть сначала тоже ограничивается круг авторов.</p>
<p><span style="font-weight: 600;">Николай Михайловский:</span> Юрий Кузнецов опять задает: «А есть же система «Антиплагиат», там что используется?»</p>
<p><span style="font-weight: 600;">Анна Куртукова:</span> Я не в курсе, что́ там используется, но предполагаю, что наверняка тоже алгоритмы какие-то нейронных сетей.</p>
<p><span style="font-weight: 600;">Николай Михайловский:</span> Насколько я помню, там достаточно прямые поисковые алгоритмы используются, то есть в «Антиплагиате» же речь о том, чтобы выяснить источник, то есть найти дословное цитирование без упоминания&#8230; то есть найти copy/paste. Это немножечко другая задача, чем задача определения авторства. Плагиат и определение авторства – немножкечко разное.</p>
<p>Евгений Терентьев задает вопрос: «А делается лингвистический анализ кода с точки зрения названия переменных, например? Так можно было бы определить хотя бы страну подозреваемого или более точную геолокацию. Подтверждаю, иногда читаешь исходный код унаследованный, и там характерные русские слова в названиях переменных встречаются. В том числе, я читал, например, код, в котором несколько страниц кода было названо с переменными исключительно матерными».</p>
<p><span style="font-weight: 600;">Анна Куртукова:</span> В данном случае нет, не проводился. Здесь вообще предобработка никакая не проводилась, то есть сразу подается в исходном виде на нейронную сеть. Но идея хорошая, да.</p>
<p><span style="font-weight: 600;">Николай Михайловский:</span> Вопрос: «Есть ли понимание, как можно модифицировать код, чтобы значительно увеличить ошибку?»</p>
<p><span style="font-weight: 600;">Анна Куртукова:</span> Мы, в принципе, это уже по большому счету обсудили, то, как запутать и сломать, то есть с запутыванием кода целенаправленным.</p>
<p><span style="font-weight: 600;">Николай Михайловский:</span> Или, вероятно, каким-нибудь style transfer.</p>
<p><span style="font-weight: 600;">Анна Куртукова:</span> Google Net используют, именно в свертке, может, кто знает, в Inception v1 используются свертки, в дальнейшем конкатинируются, и этот результат передается на рекуррентную сеть. Так и используется. Трансформеры – нет, пока не применяла, но хочу попробовать, пока еще не успела.</p>
<p><span style="font-weight: 600;">Николай Михайловский:</span> Спасибо. Еще вопросы, пожалуйста.</p>
<p><span style="font-weight: 600;">Анна Куртукова:</span> Обфусцируйте, кидайте на почту, если что, почту сейчас приведу в конце, у меня есть. Нет, двоичный и скомпилированный код не анализировался. Google Net и Inception v1, имеется в виду. Инсепшенов много разных, да, здесь имеется в виду Inception v1.</p>
<p><span style="font-weight: 600;">Николай Михайловский:</span> «Пробовали ли подавать не посимвольно, а токены по словам?»</p>
<p><span style="font-weight: 600;">Анна Куртукова:</span> Это, наверное, будет не совсем целесообразно, учитывая архитектуру. Как-то изначально повелось, что посимвольно, и архитектура, это какая-то была такая установка изначально, и нет, не пробовала по словам. Но я думаю, по словам имеет смысл больше в естественно-языковых текстах применять, а в исходных кодах вряд ли это будет эффективно, по крайней мере, вряд ли будет эффективнее, чем посимвольно.</p>
<p><span style="font-weight: 600;">Николай Михайловский:</span> Нам поступает практическое предложение.</p>
<p>(00:39:55)</p>
<p>«Если говорить о frontend-коде, который доступен в открытом виде, то можно было бы спарсить 9 миллионов сайтов в зоне .ru, например, взять их непубличные JS-библиотеки или модули, сгруппировать по стилистике и попытаться предположить, какие из сайтов были сделаны одними и теми же людьми. Так можно увидеть, что программист левачит на конкурента». Идея забавная. Там немножечко другой классификатор в конце надо строить, может быть, не классификатор, а какой-то кластеризатор, но да, идея забавная.</p>
<p>Тут спрашивают: «Когда ждать библиотеку на GitHub?»</p>
<p><span style="font-weight: 600;">Анна Куртукова:</span> Сложный вопрос, потому что проект поддерживается грантом, и он коммерческий, поэтому вряд ли это на GitHub появится. Появится в виде веб-сервиса в будущем, где-то через годик.</p>
<p><span style="font-weight: 600;">Николай Михайловский:</span> Да, тут надо дать пояснение, что сейчас Анна рассказывает про работу, которая выполняется не в рамках «НТР», а про свою институтскую работу.</p>
<p><span style="font-weight: 600;">Анна Куртукова:</span> Да, мой собственный проект, и да, он коммерческий.</p>
<p><span style="font-weight: 600;">Николай Михайловский:</span> Будем считать, что это Анина будущая диссертация.</p>
<p><span style="font-weight: 600;">Анна Куртукова:</span> Так и есть.</p>
<p><span style="font-weight: 600;">Николай Михайловский:</span> Тут нам комментируют, что «ну, это прям обучение GAN , сначала щиты, потом опять копья, это если в открытый доступ выложить инструмент определения». Ну да, ну да.</p>
<p>Большое спасибо всем, и до новых встреч. О новых вебинарах мы будем сообщать по email всем, кто подписан на Facebook, в Slack, и через все другие каналы коммуникации. Спасибо. До свидания.</p>
<p><span style="font-weight: 600;">(00:42:02) (Конец записи)</span></p><p>The post <a href="https://ntr.ai/webinar/nauchno-tehnicheskij-vebinar-identifikacziya-avtora-ishodnogo-koda-pri-pomoshhi-nejronnyh-setej/">Научно-технический вебинар «Идентификация автора исходного кода при помощи нейронных сетей»</a> first appeared on <a href="https://ntr.ai">Компания НТР</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Научно-технический вебинар &#171;Crash Fault Tolerance и Byzantine Fault Tolerance в децентрализованных протоколах с голосованием&#187;</title>
		<link>https://ntr.ai/webinar/nauchno-tehnicheskij-vebinar-crash-fault-tolerance-i-byzantine-fault-tolerance-v-deczentralizovannyh-protokolah-s-golosovaniem/</link>
		
		<dc:creator><![CDATA[Alexandra Koroleva]]></dc:creator>
		<pubDate>Mon, 09 Aug 2021 07:08:49 +0000</pubDate>
				<guid isPermaLink="false">https://ntr.ai/?post_type=ntr-web&#038;p=308</guid>

					<description><![CDATA[<p>Вот что сам автор доклада говорит о нём: &#171;В течение [&#8230;]</p>
<p>The post <a href="https://ntr.ai/webinar/nauchno-tehnicheskij-vebinar-crash-fault-tolerance-i-byzantine-fault-tolerance-v-deczentralizovannyh-protokolah-s-golosovaniem/">Научно-технический вебинар «Crash Fault Tolerance и Byzantine Fault Tolerance в децентрализованных протоколах с голосованием»</a> first appeared on <a href="https://ntr.ai">Компания НТР</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Вот что сам автор доклада говорит о нём:</p>
<p>&#171;В течение последних двух лет блокчейн решения постепенно превращаются из основы для криптовалюты в платформы для построения эффективной интеграции между предприятиями. К сожалению, это развитие происходит медленнее, чем ожидалось. Наибольшим препятствием для прогресса являются существующие модели консенсуса, которые изначально были оптимизированы для поддержки криптовалют и не обладают в достаточной степени свойствами адаптивности и масштабируемости, необходимыми для бизнес-использования. Исключением и основой роста бизнес-блокчейн решений являются модели консенсуса на основе голосования. На этом вебинаре мы представим две основных идеологии в этой группе: Crash Fault Tolerance и Byzantine Fault Tolerance, а также проведем сравнение их эффективности и недостатков для различных приложений&#187;.</p>
<p>‍</p>
<p>Запись прошедшего вебинара: <a href="https://youtu.be/chh05BgY7RU" target="_blank" rel="noopener">https://youtu.be/chh05BgY7RU</a></p>
<p>Презентация: <a href="https://drive.google.com/drive/u/1/folders/1do9WH-oNFx2azfsp5Am7WMvaKhFHxLgK" target="_blank" rel="noopener">https://drive.google.com/drive/u/1/folders/1do9WH-oNFx2azfsp5Am7WMvaKhFHxLgK</a></p><p>The post <a href="https://ntr.ai/webinar/nauchno-tehnicheskij-vebinar-crash-fault-tolerance-i-byzantine-fault-tolerance-v-deczentralizovannyh-protokolah-s-golosovaniem/">Научно-технический вебинар «Crash Fault Tolerance и Byzantine Fault Tolerance в децентрализованных протоколах с голосованием»</a> first appeared on <a href="https://ntr.ai">Компания НТР</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Научно-технический вебинар &#171;Модели сигнала для обработки звука нейронными сетями&#187;</title>
		<link>https://ntr.ai/webinar/nauchno-tehnicheskij-vebinar-modeli-signala-dlya-obrabotki-zvuka-nejronnymi-setyami/</link>
		
		<dc:creator><![CDATA[Alexandra Koroleva]]></dc:creator>
		<pubDate>Mon, 09 Aug 2021 06:43:00 +0000</pubDate>
				<guid isPermaLink="false">https://ntr.ai/?post_type=ntr-web&#038;p=301</guid>

					<description><![CDATA[<p>При решении задач по обработке речи средствами искусственных нейронных сетей [&#8230;]</p>
<p>The post <a href="https://ntr.ai/webinar/nauchno-tehnicheskij-vebinar-modeli-signala-dlya-obrabotki-zvuka-nejronnymi-setyami/">Научно-технический вебинар «Модели сигнала для обработки звука нейронными сетями»</a> first appeared on <a href="https://ntr.ai">Компания НТР</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>При решении задач по обработке речи средствами искусственных нейронных сетей важной деталью программной системы является модель звукового сигнала. На текущий момент одним из наиболее распространенных методов (если не сказать стандартом) является представление звукового сигнала в виде спектрограммы и/или ее производной MFCC (Mel Frequency Cepstral Coefficients). В данном вебинаре мы заглянули &#171;под капот&#187; этому методу и на примерах увидели что он в себе несет. В качестве потенциальной альтернативы устоявшемуся стандарту мы поговорили о Linear Predictive Coding (LPC) подходе, который отталкивается от физики процесса речеобразования.</p>
<p>Вебинары открытые. Приглашаем присоединиться всех интересующихся.</p>
<p>Запись вебинара: <a href="https://youtu.be/SJbmJ6ZK_v8?fbclid=IwAR1ON_P-11UGLEI6kVNkyet_XdVjHtSlz1m6UZS2WMq6ir7gLrEXZ0fwq4E" target="_blank" rel="noopener">https://youtu.be/SJbmJ6ZK_v8</a></p>
<p>Ссылка с материалами (презентация, ноутбук, аудио файлы)</p>
<p>https://drive.google.com/file/d/1G2G4gPPKSksa_qCB62xqMa5tEJBg4TPP/view?usp=sharing</p><p>The post <a href="https://ntr.ai/webinar/nauchno-tehnicheskij-vebinar-modeli-signala-dlya-obrabotki-zvuka-nejronnymi-setyami/">Научно-технический вебинар «Модели сигнала для обработки звука нейронными сетями»</a> first appeared on <a href="https://ntr.ai">Компания НТР</a>.</p>]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
