Как обучить сверточную НС для векторизации текста?
====================================================

 Я хочу использовать CNN для получения векторного представления текста. Т.е. вначале каждое слово преобразуется в вектор (например, с помощью word2vec). А затем нужно пропустить такой текст через сверточную сеть, чтобы получить векторное представление всего текста. Так вот, не понятно, как такую сеть обучать. Если допустим для классификации текстов или анализа тональности, понятно что сеть дает ответ, который мы сравниваем с имеющимся у нас и т.д., а как обучать сеть когда выхода как такового нет? 

 Я бы пошёл дальше и спросил для чего нам векторизация текста. Вы указали, например анализ тональности. Но анализ тональности можно проводить разными методами [см. анализ тональности](https://ru.wikipedia.org/wiki/%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D1%82%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D1%82%D0%B5%D0%BA%D1%81%D1%82%D0%B0) И метод с векторами кажется мне здесь не самым удобным, ведь на выходе скорее всего получится много отдельных графив-деревьев, т.е. лес, а значит будем иметь дело с несвязанными графами.  

Для этой задачи проще применить словари тогда уж.  
  

Далее почему графы, а например не... битраммно-триграммный анализ? Биграммы может и не дадут нужной точности, а вот количество триграмм хоть и достаточно велико, но конечно, а главное, существенно меньше количества возможных слов (подробнее [aztips.blogspot.ru/2009/04/blog-post\_12.html)](http://aztips.blogspot.ru/2009/04/blog-post_12.html)) Составили список триграмм в негативных текстах, в позитивных и в нейтральных, всё анализируете и классифицируете. Если точность не удовлетворяет, тогда применяете пару методов. 

 Вот нужно вам понизить размерность входных данных. Почему CNN? Почему не PCA, t-SNE, автоэнкодеры?  

Понижать размерность ради понижения размерности - сомнительная затея, вы ведь наверняка это используете для подготовки данных к решению какой-то задачи. Вот по качеству решения этой задачи и подбирайте параметры сетки 

 Сам интересуюсь сейчас этой проблемой - алгоритмы doc2vec. Мне вообще кажется, что эта задача должна решаться за счет использования seq2seq как собственно автокодировщика - подаем на вход и выход одни и те же данные, заставляем сеть перегонять фразу в вектор и обратно в фразу и получаем внутри некоторое векторное представление, с которым можно работать. Например, подавать в seq2seq следующего уровня.  

Вообще за последний год вышло несколько интересных статей про Hierarchical RNN. Еще интересный вопрос - это использование char-based RNN или CNN для word embedding. В таком случае должна отпадать проблема с OOV-словами, плюс обрабатываться различные орфографические ошибки.