Як навчається шар вбудовування в шар вбудовування Keras? (скажімо, використовуючи заголовок tensorflow, тобто це схоже на word2vec, рукавичку або швидкий текст)
Припустимо, ми не використовуємо перевірене вбудовування.
Як навчається шар вбудовування в шар вбудовування Keras? (скажімо, використовуючи заголовок tensorflow, тобто це схоже на word2vec, рукавичку або швидкий текст)
Припустимо, ми не використовуємо перевірене вбудовування.
Відповіді:
Вкладення шарів у Keras навчається так само, як і будь-який інший шар у вашій мережевій архітектурі: вони налаштовані на мінімізацію функції втрат за допомогою обраного методу оптимізації. Основна відмінність від інших шарів полягає в тому, що їх вихід не є математичною функцією вводу. Натомість вхід до шару використовується для індексації таблиці з вбудованими векторами [1]. Однак основний двигун автоматичної диференціації не має проблем оптимізувати ці вектори, щоб мінімізувати функцію втрат ...
Отже, ви не можете сказати, що вбудовуючий шар у Keras робить те саме, що word2vec [2]. Пам'ятайте, що word2vec відноситься до дуже специфічної налаштування мережі, яка намагається навчитися вбудовуванню, що фіксує семантику слів. За допомогою вкладеного шару Кераса ви просто намагаєтеся мінімізувати функцію втрат, тому, якщо, наприклад, ви працюєте з проблемою класифікації настроїв, вивчене вбудовування, ймовірно, не буде охоплювати повну семантику слів, а лише їх емоційну полярність ...
Наприклад, на наступному зображенні, взятому з [3], показано вбудовування трьох речень із шаром вбудовування Keras, підготовленим з нуля, як частини керованої мережі, розробленої для виявлення заголовків кліків (ліворуч) та попередньо підготовлених вкладок word2vec (праворуч). Як бачимо, вбудовування word2vec відображають смислову схожість між фразами b) і c). І навпаки, вкладення, згенеровані шаром Вбудовування Кераса, можуть бути корисними для класифікації, але не фіксують семантичну схожість b) і c).
Це пояснює, чому, коли у вас є обмежена кількість навчальних зразків, може бути гарною ідеєю ініціалізувати свій вбудовуючий шар з вагами word2vec , так що принаймні ваша модель визнає, що "Альпи" та "Гімалаї" схожі речі, навіть якщо вони не Обидва не трапляються у реченнях вашого навчального набору даних.
[1] Як працює шар "Вбудовування" Кераса?
[2] https://www.tensorflow.org/tutorials/word2vec
[3] https://link.springer.com/article/10.1007/s10489-017-1109-7
ПРИМІТКА. Насправді зображення показує активацію шару після шару Вбудовування, але для цього прикладу це не має значення ... Детальніше див. У [3]
Шар вбудовування - це лише проекція з дискретного та розрідженого 1-горячого вектора в безперервний та щільний прихований простір. Це матриця (n, m), де n - ваш розмір словникового запасу, а n - бажані латентні розміри простору. Тільки на практиці немає необхідності насправді робити множення матриць, і натомість ви можете заощадити на обчисленні за допомогою індексу. Тож на практиці це шар, який відображає додатні цілі числа (індекси, відповідні словам) у щільні вектори фіксованого розміру (вбудовуючі вектори).
Ви можете навчити його створювати вбудовування Word2Vec, використовуючи Skip-Gram або CBOW. Або ви можете навчити це для вашої конкретної проблеми, щоб отримати вбудовування, яке підходить для вашої конкретної задачі. Ви також можете завантажити попередньо підготовлені вкладиші (наприклад, Word2Vec, GloVe тощо), а потім продовжити навчання з вашої конкретної проблеми (форма трансферного навчання).