跳到主要内容

9 篇博文 含有标签「AI」

查看所有标签

详解Minimax算法与α-β剪枝

· 阅读需 9 分钟

在局面确定的双人对弈里,常采用博弈树搜索。我方追求更大的赢面,而对方会设法降低我方的赢面。由于局面确定,因此可以对赢面进行评估。我方往较大赢面的方向走,同时考虑对方的走法。由于对方的走法不确定,就假设对方会选择最大程度降低我方赢面的方向走,我方应规避那些对方可以大幅降低我方赢面的走法。

Minimax算法

称我方为MAX,对方为MIN,图示如下:

向量微积分基础

· 阅读需 4 分钟

机器学习里经常需要用到向量微积分。向量微积分其实并不难,但大学数学一般不提,导致在看机器学习的一些推导时常常感觉疑惑。

机器学习里经常用到标量和向量、向量和向量的求导,其实只是把向量对应位置的元素进行求导。但是,这些元素的组织方式有两种,分别是分子布局和分母布局,二者并无本质上的差别,只是结果相差个转置。这两种布局都存在,初学者常常混淆。

例如求yx\frac {\partial \mathbf{y}} {\partial x},其中y\mathbf{y}nn维列向量,xx是标量。这个求导就是把y\mathbf{y}里每个元素分别对xx求导,但求导后是得到列向量还是行向量呢?

线性最小二乘法推导

· 阅读需 6 分钟

代数形式

最小二乘法在中学时讲过。有一些散点有线性的趋势,用一个一次函数去拟合,使得差距最小化。

假设数据点为 (x1,y1),(x2,y2),,(xm,ym)(x_1, y_1), (x_2, y_2),\dots,(x_m, y_m) ,使用如下一次函数去拟合:

y=w1x+w0y = w_1 x + w_0

TensorFlow之MNIST入门

· 阅读需 6 分钟

MNIST手写数字识别是机器学习中非常经典的问题,相当于编程语言界的“Hello World“。关于神经网络解决MNIST手写数字识别问题,可以参考这个视频:深度学习之神经网络的结构 Part 1 ver 2.0

视频中使用的是多层神经网络,为了简化问题,这里我们使用单层的网络结构。

参考之前的MNIST数据集解析,先对MNIST数据集进行解析:

MNIST数据集解析

· 阅读需 4 分钟

MNIST数据集官网可以下载MNIST数据集。

MNIST数据集以.gz格式压缩,Python可以直接读取而不需要解压缩:

import gzip

with gzip.open('t10k-images-idx3-ubyte.gz') as f:
buf = f.read()

MNIST数据集使用二进制文件,而不是常规的图片文件格式。以t10k-images-idx3-ubyte为例,在官网有其结构说明:

[offset] [type]          [value]          [description]
0000 32 bit integer 0x00000803(2051) magic number
0004 32 bit integer 10000 number of images
0008 32 bit integer 28 number of rows
0012 32 bit integer 28 number of columns
0016 unsigned byte ?? pixel
0017 unsigned byte ?? pixel
........
xxxx unsigned byte ?? pixel