机器学习之神经网络算法
2017-04-22 14:36
375 查看
本文主要记录线性回归、逻辑回归和神经网络算法的基本思想及用实现过程。
简单回顾:
机器学习的主要组成部分:输入、算法、输出、训练集;核心思想:通过训练集数据优化算法的参数,以提升对未知输入的输出预测精度。这一算法优化过程被形象的描述为学习。
一、最基础的机器学习就是线性回归和逻辑回归了。
1.线性回归
输入(features):
x1,x2,...,xn
假设函数(hypothesis function):
hθ(x)=θ0+θ1x1+θ2x2+...+θnxn
误差函数(cost function):
J(θ)=12m∑i=1n(hθ(xi)−yi)2
为使误差函数值最小,用梯度下降(gradient descent)多次迭代计算合适的θi:
θi=θi−α∂∂θiJ(θ)
即θj=θj−α1m∑i=1n(yi−hθ(xi))x(i)j
由于不同的特征值(输入)取值范围趋于一致时可以加快梯度递减,所以可以对特征值进行适当缩放或标准化:
x=x−us
2.逻辑回归
逻辑回归亦可称为分类问题。首先从简单的二元逻辑回归入手,即输出y={0,1}可以看做是线性回归基础上的变异,用sigmoid函数hθ(x)=11+eg(z) 对线性回归的输出估计值进行了归一化处理,hθ(x)∈(0,1)。
误差函数的形式与线性回归的不同,但是思想还是一致的,J(θ)=−1m∑i=1m[y(i)log(hθ(x(i)))+(1−y(i))log(1−hθ(x(i)))]
计算合适的θi用的还是上面相同的梯度下降法。
过拟合的问题:训练完的算法对训练集中的数据预测过于精准,使得函数对未知的输入出现较大的预测误差。
解决方法:正则化
正则化的线性回归:
J(θ)=12m ∑i=1m(hθ(x(i))−y(i))2+λ ∑j=1nθ2j
Repeat { θ0:=θ0−α 1m ∑i=1m(hθ(x(i))−y(i))x(i)0 θj:=θj−α [(1m ∑i=1m(hθ(x(i))−y(i))x(i)j)+λmθj]} j∈{1,2...n}
正则化的逻辑回归:
J(θ)=−1m∑i=1m[y(i) log(hθ(x(i)))+(1−y(i)) log(1−hθ(x(i)))]+λ2m∑j=1nθ2j
3.神经网络算法
神经网络算法虽然称得上是非线性算法,但是究其局部而言还是运用了线性回归的思维方式。
误差函数:
J(Θ)=−1m∑i=1m∑k=1K[y(i)klog((hΘ(x(i)))k)+(1−y(i)k)log(1−(hΘ(x(i)))k)]+λ2m∑l=1L−1∑i=1sl∑j=1sl+1(Θ(l)j,i)2
实现步骤:
(1)为初始的权重赋以随机化的值
(2)用前向传递算法计算hΘ(x(i))
(3)计算误差函数J(Θ)
(4)用后向传递算法计算偏导∂∂Θ(l)jkJ(Θ)
(5)用梯度下降或者其他高级算法计算使得J(Θ)最小化的权重Θ
简单回顾:
机器学习的主要组成部分:输入、算法、输出、训练集;核心思想:通过训练集数据优化算法的参数,以提升对未知输入的输出预测精度。这一算法优化过程被形象的描述为学习。
一、最基础的机器学习就是线性回归和逻辑回归了。
1.线性回归
输入(features):
x1,x2,...,xn
假设函数(hypothesis function):
hθ(x)=θ0+θ1x1+θ2x2+...+θnxn
误差函数(cost function):
J(θ)=12m∑i=1n(hθ(xi)−yi)2
为使误差函数值最小,用梯度下降(gradient descent)多次迭代计算合适的θi:
θi=θi−α∂∂θiJ(θ)
即θj=θj−α1m∑i=1n(yi−hθ(xi))x(i)j
由于不同的特征值(输入)取值范围趋于一致时可以加快梯度递减,所以可以对特征值进行适当缩放或标准化:
x=x−us
2.逻辑回归
逻辑回归亦可称为分类问题。首先从简单的二元逻辑回归入手,即输出y={0,1}可以看做是线性回归基础上的变异,用sigmoid函数hθ(x)=11+eg(z) 对线性回归的输出估计值进行了归一化处理,hθ(x)∈(0,1)。
误差函数的形式与线性回归的不同,但是思想还是一致的,J(θ)=−1m∑i=1m[y(i)log(hθ(x(i)))+(1−y(i))log(1−hθ(x(i)))]
计算合适的θi用的还是上面相同的梯度下降法。
过拟合的问题:训练完的算法对训练集中的数据预测过于精准,使得函数对未知的输入出现较大的预测误差。
解决方法:正则化
正则化的线性回归:
J(θ)=12m ∑i=1m(hθ(x(i))−y(i))2+λ ∑j=1nθ2j
Repeat { θ0:=θ0−α 1m ∑i=1m(hθ(x(i))−y(i))x(i)0 θj:=θj−α [(1m ∑i=1m(hθ(x(i))−y(i))x(i)j)+λmθj]} j∈{1,2...n}
正则化的逻辑回归:
J(θ)=−1m∑i=1m[y(i) log(hθ(x(i)))+(1−y(i)) log(1−hθ(x(i)))]+λ2m∑j=1nθ2j
3.神经网络算法
神经网络算法虽然称得上是非线性算法,但是究其局部而言还是运用了线性回归的思维方式。
误差函数:
J(Θ)=−1m∑i=1m∑k=1K[y(i)klog((hΘ(x(i)))k)+(1−y(i)k)log(1−(hΘ(x(i)))k)]+λ2m∑l=1L−1∑i=1sl∑j=1sl+1(Θ(l)j,i)2
实现步骤:
(1)为初始的权重赋以随机化的值
(2)用前向传递算法计算hΘ(x(i))
(3)计算误差函数J(Θ)
(4)用后向传递算法计算偏导∂∂Θ(l)jkJ(Θ)
(5)用梯度下降或者其他高级算法计算使得J(Θ)最小化的权重Θ
相关文章推荐
- 机器学习笔记(XVI)神经网络(III)误差逆传播(BP)算法
- 神经网络,机器学习,算法,人工智能等 30 门免费课程
- 机器学习(11.2)--神经网络(nn)算法的深入与优化(2) -- QuadraticCost、CorssEntropyCost、SoftMax的javascript数据演示测试代码
- 6.2神经网络算法实现--python机器学习
- 机器学习 —— 基础整理(八)循环神经网络的BPTT算法步骤整理;梯度消失与梯度爆炸
- 机器学习(11.5)--神经网络(nn)算法的深入与优化(5) -- softmax的代码实现
- 基于Apache Spark的机器学习及神经网络算法和应用
- 基于Apache Spark的机器学习及神经网络算法和应用
- 机器学习-神经网络(Neural Network)算法
- 机器学习常用算法二:神经网络
- 数学之路(3)-机器学习(3)-机器学习算法-神经网络[5]
- 机器学习(11.1)--神经网络(nn)算法的深入与优化(1)--介绍
- 机器学习--感知器数据分类算法步骤(慕课网-实现简单的神经网络)
- 机器学习之神经网络算法
- 机器学习(11.3)--神经网络(nn)算法的深入与优化(3) -- QuadraticCost(二次方代价函数)数理分析
- 机器学习(10.4)--手写数字识别的不同算法比较(4)--神经网络
- 机器学习(11.4)--神经网络(nn)算法的深入与优化(4) -- CorssEntropyCost(交叉熵代价函数)数理分析与代码实现
- 三种循环神经网络(RNN)算法的实现(From scratch、Theano、Keras)
- 机器学习笔记4-神经网络(Neural Network)(上)
- 机器学习:神经网络之表达