array(2) { ["docs"]=> array(10) { [0]=> array(10) { ["id"]=> string(3) "428" ["text"]=> string(77) "Visual Studio 2017 单独启动MSDN帮助(Microsoft Help Viewer)的方法" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(8) "DonetRen" ["tagsname"]=> string(55) "Visual Studio 2017|MSDN帮助|C#程序|.NET|Help Viewer" ["tagsid"]=> string(23) "[401,402,403,"300",404]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400964" ["_id"]=> string(3) "428" } [1]=> array(10) { ["id"]=> string(3) "427" ["text"]=> string(42) "npm -v;报错 cannot find module "wrapp"" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "zzty" ["tagsname"]=> string(50) "node.js|npm|cannot find module "wrapp“|node" ["tagsid"]=> string(19) "[398,"239",399,400]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400760" ["_id"]=> string(3) "427" } [2]=> array(10) { ["id"]=> string(3) "426" ["text"]=> string(54) "说说css中pt、px、em、rem都扮演了什么角色" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(12) "zhengqiaoyin" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400640" ["_id"]=> string(3) "426" } [3]=> array(10) { ["id"]=> string(3) "425" ["text"]=> string(83) "深入学习JS执行--创建执行上下文(变量对象,作用域链,this)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "Ry-yuan" ["tagsname"]=> string(33) "Javascript|Javascript执行过程" ["tagsid"]=> string(13) "["169","191"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511399901" ["_id"]=> string(3) "425" } [4]=> array(10) { ["id"]=> string(3) "424" ["text"]=> string(30) "C# 排序技术研究与对比" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "vveiliang" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(8) ".Net Dev" ["catesid"]=> string(5) "[199]" ["createtime"]=> string(10) "1511399150" ["_id"]=> string(3) "424" } [5]=> array(10) { ["id"]=> string(3) "423" ["text"]=> string(72) "【算法】小白的算法笔记:快速排序算法的编码和优化" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "penghuwan" ["tagsname"]=> string(6) "算法" ["tagsid"]=> string(7) "["344"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511398109" ["_id"]=> string(3) "423" } [6]=> array(10) { ["id"]=> string(3) "422" ["text"]=> string(64) "JavaScript数据可视化编程学习(二)Flotr2,雷达图" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "chengxs" ["tagsname"]=> string(28) "数据可视化|前端学习" ["tagsid"]=> string(9) "[396,397]" ["catesname"]=> string(18) "前端基本知识" ["catesid"]=> string(5) "[198]" ["createtime"]=> string(10) "1511397800" ["_id"]=> string(3) "422" } [7]=> array(10) { ["id"]=> string(3) "421" ["text"]=> string(36) "C#表达式目录树(Expression)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "wwym" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(4) ".NET" ["catesid"]=> string(7) "["119"]" ["createtime"]=> string(10) "1511397474" ["_id"]=> string(3) "421" } [8]=> array(10) { ["id"]=> string(3) "420" ["text"]=> string(47) "数据结构 队列_队列实例:事件处理" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "idreamo" ["tagsname"]=> string(40) "C语言|数据结构|队列|事件处理" ["tagsid"]=> string(23) "["246","247","248",395]" ["catesname"]=> string(12) "数据结构" ["catesid"]=> string(7) "["133"]" ["createtime"]=> string(10) "1511397279" ["_id"]=> string(3) "420" } [9]=> array(10) { ["id"]=> string(3) "419" ["text"]=> string(47) "久等了,博客园官方Android客户端发布" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(3) "cmt" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511396549" ["_id"]=> string(3) "419" } } ["count"]=> int(200) } 222 深度学习与神经网络学习笔记(二) - 爱码网

深度学习与神经网络学习笔记(二)

三、logistic 回归

1、二分分类

  首先如果给你一张图片,你来判断它是否是猫:

深度学习与神经网络学习笔记(二)

  对于我们来说这看一眼就会说这是猫,而对于机器来说它会做的判断就会是:是猫(1)和不是猫(0)而这个就是我们要输出的y值,其实大部分时候一直输出的都是一个概率值,而我们只是通常把概率最大的值作为1输出。

  其实机器识别一个图片和我们肉眼识别是不一样的,比如说上面这样的一张图片,对于机器来说,它将会被看成三个不同的颜色矩阵(见下图),分别是红色、绿色和蓝色,每一个矩阵中的一个数字对应的就是图片在这个像素点(64*64,为了在图片中能够表示清楚,三基色的图片中用4*5的矩阵表示,其实是一样的意思)上的对应颜色的强度值,比如红色第一个像素点的255就表示图片在该像素点的红色强度值为255(强度值在0-255的范围内,255表示最大,0表示没有此颜色)

深度学习与神经网络学习笔记(二)

  然后,我们可以把矩阵表示成一个xy输入给机器x为:

x=255231...255134...25513493...xRNX

  y的取值为:
y(0,1)

  这样我们所采用的样本集m可以表示为:

m={(x(1),y(1)),(x(2),y(2)),,(x(m),y(m))}

如果我们对应的每一个输入值xn个(表示我们所构建的影响因子有n个)那x可以表示为一个mn的矩阵:

深度学习与神经网络学习笔记(二)

而y可以直接表示为一个1n

y={y(1),y(2),,y(m)}

2、logistic 回归

  输入:

深度学习与神经网络学习笔记(二)

  参数:
(ω,b)

  输出:
y^

  映射(函数):
y^=σ(ωTx+b)

  其中
σ(z)=1/1+ez

  这里的σ(z)函数就是一个激励函数,其图像为:

深度学习与神经网络学习笔记(二)

  这就保证了当ωTx+b值越大(趋近无穷)最后计算出来的y^就会越接近于1,而ωTx+b值越小(负无穷)最后计算出来的y^就会越接近于0,最后达到一个输出(01)结果的目的。

  所以现在我们机器学习所要做的就是去学习这个函数中的参数:ω,b

3、logistic 回归损失函数

  机器学习将会一次又一次地训练我们所给出的样本,最后产生ω,b,但是我们用训练过程出来的ω,b却也计算不出完全正确每个样本的y值,因此我们需要通过对ω,b所计算出来的y^与实际的y值做比较,而给他们做比较的这个函数就叫做损失函数:
L(y^,y)=(ylogy^+(1y)log(1y^))

y=1L(y^,y)=logy^,y^0y1

y=0L(y^,y)=log(1y^),y^0y1

  损失函数反应的是其学习后得出的ω,b所计算出来的预测值:y^相对于实际值y所损失的一个度量。

  这样对每个样本进行计算,最后计算出所有样本的损失函数的均值就是我们所说的成本函数:

J(ω,b)=1mi=1nL(y^(i),y(i))

  即为:

J(ω,b)=1mi=1n{y(i)logy^(i)+(1y(i))log(1y^(i))}

4、梯度下降法

深度学习与神经网络学习笔记(二)

  我们首先还是上图,这里是成本函数、ωb所模拟的一个三维图像,我们就是通过图像中每个小红点一步一步去找到使J(ω,b)最小的那个解的。而我们所要用的就是通过斜率(通过导数求得)来进行判断

深度学习与神经网络学习笔记(二)

  我们先通过二维函数来理解梯度下降,如图可知,当导数dJ(ω)dω<0时我们将会向右边方向进行ω值的变化,如果大于0就向左边进行变化,最终找到值为0的点就是我们所要找到的最优解,而每次变换的=αdJ(ω)dω,这里的α为学习率,也就是梯度下降的变化率。

  同样我们可以直接投影到三维图像上去解决这个问题。这时候就应该是:

ω:=ωJ(ω,b)ωb:=bJ(ω,b)b

  其中J(ω,b)b为成本函数对参数b的偏导数

相关文章: