ailev.ru

3 ноября 2016 · Комментарий

Без заголовка

>А откуда "отставание в 4 года"? Я ничего такого не писал. У майкрософта всё вполне state-of-the-art. А, пардон, это Anton Kolonin в FB написал. >FreeBase я в глаза видел, много раз. Но мне почему-то кажется, что все эти работы с отношениями ползут в сторону embeddings (например, "направление" между двумя понятиями -- это отношение, как в знаменитых примерах про "король, королева, женщина, мужчина"). У одного из сотрудников AOT я 10 лет назад читал работу -- про бинарность предложения: не подлежащее главнее, не сказуемое, а оба вместе важны и нужны. Сейчас бы я расширил эту мысль ещё дальше: предложение -- это не иерархия, это кортеж: (вася, в быстром темпе, убежал, к другу на север). Но можно то же самое сказать и по-другому: (оперативно, петин друг, оказался, у него дома, на севере) -- смысл тот же, слова разные. Ни embedding, ни отношения не способны эту близость смыслов адекватно описать. Не то, чтобы это совсем тупиковые ветки, но это очень грубые "приближения". Embedding -- это что-то типа SVD: взяли собственные вектора и собственные значения для соотношений понятий, опустили менее важные части, а более важные части используем. Если обобщить оба предложения до одинакового embedding, то всё, что вы получите -- это "кто-то куда-то быстро переместился". Значит, embedding -- это лишь одна из частей решения, и ваши рассуждения вида "что куда будет трансформироваться для решения задачи" -- несколько наивны. Конечно, если добавить к embedding сверху несколько рекуррентных слоёв, то вы можете получить память, которая будет элементы этого кортежа хранить. Это уже больше похоже на черновик одного из вариантов решения, да? Только очень затратно так хранить данные и производить вычисления. 100 слов в секунду при достаточно низком качестве (для более высокого качества нужно увеличивать толщину слоёв и их количество, а также учить на экспоненциально большем датасете -- в 10 раз больше на один доп слой -- впрочем, тут есть ResNet , у которого этого ограничения нет, но его с рекуррентными слоями пока ещё плохо умеют делать... ну вы поняли. технология разумная, но ожидается крайне низкий рост качества / время, совсем неудовлетворительный на текущий момент и даже на 10 лет вперёд, и непонятно, можно ли как-то этот рост ускорить). В то же время, символьные подходы работают моментально, но требуют более качественной базы данных и вручную написанных операций на ней. Неплохо проработал данный подход для русского языка Тузов В.А. (почитайте работу "Компьютерная семантика русского языка"), но довести до ума не смог бы -- вручную составленный словарь невозможно нормально поддерживать. На мой взгляд, проблема с обработкой текста именно в отсутствии большой базы данных и автоматического построения операций на ней. ProBase и FreeBase -- это часть именно этого решения, ведь кошка -- это не на 80% животное, как говорит embedding, а на 100%, и в то же время кошка -- это вообще не собака, хоть embedding и говорит, что она на 34% собака (и на 23% "и"!). Вот эту вот "чёткость" (100% и 0%) embedding-и и нейросети вообще не способны обеспечить (помните решение FizzBuzz на Tensorflow с всего девятью ошибками? ). А для построения базы данных и операций вполне могут использоваться нейросети и embeddings -- скажем, ассоциативное мышление с использованием embedding -- по сути, компактная приближённая версия транзитивного замыкания графа понятий -- вполне может помогать (помните алгоритм A*? https://ru.wikipedia.org/wiki/Алгоритм_поиска_A* ).

К записи · К обсуждению