Pull to refresh

Comments 11

Кхм.
«Мы попробовали LSTM и у нас что-то получилось. Про задачу не скажем, про фичи не скажем, про размер сети не скажем. Мы довольны. Мы работаем лучше, чем Аналог1 и также как Аналог2.»
1. У меня слов нету.
2. Попробуйте GRU в следующих раз и xgboost.
Хотелось бы, чтобы уважаемые комментаторы читали внимательно статью, прежде чем писать критику. Тем более такую. В статье нет «попробовали LSTM и у нас что-то получилось», а ясно сказано, что LSTM работает хорошо, но медленно. Для больших объемов текста это имеет значение. Рассмотренная модель гораздо проще чем LSTM или GRU, а дает тот же результат. В этом ее плюс.

Точные размеры сети значения не имеют, их подбирают под задачу. Кто разбирается, сможет это сделать, а кто не разбирается… ну, будет писать вот такую критику ни о чем.

Да, это не научная статья, это иллюстративный пример, что бывает на практике с подобными задачами, как они решаются и чего можно дробится. И тут раскрыто довольно много информации, которая может в аналогичном случае сэкономить много времени и нервов.
Соглашусь с Durham, технические аспекты реализации задачи отражены, «роад мап» передан, а что касается конкретных инструментов при реализации, так это как с фломастерами, они разные. И все же, это же статья, и ее автор преследовал цель отразить реальный опыт в реальном проекте при этом в разумных по объёму пределах. Думаю, чем больше статей в этой, интересной тематике не академического характера, а по реальным проектам тем лучше.

Смотря на беседу в комментариях, автор охотно отвечает на все вопросы по методам.
Интересно, что и в КЗ есть нужда в машинном обучении.

По статье было бы интересно узнать детали:
(Я изучаю машинное обучение как хобби и не собираюсь вытянуть вашу коммерческую новизну)
— Каким инструментом пользуетесь (TF, Theano, или самописный)?
— Какой объем текста в датасете и какой результат в известных/открытых датасетах выдает модель нейросети вашей компаний?
— Как я понял в вашей модели не используете LSTM, а предыдущий вывод передаете во вход текущего выполнения. Не считаете ли, что тут в вашей системе кроется проблема в случае длинных предложений (не запоминает больше 7(?) слов)?
— Такая реализация как бы запоминает информацию внутри модели. Т.е. возможность запоминания зависит напрямую от размера сети. Так если ваша модель fullyconnected — то на сложных задачах просто не будет запоминать высокоуровневую информацию, либо потребуется очень много времения для обучения большой сети.
Каким инструментом пользуетесь (TF, Theano, или самописный)

То, что описано в этой статье, сделано на собственном инструменте. Про TF я писал ранее, там есть плюсы и минусы.
Какой объем текста в датасете

Объем для данного примера указан в статье. («удалось разметить выборку объемом 112 000 слов»). Данные на общедоступных датасетах, см. здесь
Не считаете ли, что тут в вашей системе кроется проблема в случае длинных предложений (не запоминает больше 7(?) слов)

На самом деле, даже простую сеть Элмана можно обучить запоминать контекст на сотню шагов назад выбрав правильную инициализацию и метод обучения. Проблема, как я написал в статье, в другом — то что переобучение на данных близких по времени наступает раньше, чем сеть учится использовать дальний контекст. Предложенная модель решает эту проблему.
Такая реализация как бы запоминает информацию внутри модели. Т.е. возможность запоминания зависит напрямую от размера сети

Да, но не от размера сети в целом, а от размера блока памяти.
Так если ваша модель fullyconnected

В блоке памяти рекуррентные нейроны не fullyconnected, они соединены только сами с собой (во времени). Поэтому могут хранить информацию дольше.
Здравствуйте, интересная статья. Но хотелось бы по подробнее про признаки, так как сами понимаете, что Feature Engineering не менее важен самого алгоритма машинного обучения. Судья по тому что у Вас RNN скорее всего используется word2vec, так ли это?
Вообще метод с нейронными сетями тем и хорош, что можно получить приличные результаты, не занимаясь подбором признаков, типа «слово начинается с большой буквы, является существительным и оканчивается на -сь». На входе вектора слов, не word2vec, но аналогичный метод (детали, как вектора были получены и их размеры опубликованы в рамках другой работы).
А не могли бы уточнить, что значит базовый набор признаков CRF? Базовый — это один или тысяча признаков? Причем поскольку CRF граф, то вершины можно соединять как вздумается, т.е. этот «базовый набор» можно чередовать в произвольной последовательности и получать абсолютно разные результаты.
Сколько у вас типов (классов) сущностей? — От этого так же сильно зависит точность.
Дело в том, что на том же CRF я получал от 85 до 92 % точности на пяти типах сущностей. При этом скорость порядка 400-500кБ/с — но это уже от движка зависит.
линейный CRF, признаки — слова, слова после стеммера, части речи (POS-tags), регистр слова, все в окне до 3 слов вперед и трех слов назад (подобрано до получения оптимального результата).

92% это accuracy, precision или F1? и на какой был объем обучающей и тестовой выборки?
F1, объем обучающей — около 80 т. предложений.
Использую графематические признаки (их штук 10-15) и н-граммы слов (так же до трех).
POS-tags не дает прироста, нормализация слов (со снятием омонимии) дает прирост чуть более процента, но тормозит процесс в 3-4 раза. То есть модуль работает на потоке с плоским текстом, но быстро.
80 тыс. предложений это примерно в 5 раз больше, чем выборка о которой идет речь в этой статье. Отсюда и разница в цифрах.
Sign up to leave a comment.