Быстрое слово ободрения, я помню, чувствовал себя точно так же; безумно разочарован , когда я начал изучать это поле. Это действительно становится легче!
Вложения слов создаются путем обучения без учителя. Тем не менее, вы можете использовать обученный слой встраивания в пределах контролируемого проецирования, как вы делаете. Другими словами, ваш проект - это обучение под наблюдением, и на одном из слоев используются веса, полученные с помощью техники обучения без контроля. и что они могут сделать для контролируемого обучения. Я попытаюсь объяснить нетехническим способом, чтобы вы могли прочувствовать концепцию до изучения особенностей и педантизма.
Предположим, вы начинаете с гигантского корпуса. Вы подсчитываете частоту встречаемости каждого слова и используете его для ранжирования каждого по отношению к другим (или используете какую-то другую формулу, что угодно). Это метод текстовой «токенизации». Дело в том, чтобы получить слова в числах. Очевидно, что это важно, так как мы собираемся сделать с ними математику, но это создает некоторую щепотку: числовые отношения не обязательно несут какую-либо информацию о взаимосвязях значений слов , Чтобы улучшить это, вы можете обучить небольшую сеть, например, так: возьмите куски из вашего корпуса и создайте skipgrams , и научите сеть, что после применения весов и меры косинусное сходство , вывод должен быть 1
, если слова появляются рядом друг с другом (или некоторыми другими критериями), или 0
(или, возможно, -1
, если вы предпочитаете), когда они не появляются рядом друг с другом. В течение всего корпуса слова, которые, как правило, используются вместе, будут двигаться вместе и наоборот. Цель состоит в том, чтобы создать своего рода карту (или симулякр, если хотите) относительного значения токенов (которые являются словами); Иными словами, цель состоит в том, чтобы создать n-мерное представление относительных значений слов. Затем, после обучения, вложения могут быть сохранены для использования в таких проектах, как ваш. Затем ваш слой внедрения будет искать токен в сохраненных вложениях и извлекать его выходные данные, которые являются векторным представлением этого слова в пространстве внедрения; их координаты на нашей теоретической карте. Это считается «без присмотра», потому что вам не нужно явно предоставлять основную правду для сравнения; в этом случае он генерируется процедурно из обучающей выборки (то есть скипграмм, сгенерированных из того, что было введено). Другим примером может быть, если ожидаемый результат будет идентичен входу (как в авто-кодировщиках), который не контролируется (как раньше), потому что вам не нужно предоставлять ожидаемый результат; если вы вводите данные, они автоматически получают ожидаемый результат.
Если все это сбивает с толку, просто сделайте паузу и подумайте о своих собственных мыслях: если я попрошу вас сказать слово, которое означает то же самое, что и «большой» в При фразе «большая пицца» вы обращаетесь к своему пониманию значения слова «большой», относящегося к указанной фразе, и рисуете что-то максимально близкое к ней: возможно, слово «большой». Вложения - это способ создания карты, в которой «большая» и «большая» расположены очень близко друг к другу вдоль большинства осей (то есть в большинстве измерений).
Итак, когда вы загружаете некоторые предварительно обученные вложения, вы просто загрузив несколько весов в один из ваших слоев. Иногда люди инициализируют слои с нулями, иногда люди используют случайные нормальные или гауссовские распределения, а иногда люди используют определенные c значения (например, загрузка сохраненной сети или загрузка вложений); все то же самое. Если вы go собираетесь выполнять тренировку под наблюдением, то вы делаете именно это: выполняете тренировку под наблюдением. После слоя внедрения информация, с которой вы работаете, - это не произвольные слова, а скорее это: относительные значения. И если это не просто аккуратно, я не знаю, что это такое! Я считаю, что полезно учитывать, что представляют ваши данные, когда они проходят через сеть.