Word Embedded, LookupTable, Word Embedded Visualizations

Мне нужно задать несколько вопросов о встраивании слов ..... может быть простым.

  1. Когда мы преобразуем однократный вектор слова, например, король [0 0 0 1 0], во встроенный вектор E = [0.2, 0.4, 0.2, 0.2].... имеет ли значение каждый индекс в результирующем векторе слова? Например, E[1], который равен 0,2.... что именно определяет E[1] (хотя я знаю, что это в основном преобразование в другое пространство)... или вектор слова коллективно определяет контекст, но не индивидуально...
  2. Какое значение имеет размерность (уменьшенная или увеличенная) вектора слова по сравнению с исходным однократным вектором?
  3. Как мы можем определить таблицу поиска с точки зрения встраиваемого слоя?
  4. Является ли таблица поиска случайно сгенерированной таблицей или она уже была обучена отдельно относительно экземпляра данных в данных, и мы просто используем ее позже в операциях нейронной сети? 5- Есть ли какой-либо метод визуализации встроенного вектора на скрытом слое (как у нас есть в обработке нейронной сети на основе изображений)?

заранее спасибо


person Zaheer Babar    schedule 03.07.2017    source источник


Ответы (1)


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

  1. Превратить словарный запас в индекс. Например, у вас есть список слов: [собака, кошка, мышь, корм, игра, с] Затем предложения: Собака играет с кошкой => 0, 4, 5, 1 В то время как у вас есть матрица встраивания, как показано ниже.

    [0.1, 0.1, 0] # комментарий: это собака
    [0.2, 0.5, 0.1] # это кошка
    [...]
    [...]
    [... ]
    [...]

где первая строка — вектор встраивания собаки, вторая строка — кошка, затем так далее Затем вы используете индекс (0, 4, 5, 1) после того, как поиск станет матрицей [[0.1, 0.1, 0][... ][...][0,2, 0,5, 0,1]]

  1. either or both
    • You can randomly init embedding vector and training it with gradient descent
    • Вы можете взять предварительно обученный вектор слов и оставить его фиксированным (т.е. только для чтения, без изменений). Вы можете обучить свой вектор слов в модели и использовать его в другой модели. Наш вы можете скачать предварительно обученный вектор слова онлайн. Пример Common Crawl (токены 840B, словарный запас 2,2M, обложка, векторы 300d, загрузка 2,03 ГБ): glove.840B.300d.zip на Перчатка
    • Вы можете начать с предварительно обученного вектора слов и обучить свою модель градиентным спуском.

Обновление: Вектор One-hot не содержит никакой информации. Вы можете подумать, что однократный вектор является индексом этого вектора в словаре. Например, Собака => [1, 0, 0, 0, 0, 0] и кошка => [0, 1, 0, 0, 0, 0]. Есть некоторые различия между одним горячим и индексом:

  • если вы введете список индексов: [0, 4, 5, 1] ​​в свой многослойный персептрон, он не сможет ничего узнать (я пытался...). Но если вы введете матрицу горячего вектора [[. ..1][1...][...][...]], это чему-то учит. Но это дорого с точки зрения оперативной памяти и процессора.

  • One-hot требует много памяти для хранения нулей. Таким образом, я предлагаю случайным образом инициализировать матрицу встраивания, если у вас ее нет. Сохраните набор данных как индекс и используйте индекс для поиска вектора внедрения

«это означает, что таблица поиска — это просто матрица встроенных векторов (уже обученных отдельно через word2vec или…) для каждого слова в словаре. просто обратитесь к встроенному вектору в таблице поиска для этого конкретного встроенного вектора против конкретного горячего вектора».

Используйте «ИНДЕКС» для поиска в таблице поиска. Превратите собаку в 0, а кошку в 1. Вектор и индекс одного горячего состояния содержат одинаковую информацию, но для хранения одного горячего требуется больше памяти. Более того, многие фреймворки глубокого обучения принимают индекс в качестве входных данных для слоя встраивания (который на выходе представляет собой вектор, представляющий слово в этом индексе).

". Как мы получаем этот вектор встраивания..."

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

person Haha TTpro    schedule 03.07.2017
comment
Спасибо за это подробное объяснение... Что касается вашего ответа, мне все еще нужно прояснить его. 1- поэтому мы не должны сильно заботиться о значениях в плотном или встроенном векторе (как вы упомянули, что вектор для собаки равен [0.1,0.1,0] только здесь 0,1 не показывает ничего, кроме как вместе со всеми другими значениями индексов). Как мы получаем этот вектор встраивания для каждого горячего вектора в качестве побочного продукта от word2vec или других (обученные веса на скрытом слое? потому что мы не можем точно настроить значения одного горячего вектора) или ??? - person Zaheer Babar; 04.07.2017
comment
2- это означает, что таблица поиска - это просто матрица встроенных векторов (уже обученных отдельно с помощью word2vec или...) для каждого слова в словаре. и в то время как в процессе нейронной сети мы можем либо использовать Embedding Layer, либо мы можем просто обратиться к встроенному вектору в таблице поиска для этого конкретного встроенного вектора против конкретного горячего вектора. - person Zaheer Babar; 04.07.2017
comment
Для короля-человека модель пытается найти что-то максимально близкое к королю и максимально удаленное от человека. Это может быть королева. - person Radio Controlled; 01.12.2020