0%

本文的公式不存在次方的说法,所以看见上标,不要想成是次方。 对于权重的表示问题,请看博客,但是由于是以前的学习笔记,不保证完全正确。 如果想了解为什么梯度下降要对w和b求导,可以看这篇建议边看边写,否则思维跟不上。

前言

参考文章 以如下神经网络架构为例。参考文章中使用了一个2 2 2的神经网络架构,但是现实中神经网络架构不会这么整整齐齐。所以还是使用了略复杂的架构,此外原文中未对bias(偏差)更新。另外原文也没有实现向量化后的计算。虽然在后面的代码写了,但是由于代码太长了,有一种代码我给出来了,你们自己去看的感觉。说实话没多少注释,都没看的欲望(╬ ̄皿 ̄)。然后她所使用的符号让我不太习惯,因为看吴恩达以及李宏毅老师使用的符号都是\(w^l_{ji}\ a^l_i\)等等,所以自己重新推导一遍,并且使用了数学公式,而不是截图,更好看一点。 带参数的前馈神经网络模版 解释一下最下面的神经元,这个神经元初始化为1,也就是意味着1 * b = b。输入值为1,一个偏差乘1还是偏差本身。

阅读全文 »

参考文章 本文以配置anaconda的环境变量为例。

切换到用户目录

1
cd ~
输入,发现有一个名为.bashrc的文件
1
ll
编辑它
1
vim ~/.bashrc
在最后一行加上如下代码,保存并退出。
1
export PATH=~/anaconda3/bin:$PATH

PATH和=之间不能有空格。由于写java代码习惯了,加上了空格,导致报错。

更新配置
1
source ~/.bashrc
阅读全文 »

2020.09.07更新:42:50,突然发现这个视频又讲梯度下降的底层理论,可以去看看。

梯度下降算法大家都知道,公式是\(\theta = \theta - \alpha * J'(\theta)\),其中J是代价函数。但是这个算法具体是怎么来的,可能不太清楚。 本文参考 微信公众号 梯度-百度百科 由于没有专业的制图工具,所以只能手画了。。。

梯度下降问题

梯度下降草图
梯度下降草图

由图中可以观察到,我们将参数初始化到A点,我们的目标是将点移动到最小值点(或者极小值点)。那么问题就是如何移动了。 先给出梯度下降公式:\(\theta = \theta - \alpha * J'(\theta)\),J是代价函数,这个公式应该不陌生。

一阶泰勒展开式

如果学过高数,应该知道一阶泰勒展开式的公式是:\(f(x) = f(x_0) + (x - x_0) * f'(x_0) + R_n(x)\),其中\(R_n(x)\)是泰勒公式的余项,可以理解为一个无穷小量。既然是无穷小量那么便可以省略不写,但是即使是无穷小,其实等式的左右边还是有点差距的,所以将等式修改为约等于号

阅读全文 »

字母表示

我们一直使用one hot编码,这在之前已经记过笔记。这种表示方法的最大缺点是将每个词孤立起来,并且泛化能力不强。由于每个向量的内积都是0,所以它们之间的距离都是一样的。比如 1. I want a glass of orange juice. 2. I want a glass of apple ___. 这两个句子是很常见的句子,所以自然而然的想到划线处应该是juice。但是由于one hot编码,程序并不知道orange和apple之间的关系,也就猜不出来。

Featurized representation: word embedding

既然one hot有问题,那么自然就有人发明了新的算法。 使用特征来表示每个词。如果适应特征化来表示,那么最后发现orange和apple的特征差不多,就可以推测出划线处应该填写什么。 Featurized representation: word embedding

阅读全文 »

大纲

序号 课程 内容
2~8 吴恩达深度学习 one hot编码、RNN包括双向和深层、GRU、LSTM
9~14 李宏毅机器学习 RNN包括双向和深层、LSTM、RNN反向传播、seq2seq
15~20 李宏毅深度学习 计算图、语言模型中的深度学习、几个有用的网络架构。到原视频的 p12 结束,由于后续部分涉及到了 GAN 等其他模型,所以不在此处做笔记,详见对神经网络整体的理解博文中靠后的几节
21 李宏毅机器学习/深度学习剩余的一些知识点 这些知识点记录在其他的博客中,此处只提供链接
阅读全文 »

本文是在学习该教程时/后做的笔记。 我现在用git基本都是用Github Desktop,前面的是下载地址。用起来方便又快捷。事实上我也不会用git的命令o( ̄︶ ̄)o所以今天稍微学一下。

git init

切换到想要创建仓库的文件夹,执行命令git init就会在该文件夹下创建一个.git的文件夹,这个文件夹是隐藏的。

git add/git commit

使用命令git add whatever.txt将文件添加到仓库。使用命令git commit -m "wrote a file"将文件提交到仓库,-m后面的是描述这份文件你改了什么。其实就是相当于desktop的一个按钮,按一下就把全部有改动文件都提交了。 这样就完成了提交一份文件。这里就会有疑问了,为什么设计成先add再commit?直接commit不就行了?因为commit可以提交多份文件,你可以使用add命令一份一份地添加文件,再使用commit一次性提交到仓库。 该命令指示推送到本地仓库,并非远程仓库。

阅读全文 »

之前写的数学表达式明明可以渲染,但是接下去隔了n行的数学表达式无法渲染。推测是因为单行数学表达式在文字前面换行。 比如说: >文字文字文字文字:·¥¥· 该表达式渲染正常。

如果, >文字文字文字文字: ·¥¥· 那么下面的数学表达式将全部无法渲染。

阅读全文 »

本文虽然理了一遍神经网络的知识点,但还是有些地方不明白,文中对此进行了提问。

大纲

序号 描述的内容
2~4 神经网络和深度学习的发展史。
5 从二元分类开始。
6~10 浅层神经网络的介绍。如神经网络中一些参数代表的意思、激活函数、梯度下降、随机初始化。
11~15 深层神经网络的介绍。正向传播和反向传播中向量化后的计算、参数和超参数、神经网络和大脑的关系。
16 一个Simple NN的例子。
17~22 深度学习的实用性层面。数据切分、偏差与方差、正则化、dropout、其他正则化方法、均值归一化、梯度消失和梯度爆炸、梯度检验。
23~25 一些优化算法。Mini-batch、指数加权平均、Momentum、RMSprop、Adam、Adagrad。
26~29 超参数调试、Batch正则化、激活函数以及一些深度学习框架。
30~end 本文略长,后序的文章请看对应章节的链接。
阅读全文 »

网上很多人说要修改h5py的版本,但是我压根没装这个库。 参考文章 将numpy版本降低即可,我原先好像是1.16,记不清了,我没留意到。

1
conda install numpy==1.13.0
阅读全文 »

看《机器学习实战》这本书的 SVM 部分,感觉始终无法理解,因为书里把数学公式的推导直接省略了。所以在b站找了视频学习 SVM。 本文参考文章 本文参考视频

首先分割超平面(separating hyperplane)的函数表达式是\(w^T * x + b = 0\),而它上下两条间隔最远的超平面的表达式分别为 \[ \begin{align} w^T * x + b = & 1 \\ w^T * x + b = & -1 \\ \end{align} \] 至于为什么正好等于 1 和 -1,其实是为了方便计算。实际上可以等于任何值。看以下推导,先让其等于连个随机的值,比如 2 和 -3:

阅读全文 »