Помислете за типичен продукт за електронна търговия. Той ще има разнообразие от специфични за съдържанието функции, като заглавие на продукта, марка, миниизображение и т.н., и други функции, насочени към ангажираност, като брой кликвания, честота на кликване и т.н. Всеки модел на машинно обучение, поглъщащ функции на този продукт (напр. класиране на продукта, модел на препоръки и т.н. ) ще трябва да се справят с проблема за сливането на тези отделни характеристики. Най-общо казано можем да разделим тези функции в следните категории

В невронна мрежа, ако излезем отвъд входния слой, често срещаният проблем е около сливането (сливането) на тези функции и създаването на унифицирано вграждане на обекта (продукт за електронна търговия в нашия случай). Това унифицирано вграждане след това се трансформира допълнително в по-високите слоеве на мрежата. Като се има предвид разнообразието от функции (функции с плаваща стойност, функции, базирани на вграждане, категорични характеристики и т.н.), производителността на модела зависи от това кога и как обработваме тези функции.

В останалата част от публикацията ще обсъдим различни техники за сливане на функции.

Техники за сливане на функции за вграждане

За по-голяма простота първо ще разгледаме случая как да се справим с множество вграждания във входния слой с функции. По-късно ще включим архитектурни техники за сливане на плътност (функции с плаваща стойност). Като пример, ако изграждаме модел за препоръчване на музика, един от входните данни за препоръчителя може да бъде вграждане на последните k песни, слушани от потребителя, или вграждания на жанрове от последните k слушани песни. Сега бихме искали да слеем (слеем) тези вграждания, за да генерираме едно представяне за тази функция. Следващият раздел ще обсъди техники за комбиниране на тези вграждания във входния слой и генериране на унифицирано вграждане.

Метод 1 — Свързване и трансформиране

В диаграмата по-долу входният слой може да има текст, изображения и други видове функции. Съответният енкодер ще обработи съответния вход (напр. предварително обучен Resnet може да генерира вграждане на изображение, предварително обучен BERT може да генерира вграждане на текст и т.н.) и ще генерира вграждане. Тези вграждания са представени като вектор-1, вектор-2 и вектор-3.

При техниката на сливане, базирана на конкатенация, бихме свързали вграждания, принадлежащи към всяка модалност, и след това ще ги прекараме през напълно свързана мрежа.

Метод 2 — Обединяване

Друга лека техника е използването на техники като средно и максимално обединяване. В изображението по-долу, Youtube сесиен препоръчител слива вграждания на гледани видеоклипове в сесия, като използва средната стойност на техните вграждания.

Метод 3 — Сдвояване на точков продукт

В този метод бихме взели по двойки точков продукт на всяко вграждане (вектори в изображението по-долу). След двойните мъдри точкови продукти ние допълнително ще използваме MLP (или пълно свързани) слоеве, за да го трансформираме.

Един от недостатъците на тази техника е нейната изчислителна сложност. Поради квадратичната изчислителна сложност, броят на точковите продукти нараства квадратично по отношение на броя на вградените вектори. С все повече входен слой, свързването на точкови продукти с напълно свързан слой може да се превърне в пречка за ефективността и може да ограничи капацитета на модела.

За да преодолеем този проблем, можем да прибегнем доКомпресирана точкова продуктова архитектураобсъдена в следващия раздел

Метод 4 — Компресирана точкова продуктова архитектура

В горната фигура сме показали сливане на точков продукт по двойки като умножение на матрица. Разгледайте X като матрица от вградени функции. Тук имаме 100 функции и всяко вграждане на характеристики е с дължина 64. Точковият продукт по двойки може да се разглежда като продукт на матрицата на характеристиките и нейното преобразуване.

Техниката на компресиране използва факта, че матрицата на точковия продукт XX има ранг d, когато d ‹= n, където d е размерността на вградените вектори, а n е броят на характеристиките.

