Pull to refresh

Comments 13

Зашёл в статью, чтобы посмотреть мультик в конце игры.

Насколько я помню, в классическом генетическом алгоритме помимо мутаций большую роль играет скрещивание популяции. Интересно было бы попробовать на этом примере.

Собственно, существует две больших группы методов обучения нейронной сети. Обучение с учителем и обучение без учителя.
Скорее это две группы методов машинного обучения (а нейросети — это подмножество ML). Как раз сети обычно учат в supervised/self-supervised парадигме, а под unsupervised часто имеют в виду кластеризацию и другие менее модные методы.

Пример с погодой, который мы рассмотрели выше, относится к группе методов обучения с подкреплением (без учителя).
Unsupervised learning и reinforcement learning — две сильно разные вещи.

Наконец, стоит отметить, что подбирать веса для нейросети генетическим алгоритмом — неоптимально (не говоря уже о том, что для этого и Tensorflow не нужен). Почти любая неигрушечная модель слишком сложна для этого, потому обычно используются какие-то вариации на тему SGD.
Спасибо за замечание, поправил, а могли бы Вы развернуть в чем принципиальная разница между unsupervised learning и reinforcement learning, что мы не можем обобщить их в одну сущность по признаку отсутствия учителя?
В unsupervised learning у нас обычно есть просто какие-то данные, и мы ищем в них структуру — например, кластера или какое-то более компактное представление.
В reinforcement learning сценарий предполагает, что есть агент, который взаимодействует со средой и получает какое-то вознаграждение; модель стремится выбирать такие действия, которые максимизируют вознаграждение.

Большое спасибо за интересную статью. Всё очень доходчиво рассказано.
А не могли бы Вы пожалуйста на этом примере показать, как можно сохранить обученную модель например в localeStorage, и при обновлении страницы её снова загрузить?
Буду Вам очень благодарен

Почитать про сохранение/загрузку модели можно здесь.

В двух словах. Как только мы определились какой дино самый лучший сохранить его мозг можно таким образом.

await dino[k].brain.save('localstorage://dino-brain-v0');

Лучше всегда указывать версию вашей модели, чтобы отследить прогресс.

Потом, в конструкторе дино можно проверить, что если у нас есть сохраненная модель, то использовать ее, иначе создавать новую. Загрузить модель можно так:

const dinoBrain = await tf.loadLayersModel('localstorage://dino-brain-v0');
Большое спасибо.
Сохранение модели в localStorage получается без проблем, но к сожалению после её последующей загрузки есть проблемы.
Вот так выглядит мой вариант:
async loadModel() {
  const model = await tf.loadLayersModel('localstorage://dino-ml-model-v0');
  return model;
}

async saveModel() {
  await this.model.save('localstorage://dino-ml-model-v0');
}


После загрузки модели она имеет такое значение:
JSON.stringify( this.model ) === '{}'
Sign up to leave a comment.

Articles