Юрий Бабуров @buriy
Web, AI, Deep Learning, Python
Information
- Rating
- Does not participate
- Location
- Новосибирск, Новосибирская обл., Россия
- Date of birth
- Registered
- Activity
Specialization
Backend Developer, Chief Technology Officer (CTO)
Lead
Web, AI, Deep Learning, Python
но, в любом случае, вы как раз отлично проиллюстрировали сейчас мою мысль: Greenback жалуется на то, что именно на основе таких отзывов возможно строить качественные модели языка, но вот придёт GPT-3 и обязательно всё испортит!!!
У вас претензия к DL в целом? Или претензия к инженерам, которые нейросети суют везде для практического использования? Или к маркетологам, которые продают системы с нейросетями как ИИ?
В любом случае, вам не сюда. Мир в интернете деградирует именно из-за того, что люди всё подряд обкладывают руганью, не желая ни в чём разбираться и правильно формулировать свои мысли.
Пока вы будете пребывать в парадигме «робот не производит новых смыслов», ваши выводы будут казаться логичными. Хотя доказательств того, что робот эти смыслы не производит, у вас нет. Более того, роботы уже давно производят эти новые смыслы, Николай Иронов подтвердит. Да, не все смыслы, и не всегда. Но лиха беда начало!
Давайте рассмотрим такую аналогию. Предположим, есть какой-то более общий способ измерить IQ, «калорийность», в задачах написания текстов. Хотели бы мы, чтобы тексты писали только существа с IQ<50? Неважно, люди или роботы. Да нет, нам их будет неинтересно читать! А хотели ли бы вы почитать умные полезные для вас мысли от существа с IQ>150? Да, хотели бы! Понимаете? Ответ на этот вопрос не зависит от того, человек написал текст или робот. А значит, вы просто роботошовинист и зря ругаете роботов. Запрограммируйте тест на IQ, работающий по тексту, фильтруйте — и вуаля, получите только интересные тексты.
Теперь второй связанный с этим вопрос. «Правдоподобность — не единственный критерий качества.» Я нигде не говорил про правдоподобность. Я говорил про «отличить». Если работы роботов будут ниже качеством, то эти тексты можно будет отличить по качеству. Это я имел в виду. Отличить по правильному или неправильному использованию фактов, по уровню логики, по наличию новых интересных выводов, по тому, заставил ли вас текст задуматься — в общем, берите любую нужную вам характеристику хороших текстов. Щит улучшается быстрее меча в более крупных текстах (начиная с текстов новостей), и нет никаких причин, что будет наоборот — до появления настоящего AGI (Общего ИИ), конечно.
Авторы GPT-2 писали, что испугались публикации самой крупной модели именно потому, что полученные тексты невозможно было отличить существовавшими на тот момент методами, и тем более человеком. Но быстро были найдены способы автоматически отличать такие тексты, так же как современными технологиями легко отличить тексты, сгенерированные марковскими цепочками (которых боялся мой оппонент в 2011м году примерно по тем же основаниям, что и вы: он утверждал, что борьба со спамом станет намного сложнее). Cейчас, в конце 2020го года, ограничения на публикацию моделей GPT-2 и GPT-3 уже не выдерживают никакой критики.
Но это всё не относится к коротким текстам, типа отзывов о ресторанах и продуктах, там человеку уже недостаточно данных для отличения робота и человека. Потому что люди ленятся и часто пишут шаблонные тексты, да и спамят, кстати, тоже сейчас люди. Половина прочитанных вами отзывов наверняка была спамом, созданным человеком за копейки. И половина прочитанных вами статей в интернете кстати тоже реврайтинг, сделанный людьми. А уж сколько почтового спама, сделанного по шаблонам, написанными людьми, вы прочитали… Теперь будут спамить ещё и роботы, но что от этого принципиально поменяется в этих коротких текстах?
а у вас есть идеи, почему он не исправляет (и как исправлять) следующие сочетания слов:
сколько сутки идет дождь
получилась посчитать
он снул на диване (уснул)
он снул руку в реку (сунул)
онснулрукувреку (он сунул руку в реку)
Поэтому ваша часть поста про технологии — это какой-то шаманизм. Вы говорите: «мы (… пообщались с духами и...) нашли секретную теорию из прошлого, на основе которой построили технологию, которая перевернёт мир». А на деле получается — «мы называем всё подряд нейронами, потому что очень хорошо видим аналогии», и ничего нового и коммерчески крутого. (Хотя «крутость» обычно идёт от нахождения успешной модели получения денег, а не успешно проделанной домашней работы по реализации поиска… но что ожидать от стартапа 2005 года? все такими были в 2000х).
Мне кажется, в закрытых коммерческих областях люди часто переоценивают значимость собственных идей — ведь они не знают, что все конкуренты уже давно этими технологиями пользуются (или же даже конкуренты давно отбросили эти технологии как неподходящие по какому-то из параметров: скорость, цена, качество работы, время настройки).
И выводы странные: «не было коммерческого успеха, потому что была зима ИИ». Отсутствие логики детектед, звучит примерно как «у продавца не было продаж, потому что был плохой день». Плохой день — он потому и плохой, что ничего не продаётся, понимаете? А на самом деле правильное объяснение — не было продаж, потому что нечего было продавать! Не было даже признаков успешных будущих применений технологии в 60е-80е, поэтому и не давали финансирование на усиленные разработки. Какой смысл выделять деньги много раз на расширение неперспективных исследований? Сравните это с кризисом перепотребления, когда всё, что можно, уже изобрели, вот только в области ИИ это называется «зимой ИИ».
Именно так. А иначе там тысяча разных моделей, и смысл их все сразу обсуждать не очень понятен.
Вы вполне можете с Алексеем пообщаться, я с ним общался неоднократно.
Поэтому же в примере с распознаванием номеров была не модель Алексея, а модель Васи.
Это разные модели. Нет случайных подвыборок — нет LSH, это другая модель, это просто обычные свёрточные нейросети.
Есть случайные подвыборки (random projections) и механизм обучения, как у мухи — это опять другая модель (в нейросетях определённый механизм обучения).
Вы их сливаете вместе, притом, что у этих моделей совершенно разные свойства и разные ограничения. Модель мухи не выучит никогда качество >70% на одном слое, а нейросеть — выучит почти 90% на одном слое. Нейросети отлично стакаются, но когда целевая функция шумит, то это преимущество исчезает.
Кстати, гуглится это по ключевым словам «random projections» (in neural networks)), и в целом, это кое-где применяется, особенно там, где random projections дёшево делать. Если же их делать дорого, то смысла в них нет (гуглить quantization & pruning methods for neural networks )
Тогда у вас будет
for(i){
r[i] = (V >> i & M == M);
}
но это будет не свёртка, т.к. у вас не суммирование, а точное сравнение. У него другие свойства, и, мне кажется, фиговая обобщающая способность, т.к. приближённое равенство он не найдёт.
Но это можно свести к свёртке с порогом равным len(M), обозначая свёртку за "%", поэлементное логическое отрицание за "~", поэлементное сложение за "+":
Y = (M % V) + ((~M) % V)
r = (Y[i] >= len(M)-i)
или лучше даже добавить паддинг нулями:
Y = (padded(M) % V) + ((~(padded(M))) % V)
r = (Y[i] >= len(M))
(И вот тогда вы кстати поймёте, что порог не обязательно должен быть равен M, и тогда вы получаете приближённое сравнение вместо точного)
В каждой точки выходной матрицы свёртки — фиксированные координаты сдвига матриц, в какой-то одной (центральной) точке выходной матрицы будет умножение с нулевым сдвигом, которое вам и нужно было.
Мы можем обрезать края, тогда при равном размере матриц у нас останется только центральный элемент. Такой вот вырожденный случай. Правда, чаще это будет всё же называться скалярным умножением (только надо развернуть вторую матрицу в обратном направлении, в свёртке правая матрица считается справа налево),
так же, как «матрица 3х1» не называется обычно матрицей, а называется вектором, а «матрица 1х1» обычно называется скаляром.
Код на входе у Алексея формируется через преобразование сигналов из других зон. Преобразование этих сигналов напоминает LSH. Лучше дам ссылку: medium.com/@jaiyamsharma/efficient-nearest-neighbors-inspired-by-the-fruit-fly-brain-6ef8fed416ee
Да и преобразование внутри зоны построено по принципу этого же LSH.
А ещё, если мы считаем, что вход прошлой зоны обладал низкой размерностью, то он будет расширен до большой размерности… волновыми паттернами по модели того же самого LSH ( habr.com/ru/post/308370 ).
Вот откуда там хеши: по сути, хеш сидит и хешем погоняет. Если нет обратного распространения ошибки, то «динамический резонанс» (взаимное отображение зон коры друг на друга) можно сделать лишь с помощью LSH-хешей.
>Какая она свёртка, если не сворачивает
Ну что за детский сад начинается? Свёрткой называется преобразование, которое умножает одну матрицу на другую со сдвигом. Операцию назвали convolve («переплетать, связывать»). Отсюда пошло определение, а вовсе не от бытового русского смысла слова!
Если матрица второго преобразования 1х1, то это всё равно свёртка, но она не уменьшает размерность.
А теперь, мы же говорим про слой в нейросети, а это обычно одномерный массив из таких операций свёртки, и они добавляют к результирующему массиву дополнительную размерность. Ширина слоя (количество свёрток, они же свёрточные фильтры) может быть любой, хоть миллион, и тогда итоговая матрица будет огромной.
Посмотрите что ли лекцию Семёна в нашем курсе по нейросетям: Лекция №6: www.youtube.com/watch?v=tOgBz8lFz8Q
>Вот в этом фишка, там у него нет нейронов, что-то распознающих, на этом делается акцент
Так в нейросети тоже нет «нейронов, что-то распознающих»! Откуда этот бред вообще берётся?
>В том же моём примере потребовалось бы на каждое новое слово заводить по свёртке и строке в массиве
Так не заводите! Если есть обучение — то оно и без свёртки на каждое новое слово будет работать.
>У Редозубова получается, что можно узнавать любое количество слов
Потому что в нейросети тоже. Вот вы пользуетесь google translate, там что, ограниченный словарь?
Нет, в нейросети ограниченное число нейронов, но бесконечный словарь.
Способ «по нейрону на слово» временами используется на первом слое нейросетей, но только потому, что так выше качество и меньше требования к мощности сети. Но в последнее время это же делается с помощью BPE, это такой код для деления сложных слов на простые, и всего такой словарь кодов может составлять 1000...100000 кодов.
А, например, в библиотеках для работы со словами, на примере spacy-ru, это используется так, что для каждого слова фичами, поступающие на объединяющие слова слои, являются:
— выучиваемое векторное пространство размерности 2000 для кода первых 3 символов
— выучиваемое векторное пространство размерности 2000 для кода последних 3 символов
— выучиваемое векторное пространство размерности 4000 для кода слова
— выучиваемое векторное пространство размерности 2000 для кода
— предобученное векторное пространство размерности 200000 для кодов лемм (лемма — начальная форма слова, например, «ходить» для «ходили», такие леммы со словами сопоставляются по словарю ).
Но в любом случае, один свёрточный фильтр = одна колонка Алексея. С точки зрения структуры и самого распознавания, соответствие между этими моделями взаимнооднозначное. А вот если смотреть на вторичные моменты — в нейросети-то всё понятно, а вот то, как ложится модель Алексея на реальный мир — не очень… Конкретнее, волнуют вопросы обучения колонок и вопросы обмена данными между колонками. Там уровень гипотез вида «ну, как-то оно учится/распространяется», алгоритмов там у Алексея пока я не видел, уж при всём моём уважении к нему.
Интерпретация нейросети / чего-то ещё — это и есть задача попытаться понять, как оно работает. Но везде именно «мультидетекторы», просто иногда получается узнать одно или несколько направлений детектирования.
Ну и я в принципе не понимаю, чем плохо, если какой-то нейрон будет детектором какого-то конкретного признака (и это опять же не значит, что все будут такими). Т.е. мультидетектор иногда может быть детектором, и это нормально.