Как стать автором
Обновить

Комментарии 22

сколько балов наберет эта фраза: тостоу нанепоен наоумб
а также фраза «няня, я у них поел»
няня, я у них поел — 1638
тостоу нанепоен наоумб — 841
почему так мало? я взял буквы из вашей табличке про Войну и мир
Так «оу» и «мб» зря брали. Весь рейтинг запороли.
Так и фраза уж очень похожа на осмысленную уже — Толстой ненапоен нобум…
А обновление модели для антивирусного продукта может быть инкрементальным? или каждое переобучение = полное обновление тех баз, которые ответственны за ML?
Мы сделали инкрементально обновляемую модель. Так что да, может быть инкрементальным.
Если перемешать пары букв в чистом тексте, баллов будет столько же, но получится белиберда.

Например, кто сказал, что надо использовать пары символов, а не тройки?

Подозреваю, что для максимально правильного решения задачи надо использовать слова целиком. И причем не просто слова, а с определением смысла фраз. Применительно к антивирусам — машинные команды и цель их выполнения. Без этого всегда будет только «поиск баланса».
Не выйдет так перемешать пары символов в цепочке, чтобы количество баллов не изменилось. Ваше предложение по «максимально правильному решению задачи» требует использования словарей и многого другого. Мы же показали лишь принципы. И задачу в антивирусе мы решаем немного другую.
Да, не заметил, там же на 1 символ сдвигается. Ну я не совсем про словари, я имел в виду, что для более качественного решения нужен ИИ с другими принципами работы. Хотя согласен, статья не про это все-таки.
Извините, заголовок не в тему. Такая статья только запутает новичка (вроде меня). Машинное обучение строится на базовых алгоритмах классификации и регрессии + набор новых техник, об этом в статье ни слова. Это все появилось не сегодня и не вчера. Вы с таким же успехом могли использовать это 15 лет назад.
а где машинное обучение то? Чему машина научилась, в плане скормили input и правильный output, теперь можем кормить любой input.
Все 'знания': статистика по парам, граница отсечки и.т.п. заданы по сути человеком

```
Для этого скормим ей некоторое количество чистых строк и посчитаем их правдоподобность, а потом скормим немного зловредных строк — и тоже посчитаем. И вычислим некоторое значение посередине, которое будет лучше всего отделять одни от других. В нашем случае получится что-то в районе 500.
```
Опять же граница в итоге определена экспертом.
+ несколько сильно выпадающих данных(например: стто на оуто) — сильно сместят среднее и получится много ложно-позитива около среднего. фраза из серии: 'И тут звук:«Грхххх»' попадет в зловред

Никакого машинного обучения, старые добрые классические алгоритмы.
Машинное обучение в установке весов сочетаний и в группировке (установке порога).
ок. Было бы круто длину фрагмента тоже рассматривать как переменную. Тогда алгоритм бы еще свои 'слова/слоги' находил.
Задача: отличить осмысленный текст от белиберды

Текст, который пишут настоящие люди, выглядит так:

Могу творить, могу и натворить!
У меня два недостатка: плохая память и что-то еще.
Никто не знает столько, сколько не знаю я.

Белиберда выглядит так:

ОРПорыав аоырОрпаыор ОрОРАыдцуцзущгкгеуб ыватьыивдцулвдлоадузцщ
Йцхяь длваополц ыадолцлопиолым бамдлотдламда
Если так определить Белиберду, то ИМХО достаточно обычного спел-чекера, чтобы установить, что нет таких слов в словаре. А если определить:
Белиберда выглядит так:

Могу недостатка два, знает могу и я! Никто натворить!
У сколько еще память столько и.


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

Для вашей белиберды тоже подошли бы цепочки Маркова, но только не с парами букв, а с парами слов.
Да, я прочитал, что Вы решали более сложную задачу и верю, что хорошо решили. Но вот ИМХО для объяснения принципа выбрали неудачный пример.
Какое-то странное обучение, первая же мысль:
Берём частую пару букв(например «ст»), потом частую из тех, которые можно приклеить (то) и так далее.
В конце получим строку, считающуюся близкой к эталону чистоты. При этом осмысленность не требуется.

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

Насколько быстро в вашем случае обманщик научится использовать частоты пар?

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

Так же не забывайте, что злоумышленнику надо не просто обмануть модель (получить false positive/false negative), а обмануть модель с полезной нагрузкой (сделать зловреда, который признан чистым).

Поднятый вами вопрос освящен в пункте 2 раздела «Недостатки».
ПС Про читстые данные писали в пункте 1 раздела «Недостатки»
Поэзия Кручёных теперь не только заумная, но и зловредная? Литературная справедливость.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий