非线性

[ch02-02] 非线性反向传播

為{幸葍}努か 提交于 2019-11-26 13:00:49
系列博客,原文在笔者所维护的github上: https://aka.ms/beginnerAI , 点击star加星不要吝啬,星越多笔者越努力。 2.2 非线性反向传播 2.2.1 提出问题 在上面的线性例子中,我们可以发现,误差一次性地传递给了初始值w和b,即,只经过一步,直接修改w和b的值,就能做到误差校正。因为从它的计算图看,无论中间计算过程有多么复杂,它都是线性的,所以可以一次传到底。缺点是这种线性的组合最多只能解决线性问题,不能解决更复杂的问题。这个我们在神经网络基本原理中已经阐述过了,需要有激活函数连接两个线性单元。 下面我们看一个非线性的例子,如图2-8所示。 图2-8 非线性的反向传播 其中 \(1<x<=10,0<y<2.15\) 。假设有5个人分别代表x、a、b、c、y: 正向过程 第1个人,输入层,随机输入第一个x值,x取值范围(1,10],假设第一个数是2 第2个人,第一层网络计算,接收第1个人传入x的值,计算: \(a=x^2\) 第3个人,第二层网络计算,接收第2个人传入a的值,计算b: \(b=\ln (a)\) 第4个人,第三层网络计算,接收第3个人传入b的值,计算c: \(c=\sqrt{b}\) 第5个人,输出层,接收第4个人传入c的值 反向过程 第5个人,计算y与c的差值: \(\Delta c = c - y\) ,传回给第4个人 第4个人

机器学习算法比较

|▌冷眼眸甩不掉的悲伤 提交于 2019-11-26 12:27:46
本文主要回顾下几个常用算法的适应场景及其优缺点! 机器学习算法太多了,分类、回归、聚类、推荐、图像识别领域等等,要想找到一个合适算法真的不容易,所以在实际应用中,我们一般都是采用启发式学习方式来实验。通常最开始我们都会选择大家普遍认同的算法,诸如SVM,GBDT,Adaboost,现在深度学习很火热,神经网络也是一个不错的选择。假如你在乎精度(accuracy)的话,最好的方法就是通过交叉验证(cross-validation)对各个算法一个个地进行测试,进行比较,然后调整参数确保每个算法达到最优解,最后选择最好的一个。但是如果你只是在寻找一个“足够好”的算法来解决你的问题,或者这里有些技巧可以参考,下面来分析下各个算法的优缺点,基于算法的优缺点,更易于我们去选择它。 偏差&方差 在统计学中,一个模型好坏,是根据偏差和方差来衡量的,所以我们先来普及一下偏差和方差: 偏差:描述的是预测值(估计值)的期望E’与真实值Y之间的差距。偏差越大,越偏离真实数据。 方差:描述的是预测值P的变化范围,离散程度,是预测值的方差,也就是离其期望值E的距离。方差越大,数据的分布越分散。 模型的真实误差是两者之和。 如果是小训练集,高偏差/低方差的分类器(例如,朴素贝叶斯NB)要比低偏差/高方差大分类的优势大(例如,KNN),因为后者会过拟合。但是,随着你训练集的增长,模型对于原数据的预测能力就越好

3、深度学习基础

天涯浪子 提交于 2019-11-26 10:50:35
3.1 基本概念 3.1.1 神经网络组成 神经网络类型众多,其中最为重要的是多层感知机。为了详细地描述神经网络,我们先从最简单的神经网络说起。 感知机 多层感知机中的特征神经元模型称为感知机,由Frank Rosenblatt于1957年发明。 简单的感知机如下图所示: 其中$x_1$,$x_2$,$x_3$为感知机的输入,其输出为: $ output = \left{ \begin{aligned} 0, \quad if \ \ \sumi wi xi \leqslant threshold \ 1, \quad if \ \ \sumi wi xi > threshold \end{aligned} \right. $ 假如把感知机想象成一个加权投票机制,比如 3 位评委给一个歌手打分,打分分别为$ 4 $分、$1$ 分、$-3 $分,这$ 3$ 位评分的权重分别是 $1、3、2$,则该歌手最终得分为 $4 \times 1 + 1 \times 3 + (-3) \times 2 = 1$ 。按照比赛规则,选取的 $threshold$ 为 $3$,说明只有歌手的综合评分大于$ 3$ 时,才可顺利晋级。对照感知机,该选手被淘汰,因为: $$ \sumi wi x_i < threshold=3, output = 0 $$ 用 $-b$ 代替 $threshold$

DCGAN代码及实验结果分析

℡╲_俬逩灬. 提交于 2019-11-26 03:58:18
一.写在前面 本篇对DCGAN的tensorflow实现版本进行代码分析。Github: https://github.com/carpedm20/DCGAN-tensorflow 该代码中实现了针对有标签数据集和无标签数据集两类网络,两类网络的结构不一样。下面分别进行介绍。 二.针对有标签数据集的网络 为了便于解释,用具体例子替换变量。 有标签数据集以mnist数据集为例。batch_size为64,mnist图片大小为28×28,图片通道数c_dim为1,类别数y_dim为10;随机输入的维数z_dim为100。 Generator部分 : 1.获得输入z 服从均匀分布的输入样本z(shape=[64,100])与具有one-hot形式的标签y(shape=[64,10])级联,整体作为Generator的输入z(shape=[64,110])。 2.获得第一个非线性层的输出h0 通过线性变换将z变换为维数gfc_dim=1024的数据,对其进行归一化(batch normalization)之后进行非线性Relu变换,得到h0(shape=[64,1024]);将h0与y级联,整体作为下一层的输入h0(shape=[64,1034])。 3.获得第二个非线性层的输出h1 通过线性变换将h0变换为64×2×7×7=6272的数据,对其进行归一化之后进行非线性Relu变换