В статье читаем: “Выходом модели является результат скалярного умножения последних векторов заголовка и запроса (если быть совсем точным, то вычисляется косинус угла между векторами). Модель обучается таким образом, чтобы для положительны обучающих примеров выходное значение было большим, а для отрицательных — маленьким.”
Не совсем понятно, как обучается модель. Если я не ошибаюсь, здесь речь идет о сравнении векторов методом 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.
Обучая нейронную сеть, для положительных примеров выбираем пару с максимальным косинусом угла между векторами входящими в пару, а для отрицательных примеров — с минимальным.
Так получается? Поправьте, пожалуйста, если где ошибся.
Не совсем понятно, как обучается модель. Если я не ошибаюсь, здесь речь идет о сравнении векторов методом 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.
Обучая нейронную сеть, для положительных примеров выбираем пару с максимальным косинусом угла между векторами входящими в пару, а для отрицательных примеров — с минимальным.
Так получается? Поправьте, пожалуйста, если где ошибся.