Comments 17
Меня научили делать обучение с подкреплением используя PyTorch, но я по прежнему так и не понял как оно работает. Но могу сделать, да. На PyTorch.
А в чем непонимание? Что из статьи показалось странным?
То что «понятное объяснение» это про то как сделать что-то с PyTorch, а совсем не про то как сделать это вообще. А с PyTorch извините, но кто-то уже сделал. И когда я делаю с PyTorch, это не я делаю, а использую то что сделал тот другой. Он как раз на 100% понимал как все устроено. Но используя библиотеку, это понимание не переходит ко мне. Только результат.
Ну, Pytorch в данном случае не более, чем инструмент, который помогает не задумываться об реализации второстепенных для понимания этой темы аспектах. Подразумевается, что читатель уже знаком с методом градиентного спуска и обратным распространением ошибки, а также знаком с понятием нейросети в принципе, поэтому не имеет смысла рассказывать, как работает вычисление градиента или как осуществляется прямой проход через нейросеть. Конечно, все это можно было бы написать и на си, но зачем? Будет куча лишних вспомогательных функций, которые будут отвлекать внимание читателя от основной сути.
Подразумевается, что читатель уже знаком с методом градиентного спуска и обратным распространением ошибки, а также знаком с понятием нейросети в принципе,
Читатели статьи с названием «...понятное объяснение...» никак со всем этим знакомыми быть не могут. А те, которые знакомые, им статья не нужна. Они сами во всем разберутся.
Ну не знаю даже... Вынести вспомогательные функции в отдельные курсы, которые идут дополнением к уроку, не, или ссылаясь на существующие "как сделать"? К примеру мне нравится Си, хотя я приведу куда более красивый пример: Rust. Вот запрос "Нейросеть на Rust-lang" даёт следующее количество результатов: 0 по теме, +- 10 результатов про "использование нейросети в rust(игре)", +- 20 результатов про реализацию с помощью библиотек на python, +- 5 результатов с чистой математикой и слоганом "простыми словами" (лишь слоганом), при поиске в "duckduckgo". А я не хочу ковыряться тысячи часов в исходниках библиотеки tensorflow на python, чтобы написать необходимую мне библиотеку. Вот мне и нужно это +- простое объяснение, чтобы сделать то, что я желаю, или хотя бы адаптировать под свои нужды. Вот про что я могу сказать, что помогло, так это ролик про перцептрон от IT_Школьника, код которого я переписал на Rust и создав 1 рабочий слой, который даже работал. Я заинтересован в создании конвейеров нейросетей, но хочу использовать хоть немного чужого опыта, чтобы не начинать полностью с нуля.
UPD: Простите, если моё сообщение не в тему, просто вечный поиск мне немного надоел. Если есть что почитать полезного про создание нейросети на Rust, то прошу посоветуйте, не откажусь от помощи.
Конечно, понимаю, что для автора такая работа полезна. Как практикум выражения изученного материала. Но статья очень сильно "не рекомендуется" как "объяснение Q-обучения". С моей точки зрения, она просто ни о чем.
В качестве небольшого списка примеров нелепостей, обучение с подкреплением - это ни разу не "подход к обучению нейронных сетей." Если вы откроете любой учебник по основам RL, вы про нейронные сети не услышите раньше середины книги.
Q-learning - никакого отношения к нейронным сетям не имеет, все адоптированные под нейронные сети Q-алгоритмы называются DQN.
Основой Q-learning является уравнение Беллмана и концепция динамического программирования, упоминание этих вещей необходимо для понимания алгоритма.
И такой критики о статье я могу привести еще много, не говоря уже о том, что некоторые уравнения просто неверны и кругом используются нестандартные для темы RL формулировки и обозначения.
Извините, но минус.
А какие уравнения показались неверными? Подскажите, исправлю.
Подсказываю. Функция полезности.
А что с ней не так?
В обозначениях этой статьи в данный момент уравнение для функции полезности действия Q(s,a) верное (может быть автор уже исправил)
Очень хорошая статья, спасибо автору! Статья идеально подходит для тех, кто уже имел опыт работы с обычным обучением нейросетей с учителем и хочет понять, каким же образом применяют нейросети для обучения с подкреплением. Соглашусь, что статья не даёт полную картину фундаментальных знаний в области RL, но зато понятна людям без этих знаний (мне, например)
Привет а можешь в репу свою добавить requirements.txt
Попробовал запустить с очевидными модулями, получил проблему при импорте модуля turtle, на pypi нашел пакет но там хттп прокси, а твой тертл пытается импортить ткинтер и это явно не хттп прокси
Обучение с подкреплением. Q-обучение. Понятное объяснение