Size: a a a

Natural Language Processing

2021 May 13

IG

Ilya Gusev in Natural Language Processing
там правда всё не совсем просто для кастомных (не sklearn и *boost моделей), нужно самому через TextSampler'ы смещённые сэмплы генерировать (выкидывать и заменять слова)
источник

IG

Ilya Gusev in Natural Language Processing
на зато можно для действительно любой модели объяснялку делать
источник

VH

Vladimir Havrilyuk in Natural Language Processing
Буду пробывать)))
источник

S

Sasha in Natural Language Processing
а в чем принципиальное отличие sklearn от кастомных, что имеешь в виду?

там скорее же разница в том какой токенайзер отдавать лайму?
источник

S

Sasha in Natural Language Processing
из той же серии есть еще captum
источник

DD

David Dale in Natural Language Processing
В такой архитектуре есть очень интуитивный способ оценить вклад каждого слова в прогноз.
Берём последний LSTM слой, и делаем в нём return_sequences=True (это можно реализовать, создав такую же модель, но с return_sequences=True, и клонировав в неё веса старой).
Такая модель будет предсказывать вероятность каждого класса не в конце текста, а для каждого слова. Т.е. мы на выходе получим не 6 вероятностей, а матрицу max_comment_len*6 вероятностей.
В этой матрице можно посчитать разность всех соседних строк, и она как раз и будет вкладом каждого слова. Т.е. слово, на котором вероятность класса i сильно растёт, очевидно вносит большой вклад в этот класс в данном предложении.
источник

S

Sasha in Natural Language Processing
ну точнее он о другом немного, но можно тоже через integrated gradients для эмбеддингов токенов пытаться интерпретировать

но тут отдельный вопрос что брать за бейслайн наблюдение
источник

DD

David Dale in Natural Language Processing
Это будет работать быстрее, чем lime, потому что lstm слои (самые тяжёлые) придётся всего один раз вперёд прогонять. Но работает только для этой архитектуры (односторонняя рекуррентная сеть).
источник

IG

Ilya Gusev in Natural Language Processing
не, для кастомных моделей нужно ещё и предиктор свой написать
источник

VH

Vladimir Havrilyuk in Natural Language Processing
спасибо
источник

T

Timur in Natural Language Processing
удваиваю, captum топ
источник

S

Sasha in Natural Language Processing
а, да оборачивать нужно бывает, ты прав, для табличек там еще свои приколы с категориями бывают, приходится декорировать
источник

T

Timur in Natural Language Processing
кстати да, я так и не понял, что брать за бейзлайн в IG
в принципе, можно и нули, если эмбеддинг какого-нибудь pad токена тоже нулями заполнен
источник

S

Sasha in Natural Language Processing
но ключевой момент именно в токенайзере мне кажется для лайма, по дефолту он там по пробельным вроде, а если модель сабворд использует, то грубая аппроксимация совсем может получаться

ну наверное реколл значимых токенов большой все равно, а вот детализация не очень
источник

S

Sasha in Natural Language Processing
я обычно беру то, что паддингу соответствует, если он не обучается, то есть в слое эмбеддингов прям указан явно
источник

T

Timur in Natural Language Processing
а если обучается? берешь из матрицы эмбеддингов?
источник

S

Sasha in Natural Language Processing
в целом это наверное странная ситуация, когда он обучается, но я такое встречал, просто не выставлен параметр в слое, например

бывает ещё, что сначала задают паддинг, а потом инициализируют веса в слоях и он перестает быть нулевым тензором, вроде, просто градиент к нему не приходит при обучении, если он был специфицирован
источник

S

Sasha in Natural Language Processing
можно наверное брать и для bos/eos тензоры, если есть
источник

T

Timur in Natural Language Processing
ну вообще да, в том же торче есть параметр padding_idx
источник

T

Timur in Natural Language Processing
надо будет прогнать несколько вариантов и посмотреть
странно, что в оф. доках я ничего, связанного с бейзлайном (для текстов) не замечал
источник