
AI 笔记
mark__tuwen
这个作者很懒,什么都没留下…
展开
-
[AI 笔记] GAN
[AI 笔记] GANGANMinimax objective functionTrain参考资料:CS231nGAN论文GANGAN 分为两个部分,一个生成器网络,一个判别器网络。如下图所示。生成器通过学习 random noise z 到 真实图片的分布,生成与真实图片近似的图片。判别器通过判别网络,来区分 real images 和 fake images。原文:“In the proposed adversarial nets framework, the generative mo原创 2020-06-11 17:45:23 · 370 阅读 · 0 评论 -
[AI 笔记] Optimization参数优化
[AI 笔记] Optimization参数优化SGD的问题SGD + MomentumAdaGradRMSPropAdam总结参考资料:CS231nSGD的问题现在假设对2维的参数空间进行优化,如下图:其中最红的地方代表最小值点,即优化目标。对于SGD而言,就是简单地计算梯度,然后把负梯度乘以一定的学习率后加在权重上对其更新。按照SGD的更新策略,其从初始位置到达最优点的路径应该如下图所示,是之字形的路线。显然效率不高。另外,如果在参数空间中遇到极小值点,或者鞍点(saddle poi原创 2020-06-10 10:30:31 · 653 阅读 · 0 评论 -
[AI 笔记] Batch Normalization批量归一化
[AI 笔记] BatchNormalization批量归一化Batch Normalization参考资料:CS231nBatch Normalization批量归一化(Batch Normalization),用于对神经元的输入进行归一化处理,使其符合高斯分布(不一定),解决饱和问题带来的梯度消失问题。它一般被放置在全连接层或者卷积层之后,激活函数之前。如下图所示。其中右下角的公式即对输入进行高斯归一化处理。E为均值,Var为方差。但有时候我们不知道到底是否需要对输入进行批量归一化处理,有原创 2020-06-09 11:44:20 · 341 阅读 · 0 评论 -
[AI 笔记] 激活函数
[AI 笔记] 激活函数神经元Sigmoid参考资料:CS231n课程神经元下图是神经网络中的单个神经元。它有输入、权值、线性函数,以及一个激活函数 f。神经元的输入通过线性函数得到一个值,再通过激活函数产生输出。激活函数可以理解为为神经网络引入了非线性。SigmoidSigmoid函数是较老的激活函数,形如下图。由于它在负值区的远处趋近于 0,在正值区的远处趋近于 1。所以它在这两个地方的本地梯度为0,根据链式法则,它往回传的梯度都为零,所以梯度流中断了,即梯度消失,这两个地方称作饱原创 2020-06-05 21:45:25 · 224 阅读 · 0 评论 -
[AI 笔记] BP反向传播算法
[AI 笔记] BP算法说明BP算法链式法则计算图简单例子深入理解函数结构例子各种门多元链式法则向量化BP算法参考资料:CS231n课程说明BP(Back Propagation)算法,也就是反向传播算法,是神经网络训练的核心算法,用来计算各个节点的梯度。我一开始看的是西瓜书里边的推导,比较难懂,而且停留在理论推导,没有讲算法实现原理。CS231n讲的比较清楚。要理解BP算法,首先要知道链式法则,以及计算图的概念。在接下来的阅读中,请抱着以下三点来进行:化繁为简结合计算图,抽象地去理解BP算原创 2020-06-05 00:21:29 · 606 阅读 · 0 评论 -
[AI 笔记] SGD
[AI 笔记] SGDStochastic Gradient DescentStochastic Gradient Descent随机梯度下降。前面通过SVM、Softmax等算法计算了损失,训练损失是对所有样本的损失的累加。如下图所示:在计算完损失之后,再求它对权重W的梯度,从而利用梯度下降算法来更新权值,达到训练的目的。但是当数据集特别大的时候,这种算法的计算量无疑相当大,因为每次更新权重,都要计算所有样本的损失,及其梯度。SGD 就是为了解决这一问题产生的。SGD 每一次迭代,随机选取原创 2020-05-29 22:24:23 · 262 阅读 · 0 评论 -
[AI 笔记] Softmax
[AI 笔记] SoftmaxSoftmax代码实现参考:CS231n课程SoftmaxSoftmax,亦称Multinomial Logistic Regression,与SVM一样,用于计算分类损失。Softmax可以理解为将线性分类中,线性函数的得分归一化成概率,而后依据概率计算损失,同时在分类时,分类结果为概率最高的类别。其公式如下图所示:其中 s 即为线性函数的得分,其下标指代某一类别;P 为当样本为 xi 时,将其分类为 k 的概率,P 右边的式子即为归一化函数,将得分归一化为概原创 2020-05-29 20:51:38 · 218 阅读 · 0 评论 -
[AI 笔记] SVM
[AI 笔记] SVM线性分类SVM代码实现参考资料:CS231n线性分类线性分类简单来说就是将一个样本输入一个线性函数,输出为这个样本在各个类别上的得分,取得分高的类别作为其分类结果。如下图所示,猫为待分类的样本,f(x,W)为一个线性函数,将样本输入后就得到了它在十个类别上的得分。其中dog这一类的得分最高,为8.02分,所以分类器将这个样本分类为dog,显然分类错误了。SVM支持向量机,用来计算分类损失。其公式如图。其中 i 代表第 i 个训练样本;yi 代表这个样本的标签,即真原创 2020-05-29 18:12:52 · 301 阅读 · 0 评论 -
[AI 笔记] KNN
[AI 笔记] KNNK-Nearest NeighborsKNN的超参数K距离算法代码实现维度灾难参考资料:CS231n课程K-Nearest NeighborsK-最近邻分类算法。顾名思义,要对一个样本进行分类,选取样本空间中距离它最近的K个已知类别的样本,将这K个已知类别样本中占多数的类别作为分类结果。如下图所示,图中的散点是已知类别的样本。图中对应的色块是对样本空间进行分类的结果。K是KNN算法的超参数,即选取离待分类样本最近的K个已知分类样本。观察上图,当K=1的时候,绿色区域中间的原创 2020-05-29 16:27:15 · 494 阅读 · 0 评论 -
[AI 笔记] 超参数选择
[AI 笔记] 超参数选择一、选择在训练集上表现最好的超参二、选择在测试集上表现最好的超参三、选择在验证集上表现最好的超参交叉验证参考资料:CS231n课程一、选择在训练集上表现最好的超参这种方式是不可取的,这样的超参只是很好地拟合训练集,但是不能表现很好的泛化能力。二、选择在测试集上表现最好的超参这种方式也不可取,这里比较容易混淆。如果只把数据集分成训练集和测试集,并在测试集上选用表现最好的超参。只能表明所选的超参在测试集上的泛化能力比较好,不能说明在未知的数据上表现地如何,即不能体现真正的原创 2020-05-29 00:07:30 · 601 阅读 · 0 评论 -
[AI 笔记] Numpy
[AI 笔记] Numpy数组arrays创建数组方法访问数组整型数组访问布尔型数组访问数据类型数组计算sum函数T转置广播Broadcasting参考资料:CS231n课程笔记翻译:Python Numpy教程数组arrays每个Numpy数组都是数据类型相同的元素组成的网格import numpy as npa = np.array([[1,2,3],[4,5,6]])print(type(a))print(a.shape) print(a)print(a[0])原创 2020-05-28 21:48:15 · 207 阅读 · 0 评论