(MCTS)蒙特卡洛树搜索——参数寻优

Zero.写作动机

对给定参数区间内部进行搜索,寻找到最优参数近似解的方法有很多。比如网格搜索。但是网格搜索太过暴力,往往花销过大。这里介绍一种新的参数寻优方法——蒙特卡洛树搜索
网络上关于蒙特卡洛方法几乎清一色都是在介绍Buffon实验并以此估计某个量。这里,我们介绍蒙特卡洛树用于参数寻优。

一、模型原理

下面推荐几个博客,这些文章已经介绍得很好了:

①https://blog.csdn.net/ljyt2/article/details/78332802
②https://www.jianshu.com/p/a34f06885ef8

二、编程实现

Version one: Python
https://www.jianshu.com/p/a34f06885ef8

Version Two: Matlab
鉴于实际需求,笔者在Python版本的基础上实现了matlab版本,涉及到matlab的面向对象编程。读者诸君按需获取即可

state.m文件

classdef State < handle
    properties
        value
        round
        choices
        PATH
        x2 %因为假定现在只用MCST找到第三步迭代的最优参数
        y 
        sigma
        im
    end
    methods
        function self= State(x2,y,sigma,im)
        %在这里进行初始化
        self.value = 0;
        self.round = 0;
        self.choices = [];
        self.PATH = [0.1:0.2:3];
        self.x2 = x2;
        self.y = y;
        self.sigma = sigma;
        self.im = im;
       
        end
        
        function state = new_state(self)
            choice = randperm(numel(self.PATH));
            choice = self.PATH(choice(1));%从一维数组中进行随机采样
            state = State(self.x2,self.y,self.sigma,self.im);
            %对于辣椒的彩色图片,第三步迭代的默认两个参数是0.7, 0.8
            value_ = 0;
            if numel(self.choices) == 1 %当前在选择第二个参数
                %计算潜在的value
                x3 = step(self.x2, self.y, self.sigma^2, 15, 7, self.choices(1), choice);
                value_ = - (sum(sum((x3 - self.im).^2)) / numel(x3)); %反向来
            elseif numel(self.choices) == 0 %当前在选择第一个参数
                %计算潜在的value
                x3 = step(self
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值