AlphaZero算法
蒙特卡洛树搜索:
UCB(Upper Confidence Bound/上限置信区间):探索-利用(Exploration-Exploitation),基于过去产生的平均回报和对未来期望回报的累加,UCB1值最高的被认为是最有潜力的节点,即那些过去产生过很大价值,或是那些过去没有探索过但可能会产生更大价值的节点。
n代表number of visits,指访问次数
左半式为了找到最大的价值,右半式为了广泛探索可能
Value和迭代次数n均累加
根节点是当前状态选取根节点的直接子节点中最大的一个行为蒙特卡洛算法
Minimax算法:
Alpha-Beta剪枝算法:
PyTorch学习
Pip listConda create -n name python=3.xAnaconda pytorch nvidia驱动Conda activate创建虚拟环境
[]表示某一行,,进行分隔,比如说:tensor([[1, 2], [3, 4], [5, 6], [7, 8]])为[1,2;3,4;5,6;7,8]是一个四行二列的矩阵每存在一个[],就有一个维度。例如[1,2]是一个一维向量,而[[1,2]]是一个二维矩阵
维度相同形状不同时的两个张量执行代数运算时,python存在广播机制,python会将两者中各维度最大值作为最终的输出张量的形状,同时将各运算张量的空白部分由原部分复制得到。这个操作很有可能会引起误操作,在执行两个形状不同向量的代数运算时一定要明确广播机制。
处理NaN:对于数值型数据来说,可以使用fillna(mean())的方法将同一类中NaN的数据变为类中那些不是NaN数据的均值。
get_dummies能实现类别的独热编码,以此实现不同输出的分类,n类独热编码就有n维。
向量:
矩阵范数通常使用下面这个公式:
(m,l,k ...
强化学习
强化学习是一类算法,使计算机实现从一开始什么都不懂,通过不断的尝试,从错误中总结经验,更新自己的行为准则,最后找到规律,学习实现目标的方法。例如Alpha Go。那么计算机是通过什么样的方法来学习的呢?计算机需要一位虚拟的好老师,这位老师比较吝啬,他不会告诉计算机如何行动,如何做决定。他为计算机做的事情只有给计算机的行为打分,而计算机要做的就是从老师打出的分数中学习怎么做决定,即记住那些会被打高分和低分的行为,并在下一个时间步中尝试用一个好的行为得到高分而避免低分。比如老师会根据表情的高兴程度打分,当计算机给出一个高兴表情时会得到高分,而计算机给出一个难过表情时会得到低分。在开始时,计算机给出的表情近乎随机,而随着迭代的深入,计算机获得了这些被打分的经验,有了这些经验,计算机就能学会如果要得到一个好的分数,应该给出一个高兴的表情。
可见,在强化学习中,一种行为被定义的分数是强化学习的核心思想,即强化学习具有分数导向性。相比于监督学习在训练集中就给出了数据和标签,在强化学习中,所有的数据在开始时不会给予计算机任何标签,只有在计算机确定了某个数据输入后老师才会给出该输入对应的标签(或分数) ...
机器学习
机器学习的两种主要类型是监督学习和无监督学习监督学习给出了一组训练集,给定了样本输入和其对应的输出,机器在学习后得出一个函数,使之在之后给定任意输入时,都能自主预测一个合理的输出值。监督学习的目的有两种:回归与分类。回归是预测给定输入对应的输出值,它是连续的、无限的,例如给定房屋面积预测房屋价格;分类是预测给定输入对应的种类,它是离散的、有限的,例如给定肿瘤大小预测肿瘤是否为良性。当然,监督学习也可能是多输入多输出系统。
线性回归:一个最佳的拟合函数fw,b(x),其对应的代价函数J(w,b)应当是(预测的结果-真实的结果)^2的均值的最小值,这说明拟合的效果足够好,足够接近真实值了。其中预测的结果-真实的结果代表了误差,平方是为了得到绝对正的误差累计,系数1/2是为了使得func不会随着训练样本的增大而急剧增大,同时方便后面梯度下降求导时把2约去使式子看起来更简洁。这个形式的代价函数也被称为平方误差成本函数(square error cost function)。平方误差成本函数的特点是:它只存在一个局部最小值,且该局部最小值就是全局最小值。
以一个满足y=x的样本集为例,同时固定b ...
深度学习
SNN(Standard Neural Network):标准神经网络,房价预测可以使用这种神经网络。CNN(Convolution Neural Network):卷积神经网络,图像处理可以使用这种神经网络。RNN(Recurrent Neural Network):循环神经网络,语言翻译和音频处理等序列化数据可以使用这种神经网络。
非结构化(例如图片、文字、音频)的数据比结构化(例如表格)数据的学习要困难得多。
推动深度学习发展的有三大因素:数据、计算能力(GPU)和算法。
神经网络的前向传播与反向传播:前向传播:是数据从输入层输入,经过一层层隐藏层计算得到中间变量,最后从输入层得到输出的过程。换句话说,前向传播计算出了神经网络对输入的预测输出。反向传播:是根据前向传播计算的预测值与真实值的差距得到损失函数,并对损失函数利用梯度下降来更新参数w,b的过程。应用梯度下降的核心在于计算损失函数对各w,b的偏导数。而计算这些偏导数的过程是反向的,也就是从最后一层逐层向前去计算,去改变每一层的w和b,其原理是链式求导法则。我们以一个有两层隐藏层的神经网络为例:
在这个例子中,我们使用前向传 ...
anaconda虚拟环境
安装torch的方法:有驱动的前提下,取pytorch官网寻找命令安装torch+cuda查询虚拟环境:conda env list创建虚拟环境:conda create -n name python=3.xx删除虚拟环境:conda remove -n name all进入虚拟环境:conda activate name退出虚拟环境:conda deactivate
能正常运行我电脑里的一个torch代码需要以下包:pip3 install torch torchvision torchaudio —index-url https://download.pytorch.org/whl/cu121Conda install nb_condaPip install jupyter matplotlib d2l tensorboard
C学习
文件架构:每个.c文件只包含对应的.h文件,每个.h文件只包含要用到的.h文件
ifndef只能解决重复包含的问题,比如a.h包含了c.h,b.h也包含了c.h,此时如果在d.h里同时包含a.h和b.h,那么如果没有ifndef就会报错。如果a.h里包含了b.h,b.h里又包含了a.h,那么这样也会报错,且这个问题无法使用ifndef解决,且有时不会显式报错,发现的时候已经为时已晚,可谓代码杀手。建议在规划文件时先把文件的架构以图的形式捋顺再动手。
extern置于变量前,标示变量的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。
函数指针函数指针 —存放函数地址的指针;&函数名 —得到的就是一个函数的地址;正如数组名=&数组名,函数名也是等于&函数名的函数指针定义:函数的返回值类型(指针名)(函数的参数列表类型)=&函数名/=函数名函数指针调用:(函数指针)(函数的参数列表类型)=函数指针(函数的参数列表类型)=函数名(函数的参数列表类型)例:void Add(int x, int y){return x+y;}int main( ...
C#学习
1.C# 数据类型在 C# 中,变量分为以下几种类型:值类型(Value types):如需得到一个类型或一个变量在特定平台上的准确尺寸,可以使用sizeof方法。表达式sizeof(type)产生以字节为单位存储对象或类型的存储尺寸。引用类型(Reference types):指针类型(Pointer types):C# 中的指针与 C 或 C++ 中的指针有相同的功能。
2.C# 强制类型转换在 C# 中,强制类型转换有两种方法:其一是在变量前面加(type),例如将一个 int 类型的变量赋值给 byte 类型的变量:12int i = 10;byte b = (byte)i;其二是使用Convert中的方法,例如将一个 double 类型的变量转化成 single 类型的变量:12double i=3.14;float b=Convert.ToSingle(i);强制类型转换也作用于字符串与数字的转换,其中将数字转换成字符串既可以使用i.ToString(“Fx”)也可以使用Convert.ToString(i)。强制类型转换可能会造成数据丢失。
3.C# 支持的其他一些重要的 ...
嵌入式通信协议
SPI(Serial Peripheral Interface):串行外设接口
采用一主多从模式,主机和从机之间可以互相通信,从机和从机之间无法通信。主要信号线:片选信号SS:由主机决定与哪个从机通信时钟信号SCK:在时钟信号上升沿或下降沿瞬间MOSI或MISO的值才会被采样认为是通信内容主发从收MOSI(Master Output Slave Input):由主机向从机发送的内容主收从发MISO(Master Input Slave Output):由从机向主机发送的内容
WIFI:无线局域网ESP32,ESP8266WIFI是一种允许电子设备连接到一个无线局域网的技术,相比于蓝牙,WIFI具有更远的通讯距离和更高的通讯效率。ESP8266采用串口与单片机通讯,其内置TCP/IP协议栈,能够实现串口与WIFI之间的转换。两者通讯的基本流程即:WIFI模块接收无线WIFI数据,并转换为串口信息,通过串口发送到单片机;反过来,单片机发送串口信息给WIFI模块的串口,由WIFI模块转换为无线WIFI数据,并发送出去。ESP8266 WIFI模块具有以下三种主模式:1.AP:Access P ...