По този начин XXT е матрица с нисък ранг, която има O(n*d) степен на свобода, а не O(n2). С други думи, XXT е компресируем. Това е вярно за много настоящи типове модели, които имат оскъдни входни данни. Това позволява компресиране на точковия продукт без загуба на информация.

  • X е n*d матрица от n d-измерни вектора за вграждане (n=100;d=64).
  • Според техниките, описани тук, вместо изчисляване на flatten(XXT), се изчислява flatten(XXTY).
  • Y е n*k матрица (в примера k=15).
  • Y е параметър, който може да се научи и се инициализира на случаен принцип.

XXTще доведе до n * d * n операции, където като компресия на точков продукт XXTY ще отнеме O(n * d * k) операции (k е много по-малко от n).

Y е параметър, който може да се научи и се инициализира на случаен принцип. Y може да се научи заедно с други части на модела. Проекцията през Y значително намалява броя на невроните, преминаващи към следващия слой, като същевременно запазва информацията от оригиналната матрица на точковия продукт чрез използване на свойството за нисък ранг на матрицата на точковия продукт.

Един от недостатъците на този подход е, че научената матрица Y става независима от входа. Ще има еднакви стойности за всички входове. За да разрешим този проблем, можем да използваме компресия с внимание (моля, вижте Матрична компресия на точков продукт за машинно обучение за повече подробности).

Метод 5 — Сливане на вниманието

При този подход ние следваме логиката на „самостоятелното внимание“, за да слеем различни вграждания.

Метод 6 — Fusion на базата на дърво

При тази техника ние свързваме вгражданията на функции и ги предоставяме като единичен вход към модел на дървовиден ансамбъл, напр. „Подсилени дървета или GBT“. Този модел ще бъде обучен отделно от основната невронна мрежа. В тази фаза ще вземем резултат от листата на всяко дърво в ансамбъла. На изображението по-долу те са изобразени като h1, h2 и т.н. Слятото (трансформирано) вграждане ще бъде конкатенация на изхода на листа (h1 + h2 + ..). Това ще бъде предоставено като вход към основната невронна мрежа. На високо ниво това действа като нелинейна трансформация на входни характеристики.

Dense (Float) Характеристики Fusion

Специалният случай за сливане на функции е за функции с плаваща стойност. За разлика от комбинирането на функции, базирано на вграждане, тук имаме само един вектор от плаващи функции (напр. цена на продукта, честота на кликване, скорост на добавяне в количката и т.н.). За обработка на плътни характеристики бихме ги прекарали през напълно свързан слой с нелинейност. Това ще доведе до трансформирано представяне, което или ще се свърже, или ще взаимодейства с редки слети характеристики.

Базов модел

По-долу е описана примерна архитектура за базов модел

В тази архитектура първо извършваме сливане на плътни характеристики. Отделно редки характеристики (или вградени функции) ще имат сливане на точков продукт в отделен слой. Като следваща стъпка ние свързваме слетия вектор от плътни и редки вектори в арката на взаимодействие. В следващата част на мрежата извършваме трансформации върху конкатенирания вектор на характеристиките.

Dense Sparse Feature Fusion

Последното парче от пъзела е как да взаимодействаме плътните характеристики и редките характеристики. Досега сме виждали сливане на функции, базирано на вграждане (да речем чрез сливане на точков продукт) и плътно (функции с плаваща стойност) сливане. В този раздел ще проучим как да ги взаимодействаме (сливаме) заедно.

За плътно-разредени взаимодействия първо бихме генерирали междинно представяне на плътните характеристики чрез извършване на нелинейна трансформация. Тогава бихме изпълнили следните две стъпки

  • Конкатениране на трансформирано плътно представяне на характеристики към слой за взаимодействие
  • Подреждане на трансформираното плътно представяне на функции с вграждане на входове

По този начин плътното трансформирано представяне (изход на FC + слой Relu) ще участва в сливането на точков продукт, следователно ще взаимодейства с отделните вграждания на входния слой. Тъй като плътните функции съдържат информация за отклонение (напр. CTR или брой кликвания предоставят отклонение относно ефективността на продукта), бихме искали да запазим тази информация. Следователно по един вид остатъчна връзка ние свързваме трансформираното плътно представяне с изхода от сливането на точков продукт.