Я читаю статтю нижче і маю певні проблеми, розуміючи поняття негативної вибірки.
http://arxiv.org/pdf/1402.3722v1.pdf
Хто-небудь може допомогти, будь ласка?
Я читаю статтю нижче і маю певні проблеми, розуміючи поняття негативної вибірки.
http://arxiv.org/pdf/1402.3722v1.pdf
Хто-небудь може допомогти, будь ласка?
Відповіді:
Ідея word2vec
полягає в тому, щоб максимізувати схожість (крапковий добуток) між векторами для слів, які в тексті виглядають близько (в контексті один одного), і мінімізувати схожість слів, яких немає. У рівнянні (3) статті, на яку ви посилаєтесь, на мить ігноруйте степенування. Ти маєш
v_c * v_w
-------------------
sum(v_c1 * v_w)
Чисельник - це, в основному, подібність між словами c
(контекст) та w
(цільове) слово. Знаменник обчислює подібність усіх інших контекстів c1
і цільового слова w
. Максимізуючи це співвідношення, слова, які в тексті з’являються ближче, мають більше схожих векторів, ніж слова, яких немає. Однак обчислення цього може бути дуже повільним, оскільки існує багато контекстів c1
. Негативна вибірка - це один із способів вирішення цієї проблеми - просто c1
довільно виберіть пару контекстів . Кінцевим результатом є те, що якщо cat
з’являється у контексті food
, то вектор food
is більше схожий на вектор cat
as (як міри за їх крапковим добутком), ніж вектори кількох інших довільно вибраних слів(Наприклад democracy
, greed
, Freddy
), а всі інші слова в мові . Це word2vec
набагато швидше тренується.
word2vec
, для будь-якого даного слова у вас є список слів , які повинні бути схожі на нього (позитивний класі) , але негативний клас (слова , які не схожі на targer слово) складаються шляхом відбором проб.
Обчислення Softmax (функція для визначення слів, подібних до поточного цільового слова) є дорогим, оскільки вимагає підсумовування всіх слів у V (знаменник), яке, як правило, дуже велике.
Що можна зробити?
Запропоновано різні стратегії для наближення програмного макс. Ці підходи можна згрупувати у підходи на основі softmax та вибірки . Підходи на основі Softmax - це методи, які зберігають рівень softmax незмінним, але модифікують його архітектуру, щоб підвищити ефективність (наприклад, ієрархічний softmax). З іншого боку, підходи на основі вибірки повністю ліквідують шар softmax і замість цього оптимізують якусь іншу функцію втрат, яка наближає softmax (вони роблять це, апроксимуючи нормування у знаменнику softmax з деякими іншими втратами, які дешево обчислити, як негативна вибірка).
Функція втрат у Word2vec виглядає приблизно так:
Який логарифм може розкластися на:
За допомогою певної математичної та градієнтної формул (див. Докладніше на 6 ) він перетворений у:
Як ви бачите, він перетворений у завдання двійкової класифікації (y = 1 позитивний клас, y = 0 негативний клас). Оскільки нам потрібні мітки для виконання нашої двійкової класифікаційної задачі, ми позначаємо всі контекстні слова c як справжні мітки (y = 1, позитивна вибірка), а k випадково вибрані з корпусів як помилкові мітки (y = 0, негативна вибірка).
Подивіться на наступний абзац. Припустимо, що нашим цільовим словом є " Word2vec ". З вікном 3, наші контекстні слова: The
, widely
, popular
, algorithm
, was
, developed
. Ці контекстні слова розглядаються як позитивні позначення. Нам також потрібні деякі негативні мітки. Ми випадковим чином вибрати кілька слів з корпусу ( produce
, software
, Collobert
, margin-based
, probabilistic
) і розглядати їх як негативні зразки. Цей прийом, який ми вибрали випадковим прикладом із корпусу, називається негативною вибіркою.
Довідково :
Я написав підручник статті про негативну вибірці тут .
Чому ми використовуємо негативну вибірку? -> зменшити обчислювальні витрати
Функція витрат для ванільного Skip-Gram (SG) та Skip-Gram негативного відбору проб (SGNS) виглядає так:
Зверніть увагу, що T
це кількість усіх вокабів. Це еквівалентно V
. В інших словах, T
= V
.
Розподіл ймовірності p(w_t+j|w_t)
в SG обчислюється для всіх V
вокабів в корпусі з:
V
може легко перевищити десятки тисяч при навчанні моделі Skip-Gram. Ймовірність потрібно обчислювати в V
рази, що робить її обчислювально дорогою. Крім того, коефіцієнт нормування у знаменнику вимагає додаткових V
обчислень.
З іншого боку, розподіл ймовірностей в SGNS обчислюється з:
c_pos
є вектором слів для позитивного слова і W_neg
є вектором слів для всіх K
від’ємних зразків у вихідній матриці ваги. Для SGNS ймовірність потрібно обчислювати лише K + 1
разів, де K
зазвичай становить від 5 до 20. Крім того, для обчислення коефіцієнта нормалізації в знаменнику не потрібні додаткові ітерації.
За допомогою SGNS для кожної навчальної вибірки оновлюється лише частка ваг, тоді як SG оновлює всі мільйони ваг для кожної навчальної вибірки.
Як SGNS досягає цього? -> шляхом перетворення багатокласифікаційного завдання в двійкове завдання класифікації.
У SGNS вектори слів більше не засвоюються, передбачаючи контекстні слова центрального слова. Він вчиться диференціювати фактичні контекстні слова (позитивні) від випадково намальованих слів (негативні) від розподілу шуму.
У реальному житті ви зазвичай не спостерігаєте regression
за випадковими словами типу Gangnam-Style
, або pimples
. Ідея полягає в тому, що якщо модель зможе розрізнити ймовірні (позитивні) пари від малоймовірних (негативні) пари, будуть вивчені хороші вектори слів.
На наведеному малюнку поточною позитивною парою слово-контекст є ( drilling
, engineer
). K=5
негативні зразки випадковим чином звертається від розподілу шуму : minimized
, primary
, concerns
, led
, page
. Коли модель повторює навчальні зразки, ваги оптимізуються таким чином, що виводиться ймовірність для позитивної пари p(D=1|w,c_pos)≈1
, а для негативних - p(D=1|w,c_neg)≈0
.
K
як V -1
, то негативна вибірка така ж, як і модель ванільного скіп-граму. Чи правильно розумію моє розуміння?