"используя в качестве критерия лишь этот результат, а не шаги по его получению" это как раз отдельная ветка для размышлений - как учитывать не только результат, но и всю цепочку шагов
Да, применение "оценочной функции, возможно, на некоторую глубину" - это как раз сейчас и применяется в компьютерных расчетах. Поставленная же задача - не сделать новую / лучшую реализацию расчета ходов на сколько-то вперед, а именно выявить закономерности - почему эта партия стала выигрышной, почему именно эта цепочка комбинаций привела к успешному результату.
"По-человечески" мы, конечно, можем комментировать и обосновывать ходы, но хочется выявить это математически )
Да, применение и positional encoding, и attention и self-attention - на данном этапе выглядит вполне перспективным. Действительно, пусть фигуры смотрят друг на друга и таким образом кодируются веса и положения.
В целом же рекуррентность применительно к Шахматам - сейчас это отдельная "глобальная" ветка размышлений.
1. Важно ли (или насколько важно) для комбинации, как именно в нее пришли. С одной стороны, возможно, следует оценивать только саму комбинацию, как состоявшийся факт, а с другой стороны, возможно, следует оценивать и то, как именно к ней пришли. 2. Возможно ли в принципе рассматривать ход шахматной партии так же, как рассматриваются другие последовательности, например, текст. То есть может ли задача перейти в задачe генерации / предсказания следующего хода, аналогичную задаче предсказания / генерации следующего слова.
На данный момент понимаю так: Книга дебютов очень хороша, когда встречается известная проработанная комбинация. В этом случае есть рекомендации по дальнейшим ходам и обширные комментарии обоснования. Можно еще усилить ситуацию и дополнительно с Книгой смотреть показатели успешности в конкретных загружаемых датасетах. Но что делать, когда комбинация новая и не встречается в Книге ? Приходиться считать ) Так что на этапе разработки и тестирования мы намеренно стремились отойти от игры по справочникам и играть по выявленным закономерностям.
С другой стороны представляется интересным совместить: если комбинация распространена, есть в Книге дебютов и есть в датасете, то возможно сделать ход на основании Книги дебютов или на основании показателей успешности в датасете. А вот в случае, если комбинация новая или редкая - тогда считать по коэффициентам, полученным на обучении.
Также может быть интересно принять Книгу дебютов за хороший датасет и научить модель играть дебюты на основе Книги. В этом случае также возможно совмещение: если есть комбинация в Книге - играть по Книге или показателям успешности, а если нет комбинации в Книге и нет в датасете - играть по коэффициентам, но полученным также при обучении на основании Книги.
Модель вполне корректно реагирует на редкие ходы. Как раз в этом и смысл обобщения опыта и выявления закономерностей - реагировать на неизвестные комбинации, потому что реагировать на известные комбинации можно просто по справочнику.
По части редких ходов речь идет о том, чтобы убирать их из датасета при обучении, потому что в отношении редкого хода нельзя однозначно определить "успешность" хода по итогу партии. Как понимаю, целесообразно, чтобы в датасете было однозначно "успешные" и "неуспешные" комбинации, и обучаться именно на них, без "шума", тогда качество реагирования на неизвестные комбинации повышается.
При изучении темы BERT и последующем успешном запуске я немного миксовал и сравнивал данную статью на русском и исходную на английском.
В статье на английском указан процесс, отсутствующий в статье на русском: padded превращается в массив с одинаковой длиной строк, за счет добавления нулей, но потом эти нули маскируются.
Итоговый смысл этой операции сходу не ясен, хотя в статье сообщается:
We want BERT to process our examples all at once (as one batch). It's just faster that way.
Гугл переводит это так:
Мы хотим, чтобы БЕРТ обработал все наши примеры сразу (как один пакет). Просто так быстрее.
Код соответственно немного отличается.
В данной статье на русском:
input_ids = torch.tensor(np.array(padded))
with torch.no_grad():
last_hidden_states = model(input_ids)
и в оригинальной статье на английском:
max_len = 0
for i in tokenized.values:
if len(i) > max_len:
max_len = len(i)
padded = np.array([i + [0]*(max_len-len(i)) for i in tokenized.values])
attention_mask = np.where(padded != 0, 1, 0)
input_ids = torch.tensor(padded)
attention_mask = torch.tensor(attention_mask)
with torch.no_grad():
last_hidden_states = model(input_ids, attention_mask=attention_mask)
Вопрос: какие реально есть преимущества / недостатки при наличии / отсутствии padding / masking?
Добрый день ) с помощью данной статьи и переходов на соответствующие предыдущие статьи получилось на чистом Colab запустить BERT на данном датасете английского языка и провести классификацию новых фрагментов.
и очень сильная зависимость от положения пограничных объектов. незначительное изменения положения даже 1 (!) пограничного объекта может привести к существенному изменению разделяющей поверхности для всего множества.
все таки очень и очень сильная зависимость всей разделяющей поверхности всего от нескольких пограничных объектов, и совсем не учитывается положение других объектов, и это не ошибка реализации, а именно заложенная база алгоритма метода. не для каждой задачи целесообразно.
Спасибо за предоставленный материал, пояснения и предположения )
Автор знаком с методом опорных векторов (SVM).
Вы взяли проблему, которая уже решена методом опорных векторов (SVM)
Представляется, что проблема не решена однозначно - SVM предлагает один из вариантов решения, и в ряде случаев, но не во всех, это решение действительно достаточно целесообразно.
Если бы вы докрутили свою мысль до конца, то пришли бы к тому же SVM, или чему-то похожему. Ход мысли примерно такой: есть много вариантов разделяющей гиперплоскости - надо сравнить их - придумать метрику, характеризующую качество разделения (чтобы она не была одинаковой для разных вариантов решения, зависела не только от ошибки) - максимизировать эту метрику.
Мы применили некоторую, отличную от предлагаемой SVM. метрику и сделали распределение на ее основе. Не представляется однозначным и доказанным, что метрику следует именно максимизировать. Максимизация метрики - один из возможных вариантов, но не универсальный и не исключающий другие варианты. В данном случае мы классифицируем значения самой метрики (больше нуля, меньше нуля) и уже на основании класса метрики классифицируем непосредственно объекты.
Никоим образом не оспариваем достоинства метода опорных векторов (SVM), при этом продолжаем поиск других вариантов решения задачи выбора разделяющей поверхности.
Потребуем, чтобы разделяющая гиперплоскость максимально далеко отстояла от ближайших к ней точек обоих классов.
Представляется, что это один из вариантов выбора разделяющей поверхности. Вариант не универсальный, не лучший и не худший - один из.
вполне естественно полагать, что максимизация зазора (margin) между классами должна способствовать более уверенной классификации.
Это предположение, гипотеза, а не факт. Подходит не для каждой задачи.
Недостатки SVM. • Метод опорных векторов неустойчив по отношению к шуму в исходных данных. Если обучающая выборка содержат шумовые выбросы, они будут существенным образом учтены при построении разделяющей гиперплоскости.
Как понимаю метод опорных векторов, в итоге разделяющая поверхность будет проводится на основе всего нескольких (даже 3) пограничных объектов, и, хотя других объектов будет и несколько тысяч, они не будут учитываться. То есть какие бы объекты не находились за пограничными, разделяющая поверхность не поменяется. Не для каждой ситуации походит такая логика.
Это может быть интересно протестировать. Понимаю так: Теоретически, разделяющие поверхности для случаев "просто величины", "квадраты величин", "логарифмы величин" будут разными, С одной стороны, "по человеческой логике", может показаться, что они должны совпадать, так как гусеницы и букашки остаются теми же независимо от способа измерения. С другой стороны, мы проводим классификацию как раз на основе того, что и как мы измеряем. Так, например, если мы будем классифицировать по насыщенности красного и по температуре, то разделяющие поверхности будут не такими же, как по длине и ширине. С этой точки зрения, квадраты или логарифмы величин - это совсем другие параметры, чем сами величины. И корректность их взаимозаменяемости может зависеть от логики конкретной задачи.
Как понимаю, дело в том, машина не видит изображение или видео, у нее условно "нули и единицы", и она находит закономерности именно в их расположении. То есть мы выделяем понятные нам ушки, черточки, колесики, а она что-то очень свое. Главное, чтобы результат на выходе был качественным.
Действительно, в самих алгоритмах моделей заложено, что им "все равно откуда начинать", движение может начинаться полностью с рандомной комбинации, поэтому коэффициенты на выходе могут быть каждый раз разные. Рекомендуется прогонять модель несколько раз и потом выбирать лучшую. Или входной вектор прогонять по нескольким сохраненным моделям и принимать решение "обобщая".
В продолжение готовится статься с описанием логично понятного подбора параметров уже с помощью программного цикла, и с этого переход на простую нейронную сеть )
С одной стороны - да. С другой - если от нажатий и переходить к голосу, то даже уже возможно как минимум предлагать выбрать по меню голосом, а не нажатием. — ... — скажите "заказ" — ... — скажите "отмена" — ... — скажите "узнать" и сообщите номер заказа
Возможно, на массовых рынках для большинства пользователей это еще не так важно и принципиально, хотя все больше и больше пользователей привыкают к умным устройствам и именно голосовому управлению.
"используя в качестве критерия лишь этот результат, а не шаги по его получению"
это как раз отдельная ветка для размышлений - как учитывать не только результат, но и всю цепочку шагов
Да, применение "оценочной функции, возможно, на некоторую глубину" - это как раз сейчас и применяется в компьютерных расчетах. Поставленная же задача - не сделать новую / лучшую реализацию расчета ходов на сколько-то вперед, а именно выявить закономерности - почему эта партия стала выигрышной, почему именно эта цепочка комбинаций привела к успешному результату.
"По-человечески" мы, конечно, можем комментировать и обосновывать ходы, но хочется выявить это математически )
Да, применение и positional encoding, и attention и self-attention - на данном этапе выглядит вполне перспективным. Действительно, пусть фигуры смотрят друг на друга и таким образом кодируются веса и положения.
В целом же рекуррентность применительно к Шахматам - сейчас это отдельная "глобальная" ветка размышлений.
1. Важно ли (или насколько важно) для комбинации, как именно в нее пришли.
С одной стороны, возможно, следует оценивать только саму комбинацию, как состоявшийся факт, а с другой стороны, возможно, следует оценивать и то, как именно к ней пришли.
2. Возможно ли в принципе рассматривать ход шахматной партии так же, как рассматриваются другие последовательности, например, текст. То есть может ли задача перейти в задачe генерации / предсказания следующего хода, аналогичную задаче предсказания / генерации следующего слова.
Спасибо за комментарий )
Да, с embeddings может интересно получиться )
А чтобы сеть нашла вес фигур и вес конкретных ситуаций - это как раз "недокументированная косвенная задача" )
Спасибо за комментарий )
На данный момент понимаю так:
Книга дебютов очень хороша, когда встречается известная проработанная комбинация. В этом случае есть рекомендации по дальнейшим ходам и обширные комментарии обоснования. Можно еще усилить ситуацию и дополнительно с Книгой смотреть показатели успешности в конкретных загружаемых датасетах.
Но что делать, когда комбинация новая и не встречается в Книге ? Приходиться считать )
Так что на этапе разработки и тестирования мы намеренно стремились отойти от игры по справочникам и играть по выявленным закономерностям.
С другой стороны представляется интересным совместить:
если комбинация распространена, есть в Книге дебютов и есть в датасете, то возможно сделать ход на основании Книги дебютов или на основании показателей успешности в датасете. А вот в случае, если комбинация новая или редкая - тогда считать по коэффициентам, полученным на обучении.
Также может быть интересно принять Книгу дебютов за хороший датасет и научить модель играть дебюты на основе Книги. В этом случае также возможно совмещение: если есть комбинация в Книге - играть по Книге или показателям успешности, а если нет комбинации в Книге и нет в датасете - играть по коэффициентам, но полученным также при обучении на основании Книги.
Спасибо за комментарий )
Модель вполне корректно реагирует на редкие ходы.
Как раз в этом и смысл обобщения опыта и выявления закономерностей - реагировать на неизвестные комбинации, потому что реагировать на известные комбинации можно просто по справочнику.
По части редких ходов речь идет о том, чтобы убирать их из датасета при обучении, потому что в отношении редкого хода нельзя однозначно определить "успешность" хода по итогу партии. Как понимаю, целесообразно, чтобы в датасете было однозначно "успешные" и "неуспешные" комбинации, и обучаться именно на них, без "шума", тогда качество реагирования на неизвестные комбинации повышается.
Вопрос про padding / masking
При изучении темы BERT и последующем успешном запуске я немного миксовал и сравнивал данную статью на русском и исходную на английском.
В статье на английском указан процесс, отсутствующий в статье на русском:
padded превращается в массив с одинаковой длиной строк, за счет добавления нулей, но потом эти нули маскируются.
Итоговый смысл этой операции сходу не ясен, хотя в статье сообщается:
Гугл переводит это так:
Код соответственно немного отличается.
В данной статье на русском:
и в оригинальной статье на английском:
Вопрос:
какие реально есть преимущества / недостатки при наличии / отсутствии padding / masking?
Добрый день )
с помощью данной статьи и переходов на соответствующие предыдущие статьи получилось на чистом Colab запустить BERT на данном датасете английского языка и провести классификацию новых фрагментов.
Спасибо за статью ! )
Спасибо за ссылку на статью и предложение о дополнении статьи сравнением.
И статья оказалось полезной, и методы сравнить интересно )
в дополнение к своему же ответу
и очень сильная зависимость от положения пограничных объектов.
незначительное изменения положения даже 1 (!) пограничного объекта может привести к существенному изменению разделяющей поверхности для всего множества.
все таки очень и очень сильная зависимость всей разделяющей поверхности всего от нескольких пограничных объектов, и совсем не учитывается положение других объектов, и это не ошибка реализации, а именно заложенная база алгоритма метода.
не для каждой задачи целесообразно.
Спасибо за предоставленный материал, пояснения и предположения )
Автор знаком с методом опорных векторов (SVM).
Представляется, что проблема не решена однозначно - SVM предлагает один из вариантов решения, и в ряде случаев, но не во всех, это решение действительно достаточно целесообразно.
Мы применили некоторую, отличную от предлагаемой SVM. метрику и сделали распределение на ее основе. Не представляется однозначным и доказанным, что метрику следует именно максимизировать. Максимизация метрики - один из возможных вариантов, но не универсальный и не исключающий другие варианты. В данном случае мы классифицируем значения самой метрики (больше нуля, меньше нуля) и уже на основании класса метрики классифицируем непосредственно объекты.
Никоим образом не оспариваем достоинства метода опорных векторов (SVM), при этом продолжаем поиск других вариантов решения задачи выбора разделяющей поверхности.
Спасибо за предоставленный материал )
Представляется, что это один из вариантов выбора разделяющей поверхности. Вариант не универсальный, не лучший и не худший - один из.
Это предположение, гипотеза, а не факт. Подходит не для каждой задачи.
Как понимаю метод опорных векторов, в итоге разделяющая поверхность будет проводится на основе всего нескольких (даже 3) пограничных объектов, и, хотя других объектов будет и несколько тысяч, они не будут учитываться. То есть какие бы объекты не находились за пограничными, разделяющая поверхность не поменяется. Не для каждой ситуации походит такая логика.
Это может быть интересно протестировать.
Понимаю так:
Теоретически, разделяющие поверхности для случаев "просто величины", "квадраты величин", "логарифмы величин" будут разными,
С одной стороны, "по человеческой логике", может показаться, что они должны совпадать, так как гусеницы и букашки остаются теми же независимо от способа измерения.
С другой стороны, мы проводим классификацию как раз на основе того, что и как мы измеряем. Так, например, если мы будем классифицировать по насыщенности красного и по температуре, то разделяющие поверхности будут не такими же, как по длине и ширине. С этой точки зрения, квадраты или логарифмы величин - это совсем другие параметры, чем сами величины. И корректность их взаимозаменяемости может зависеть от логики конкретной задачи.
Похоже, мнение о роботе растет )
Спасибо за проявленный интерес )
Продолжение опубликовано:
https://habr.com/ru/post/686218/
Как понимаю, дело в том, машина не видит изображение или видео, у нее условно "нули и единицы", и она находит закономерности именно в их расположении. То есть мы выделяем понятные нам ушки, черточки, колесики, а она что-то очень свое. Главное, чтобы результат на выходе был качественным.
Действительно, в самих алгоритмах моделей заложено, что им "все равно откуда начинать", движение может начинаться полностью с рандомной комбинации, поэтому коэффициенты на выходе могут быть каждый раз разные. Рекомендуется прогонять модель несколько раз и потом выбирать лучшую. Или входной вектор прогонять по нескольким сохраненным моделям и принимать решение "обобщая".
Спасибо за отклик )
Да, развитие будет.
В продолжение готовится статься с описанием логично понятного подбора параметров уже с помощью программного цикла, и с этого переход на простую нейронную сеть )
С одной стороны - да.
С другой - если от нажатий и переходить к голосу, то даже уже возможно как минимум предлагать выбрать по меню голосом, а не нажатием.
— ... — скажите "заказ"
— ... — скажите "отмена"
— ... — скажите "узнать" и сообщите номер заказа
Возможно, на массовых рынках для большинства пользователей это еще не так важно и принципиально, хотя все больше и больше пользователей привыкают к умным устройствам и именно голосовому управлению.
Верно. Всего в данном примере возможно 8192 комбинации.