Обсуждение статьи "Random Decision Forest в обучении с подкреплением" - страница 2

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Vasily Belozerov
143
Vasily Belozerov  
Извини Максим, отвлекли, имя твое не правильно написал.
Vasily Belozerov
143
Vasily Belozerov  
Забыл добавить. Решением, в стратегически играх, является комбинаторика (поиск повторяющихся комбинаций), вероятностный анализ, определение психотипа противника и создание модели поведения.
Maxim Dmitrievsky
25709
Maxim Dmitrievsky  
Vasily Belozerov:
Забыл добавить. Решением, в стратегически играх, является комбинаторика (поиск повторяющихся комбинаций), вероятностный анализ, определение психотипа противника и создание модели поведения.

Приветствую, насчет психотипа - к рынку конечно же неприменимо. В остальном, RL - это во многом наследие теории игр. Например, можно представить нескольких RL агентов как конкурирующих игроков, каждый будет пытаться обыграть остальных. Или же, сделать их взаимоподкрепляющими.

По сути, составляется платежная матрица между рынком и агентом. И если стратегия рынка не меняется, то агент начинает его обыгрывать, в том случае, когда это возможно.
Vasily Belozerov
143
Vasily Belozerov  
Я просто предположил, что может быть в правильную машину нужно добавить что-то не правильное, похожее на действия человека. Например, первый ход е2 - е4, потом второй ход е4 - е2, третий опять е2 - е4. В общем, что-то такое.
Maxim Dmitrievsky
25709
Maxim Dmitrievsky  
Vasily Belozerov:
Я просто предположил, что может быть в правильную машину нужно добавить что-то не правильное, похожее на действия человека. Например, первый ход е2 - е4, потом второй ход е4 - е2, третий опять е2 - е4. В общем, что-то такое.

Задача не сделать что бы торговля была похожа на торговлю человека (и как это узнать, бот должен пройти тест Тьюринга?) и с чего вы решили что человек вообще способен торговать хорошо или лучше чем советник, все зависит от стратегии. Задача в том, что бы машина сама искала какие-нибудь закономерности и торговала их.

Ivan Gurov
335
Ivan Gurov  
Vasily Belozerov:
Я просто предположил, что может быть в правильную машину нужно добавить что-то не правильное, похожее на действия человека. Например, первый ход е2 - е4, потом второй ход е4 - е2, третий опять е2 - е4. В общем, что-то такое.

Это же Random forest, его главный смысл: что он сам формирует дебютную книгу.

Ivan Gurov
335
Ivan Gurov  
Максим, а имеет ли эффект пробовать генерировать новые рандомные деревья? Например, первый раз у нас сгенерировались одни деревья.. второй раз у нас сгенерировались уже другие деревья, которые более эффективно обучаются. Или это не влияет совсем на конечный результат обучения?
Maxim Dmitrievsky
25709
Maxim Dmitrievsky  
Ivan Gurov:
Максим, а имеет ли эффект пробовать генерировать новые рандомные деревья? Например, первый раз у нас сгенерировались одни деревья.. второй раз у нас сгенерировались уже другие деревья, которые более эффективно обучаются. Или это не влияет совсем на конечный результат обучения?
Тут скорее не деревья а обучать несколько лесов на тех же данных  да, имеет. Потому что процесс построения рандомизирован и результаты могут отличаться. Удивило, что ансамбль из лесов даёт заметное улучшение, т.е. обучить несколько лесов на одинаковых данных а результат осреднить. (5-15 штук) Можно делать разные настройки тоже. Ещё лучше результаты должны быть в случае бустинга, но пока не добрался.
forexman77
2731
forexman77  
Статья понравилась. Еще бы кто переделал лес в  alglib, чтобы можно было регулировать глубину деревьев.
mov
30
mov  
Maxim Dmitrievsky:
Тут скорее не деревья а обучать несколько лесов на тех же данных  да, имеет. Потому что процесс построения рандомизирован и результаты могут отличаться. Удивило, что ансамбль из лесов даёт заметное улучшение, т.е. обучить несколько лесов на одинаковых данных а результат осреднить. (5-15 штук) Можно делать разные настройки тоже. Ещё лучше результаты должны быть в случае бустинга, но пока не добрался.

Спасибо за статью, познавательно и в прикладном плане есть что взять (по крайней мере мне).

Как я понимаю, нечеткая логика была взята как пример для статьи. Нет запретов напрямую получать значение ts (реализовал, особых расхождений по эффективности не заметил - лес полностью подменяет нечеткую логику.). Это можно считать другим способом вознаграждения объекта. Как мне кажется (не могу подтвердить программой), увеличение числа оптимизируемых функций принадлежности не даст прироста, уже сейчас лес забивает нечеткую логику. Попробовал усреднять  результаты лесов (включая и fuzzy как в статье), результат улучшился, после нейронных сетей из AlgLIB удивила скорость обучения на значениях за несколько лет. Для задания явных отличий использовал вторую форму создания леса с явным указанием использования разного числа индикаторов (ну уж поиграться с составом индикаторов это даже не обсуждаю):

CDForest::DFBuildRandomDecisionForestX1(RDFpolisyMatrix,numberOfsamples,iNeuronEntra,iNeuronSal,number_of_trees,7,regularization,RDFinfo,RDF[0],RDF_report);
CDForest::DFBuildRandomDecisionForestX1(RDFpolisyMatrix,numberOfsamples,iNeuronEntra,iNeuronSal,number_of_trees,5,regularization,RDFinfo,RDF[0],RDF_report);

Подскажите, какие еще формы вознаграждения можно попробовать? Интересует создание ансамбля из лесов с разными формами вознаграждения, кстати, ансамблем названо усреднение? или специальная формула объединения результата? вроде в AlgLIB нет ансамблей лесов?

Может кому пригодится, при нескольких лесах хранить данные в куче файлов неудобно, решил так:

StructToHiden strHider;
   strHider.iNeuronEntra=iNeuronEntra;
   strHider.iNeuronSal=iNeuronSal;
   strHider.iTrees=number_of_trees;
   DataTekOpt=TimeLocal();
   strHider.DataTekOpt=DataTekOpt;
   
   int filehnd=FileOpen(NameFile+"_fuzzy.txt",FILE_WRITE|FILE_BIN|FILE_COMMON);
      strHider.iBufsize=RDFfuzzy.m_bufsize;
      FileWriteStruct(filehnd, strHider);//запись заголовка файла
      FileWriteArray(filehnd,RDFfuzzy.m_trees); //запись дерева
      FileClose(filehnd);


int filehnd=FileOpen(NameFile+"_fuzzy.txt",FILE_READ|FILE_BIN|FILE_COMMON);
      FileReadStruct(filehnd,strHider);//читаем заголовок файла
      RDFfuzzy.m_nvars=strHider.iNeuronEntra;
      RDFfuzzy.m_nclasses=strHider.iNeuronSal;
      RDFfuzzy.m_ntrees=strHider.iTrees;
      RDFfuzzy.m_bufsize=strHider.iBufsize;
      DataTekOpt=strHider.DataTekOpt;
      FileReadArray(filehnd,RDFfuzzy.m_trees);//читаем дерево
      FileClose(filehnd);
Структура описывается любая, т. к. её длина фиксирована, получается в файле хранить и её и лес (структура обязательно вначале). Один лес - один файл.

 

Еще раз спасибо за статью, благодаря ей всерьез занялся AlgLIB.
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий