Pull to refresh
0
0
Send message
В статье читаем: “Выходом модели является результат скалярного умножения последних векторов заголовка и запроса (если быть совсем точным, то вычисляется косинус угла между векторами). Модель обучается таким образом, чтобы для положительны обучающих примеров выходное значение было большим, а для отрицательных — маленьким.”

Не совсем понятно, как обучается модель. Если я не ошибаюсь, здесь речь идет о сравнении векторов методом Cosine similarity (https://en.wikipedia.org/wiki/Cosine_similarity). Чем меньше угол между двумя векторами и соответственно косинус этого угла ближе к 1, тем более похожими считаются вектора. А косинус угла тем ближе к 1, чем больше значений компонент совпадают в этих векторах.

В обучающей выборке очень даже могут быть такие два примера:
1)
PNeg1 — негативный пример, заголовок по смыслу не соответствует запросу.
Q1 — вектор первого запроса.
H1 — вектор заголовка с которым сравнивается первый запрос.
C1 = 0.9 — косинус угла между Q1 и H1, т.е
вектора сильно похожи.
2)
PPos2 — позитивный пример, заголовок и запрос хорошо похожи по смыслу.
Q2 — вектор второго запроса.
H2 — вектор заголовка с которым сравнивается второй запрос.
C2 = 0.1 — косинус угла между Q2 и H2, т.е
вектора очень мало похожи.

Поскольку вектора запроса и заголовка строятся из триграмм и комбинаций слов без учета их семантики, вполне возможна ситуация, при которой многие компоненты двух векторов совпадут, в то время как по смыслу никакого совпадения между запросом и заголовком нет. И наоборот. Например:
Q: “В какой статье пишут о том как наши атлеты вырываются вперед?”
H: “Наши вырываются вперед!” — заголовок статьи о получении букеровской премии нашего автора.

В момент написания этого текста, Яндекс, в ответ на данный запрос, выдает:

“Эксперт: эффект разорвавшейся бомбы, или о том, как Трамп вырвался вперед”

А Google:

“Болеем в Рио за спортсменов от Краснодарского края”

Правда, интересно получается?

Поскольку любые два вектора характеризуются одним и только одним косинусом угла между ними, то изменить этот косинус (меру похожести), можно только меняя сами вектора.
Если я не ошибаюсь, то в алгоритме Палех это выглядит примерно так:
1) Bq — мешок триграмм и слов построенных из запроса.
Строим всевозможные вектора Vq заданной длинны N комбинируя элементы из мешка Bq.
2) Bh — мешок триграмм и слов построенных из заголовка.
Строим всевозможные вектора Vh заданной длинны N комбинируя элементы из мешка Bh.

Затем строим всевозможные пары векторов (vq, vh), беря по одному вектору из каждого набора Vq, Vh.
Обучая нейронную сеть, для положительных примеров выбираем пару с максимальным косинусом угла между векторами входящими в пару, а для отрицательных примеров — с минимальным.
Так получается? Поправьте, пожалуйста, если где ошибся.

Information

Rating
Does not participate
Registered
Activity