Основы глубинного обучения, группа 5 — семинар 7

preview_player
Показать описание
Курс "Основы глубинного обучения", майнор "Интеллектуальный анализ данных", НИУ ВШЭ

Семинарист — Руслан Хайдуров

Рекомендации по теме
Комментарии
Автор

Поправьте, если ошибаюсь, но функция get_target что на видео реализована не корректно, что в гитхабе. Я взял функцию с гитхаба и добавил принты (+ немного модифицировал, захардкодил окно) для дебага, получилось:

# WRONG CODE
def get_target(words, idx, window_size=5):
"""
Get a list of words in a random-sized window around an index.
"""
# r = random.randint(1, window_size)
r = window_size
print(
f"Context window: {r} /",
f"Min context word: {words[max(0, idx - r) : idx]} /",
f"Target word: {words[idx]} /",
f"Max context word: {words[idx + 1 : min(len(words) - r, idx + r)]}",
)
target = (
words[max(0, idx - r) : idx] + words[idx + 1 : min(len(words) - r, idx + r)]
)
return target



Если протестировать на простом примере:
get_target([5233, 58, 741, 10571, 27349, 0, 15067, 58112, 3580, 58, 10712], 6, 3)

То получим:
Context window: 3 / Min context word: [10571, 27349, 0] / Target word: 15067 / Max context word: [58112]
[10571, 27349, 0, 58112]

Хотя корректный аутпут (т.к. в данном случае смотрим на 3 слова влево и на 3 слова вправо):
Context window: 3 / Min context word: 10571 / Target word: 15067 / Max context word: 58
[10571, 27349, 0, 58112, 3580, 58]

Скорректировал функцию, теперь вроде окей (только осторожно, там тоже линшие принты для дебага – захардкожена r):
# CORRECT CODE
def get_target(words, idx, window_size=5):
"""
Get a list of words in a random-sized window around an index.
"""
r = window_size
print(
f"Context window: {r} /",
f"Min context word: {words[max(0, idx - r)]} /",
f"Target word: {words[idx]} /",
f"Max context word: {words[min(len(words) - 1, idx + r)]}",
)
target = words[max(0, idx - r) : idx] + words[idx + 1 : min(len(words), idx + r + 1)]

return target


Плюс обучился и на некорректном варианте и на корректном. Во втором случае (внезапно) как будто чуть содержательнее эмбеддинги получились

vladmirbc