机器学习笔记

By admin , 23 七月, 2025

https://www.youtube.com/watch?v=Ye018rCVvOo&list=PLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J

机器学习分为regression和classification两种,前者学习一个数值,后者在有限的选择里做分类。围棋是在有限的位置里判断下在哪个位置,因此,属于分类问题。

Label表示真实的值。

Error Surface表示Loss等高线图。

Gradient Descent:寻找Loss极值的梯度下降法。

hyperparameter是需要人实现配置的参数,例如learning rate、batch尺寸。

可以用分段线性曲线(Piecewise Linear Curves)来表达(逼近)任何曲线方程:Picewise Linear Curve

每一段可以用soft sigmoid函数来表示:

sigmoid function

两个ReLU函数可以构成一个hard sigmoid函数,ReLU的运算复杂度似乎是比sigmoid要小很多的。

signmoid, ReLU属于activation function(激活函数)。

据说1980、90年代的时候,神经网络技术已经爆发过一次,现在用的还是这样的技术,不过由于GPU上的发展,可以支持更多层(hidden layer)的神经网络。为了避免让人觉得这是旧技术,于是出了一个新名词Deep Learning(深度学习)。

对训练资料之外的数据表现比较差的情况叫Overfitting(过拟合)。

model bias指的是model局限,无法表达出目标函数。

optimization issue指没有找到全局最优解,找到的是critical point(local minima或saddle point)

data augment指的是合理地增加训练数据。例如通过左右翻转图片增加一倍的训练数据。但上下翻转可能不是,因为这可能产生了异常的物理规律,造成意外结果。

据说,在多维的情况里,local minima并不多,critical point大部分是saddle point。saddle point最低限度可以通过计算Hession来判断的,尽管运算量比较大。另外,把数据集分成多个batch,每个batch的critical point不同,一个batch的critical point在训练另一个batch可能就不是了,这有助于走出critical point。

大的batch size可以更好地利用显存大的GPU,训练更快。但小的batch size更容易走出critical point。

引入momentum调整步长可以减少停在critical point的情况,就好比一个有惯性的球可以滚过一个不太深的坑。

Adagrad(Ada is short for Adaptive)算法让步长的变化和过去梯度根方差关联起来(相除),让梯度根方差变化小(坡度小)时增大步长,变化大(坡度大)时减小步长。

RMSProp方法在Adagrad基础上引入权重,让每一步的权重不同,但这是一个hyperparameter,意味着,这是靠经验人工调的,没有根本上解决步长变化的选择问题,不是很科学可靠。

Adam算法是RMSProp+Momentum,在Pytorch里有可以选择的。

分类(Classification)问题会用到Softmax:

softmax

PyTorch里计算Loss的Cross Entropy会自动调用Softmax:

Cross-entropy

交叉熵(cross entropy)似乎是在分类问题里(所有概率加起来为1)有效的计算loss的方法,比方差更能体现loss差距,不容易出现梯度消失。

在深度学习中,Pooling(池化) 是一种用于减少特征图维度增强模型鲁棒性的操作,广泛应用于卷积神经网络(CNN)中。它通过对输入特征图的局部区域进行聚合计算(如取最大值、平均值等),在保留关键信息的同时降低数据规模,从而减少模型参数和计算量,还能一定程度上缓解过拟合。

AlphaGo使用的是CNN网络,19*19*48,48层里包含了棋子是否将要被吃等特征。第一层卷积核是5*5 with stripe 1(应该是每个卷积核间间距为1的意思),添加了一些0的pad后,图像就变成了23*23,192个filter(滤波器,用来提取特制)。第2-12层卷积核是3*3,补0后图像尺寸是21*21。最后一层卷积核是1*1,在加一个softmax。全程不加pooling(因为pooling会降低分辨率对图像有用,但对围棋这里每一个像素都有精确含义的情况不适用)

CNN无法处理图片缩放、旋转等问题。如果要处理这些问题,需要增加一个缩放旋转后的训练样本。

在语音处理中,我们一般取25ms一个window,每次偏移10ms。

NLP里POS tagging表示词性标注。如果模型输入核输出数量是一样的,那么属于sequence labeling。如果模型输入核输出的数量是不一样的,那么属于seq2seq类型,Transformer就是seq2seq的一种。

Tacotron是Autoregressive(缩写为AT)的decoder,输出序列是一个一个推理的。

FastSpeech是NonAutoregressive(缩写为NAT)的decoder,是同时输出的,因此推理比较快。输出的开始就觉得输出的长度,因此能比较精准地控制语音速度。

Transformer解码的时候是Masked self attention,会把后面的编码遮盖,这是因为解码的时候是按顺序输出的,后面的编码还没有产生。

标签

评论

Restricted HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id> <img src>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。
CAPTCHA
请输入"Drupal"
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.

最新内容

最新评论