一、为什么使用神经网络?
- 复杂的非线性分类,决策边界很复杂
- 特征过多时,特征映射项非常多,计算成本高,容易过拟合,例如:图片的分类问题
- 起源:用来模拟大脑的算法
- 我们几乎可以将任何传感器接入大脑
- 主要学习将它应用于现代机器学习技术
- 神经网络模型:(逻辑单元)
组成单元:输入,隐藏层,权重,输出,如图所示
文章图片
数学推导: a i ( j ) a_i^{(j)} ai(j)?为第j个激活层的第i个单元, θ ( j ) \theta^{(j)} θ(j)为从j层到j+1层的偏重
a 1 ( 2 ) = g ( Θ 10 ( 1 ) x 0 + Θ 11 ( 1 ) x 1 + Θ 12 ( 1 ) x 2 + Θ 13 ( 1 ) x 3 ) a 2 ( 2 ) = g ( Θ 20 ( 1 ) x 0 + Θ 21 ( 1 ) x 1 + Θ 22 ( 1 ) x 2 + Θ 23 ( 1 ) x 3 ) a 3 ( 2 ) = g ( Θ 30 ( 1 ) x 0 + Θ 31 ( 1 ) x 1 + Θ 32 ( 1 ) x 2 + Θ 33 ( 1 ) x 3 ) h Θ ( x ) = g ( Θ 10 ( 2 ) a 0 ( 2 ) + Θ 11 ( 2 ) a 1 ( 2 ) + Θ 12 ( 2 ) a 2 ( 2 ) + Θ 13 ( 2 ) a 3 ( 2 ) ) a_1^{(2)}=g(\Theta_{10}^{(1)}x_0+\Theta_{11}^{(1)}x_1+\Theta_{12}^{(1)}x_2+\Theta_{13}^{(1)}x_3)\\ a_2^{(2)}=g(\Theta_{20}^{(1)}x_0+\Theta_{21}^{(1)}x_1+\Theta_{22}^{(1)}x_2+\Theta_{23}^{(1)}x_3)\\ a_3^{(2)}=g(\Theta_{30}^{(1)}x_0+\Theta_{31}^{(1)}x_1+\Theta_{32}^{(1)}x_2+\Theta_{33}^{(1)}x_3)\\ h_{\Theta}(x)=g(\Theta_{10}^{(2)}a_0^{(2)}+\Theta_{11}^{(2)}a_1^{(2)}+\Theta_{12}^{(2)}a_2^{(2)}+\Theta_{13}^{(2)}a_3^{(2)}) a1(2)?=g(Θ10(1)?x0?+Θ11(1)?x1?+Θ12(1)?x2?+Θ13(1)?x3?)a2(2)?=g(Θ20(1)?x0?+Θ21(1)?x1?+Θ22(1)?x2?+Θ23(1)?x3?)a3(2)?=g(Θ30(1)?x0?+Θ31(1)?x1?+Θ32(1)?x2?+Θ33(1)?x3?)hΘ?(x)=g(Θ10(2)?a0(2)?+Θ11(2)?a1(2)?+Θ12(2)?a2(2)?+Θ13(2)?a3(2)?)
z ( 2 ) = Θ ( 1 ) x a ( 2 ) = g ( z ( 2 ) ) z^{(2)}=\Theta^{(1)}x\\ a^{(2)}=g(z^{(2)}) z(2)=Θ(1)xa(2)=g(z(2))
逻辑回归单元组成了神经网络
四、神经网络的例子
- 完成逻辑运算:
文章图片
文章图片
六、代价函数
- 字母表示:
L为网络层数?
s_l 为第l层的神经元个数
K 为output层神经元个数,即 h Θ ( x ) ∈ R K h_\Theta(x)\in R^{K} hΘ?(x)∈RK
m 为数据个数
i 为第几个数据
j l层的第几个节点
表达式:
J ( Θ ) = ? 1 m ( ∑ i = 1 m ∑ k = 1 K y k ( i ) l o g ( h Θ ( x ( i ) ) ) k + ( 1 ? y k ( i ) ) l o g ( 1 ? ( h Θ ( x ( i ) ) ) k ) ) + λ 2 m ∑ l = 1 L ? 1 ∑ i = 1 s l ∑ j = 1 s l + 1 ( Θ j i ( l ) ) 2 J(\Theta)=-\frac{1}{m}\Bigg(\sum_{i=1}^{m}\sum_{k=1}^{K}y_k^{(i)}log(h_{\Theta}(x^{(i)}))_k + (1-y_k^{(i)})log(1-(h_{\Theta}(x^{(i)}))_k) \Bigg) + \frac{\lambda}{2m}\sum_{l=1}^{L-1}\sum_{i=1}^{s_l}\sum_{j=1}^{s_{l+1}}(\Theta_{ji}^{(l)})^2 J(Θ)=?m1?(i=1∑m?k=1∑K?yk(i)?log(hΘ?(x(i)))k?+(1?yk(i)?)log(1?(hΘ?(x(i)))k?))+2mλ?l=1∑L?1?i=1∑sl??j=1∑sl+1??(Θji(l)?)2
- 引入表示:l层第j个神经节点的激活值误差δ j ( l ) \delta^{(l)}_j δj(l)?
- 反向传播过程:
-
文章图片
文章图片
- 只有一组数据时的反向传播计算
δ j ( 4 ) = a j ( 4 ) ? y j δ ( 3 ) = ( Θ ( 3 ) ) T δ ( 4 ) . ? g ′ ( z ( 3 ) ) δ ( 2 ) = ( Θ ( 2 ) ) T δ ( 3 ) . ? g ′ ( z ( 2 ) ) 其 中 , 第 一 层 为 输 入 数 据 不 存 在 误 差 , 我 们 不 改 变 输 入 值 \delta^{(4)}_j=a^{(4)}_j-y_j\\ \delta^{(3)}=(\Theta^{(3)})^T\delta^{(4)}.*g'(z^{(3)})\\ \delta^{(2)}=(\Theta^{(2)})^T\delta^{(3)}.*g'(z^{(2)})\\ 其中,第一层为输入数据不存在误差,我们不改变输入值 δj(4)?=aj(4)??yj?δ(3)=(Θ(3))Tδ(4).?g′(z(3))δ(2)=(Θ(2))Tδ(3).?g′(z(2))其中,第一层为输入数据不存在误差,我们不改变输入值
公式推导https://blog.csdn.net/xuan_liu123/article/details/83660316?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2~all~first_rank_v2~rank_v25-1-83660316.nonecase&utm_term=反向传播 吴恩达 推导
- 当有大量数据计算时重点来啦
数据集: ( x ( 1 ) , y ( 1 ) ) , . . . , ( x ( m ) , y ( m ) ) {(x^{(1)},y^{(1)}),...,(x^{(m)},y^{(m)})} (x(1),y(1)),...,(x(m),y(m))
初始设置:对于任意的l,i,j: Δ i j ( l ) = 0 \Delta_{ij}^{(l)}=0 Δij(l)?=0,用来累计偏导数项,除了输入节点所有节点的误差和
l为层数,i为第l层的第几个误差
步骤:
For i=1 to m: Set a^(1) = x^(i) Perform forward propagation to compute a^(l) for l = 2,3,...l compute delta^(L)=a^(L)-y^(i) compute delta^(L-1),delta^(L-2),...,delta^(2) △_ij^(l) := △_ij^(l) + a_j^(l)delta^(2)
文章图片
文章图片
当输出y为实数时,不用加入正则项
- 只有一组数据时的反向传播计算
- 反向传播的理解:
文章图片
文章图片
八、梯度检验 解决神经网络虽然梯度下降但是效果并不理想,可以发现反向传播是否错误。
- 对于 θ \theta θ是实数 (类似于导数)
文章图片
- 对于 θ \theta θ为n维向量(类似于偏导数)
文章图片
- 算法思想: g r a d A p p r o x ≈ D V e c gradApprox \approx DVec gradApprox≈DVec
- 实现步骤:
- 通过反向传播计算DVec
- 估算数值梯度
- 确保二者是相近的值
- 在使用反向传播训练之前,关闭梯度检查(因为数值计算很慢,影响运行速度,同时也是因为这个原因不能使用该方法作为优化算法)
- 梯度下降算法:初始化为0
- 神经网络实际操作,初始化为0不起任何作用,会使隐藏层的所有神经元值相同
- ==初始化 Θ \Theta Θ在 [ ? ε , ε ] [-\varepsilon,\varepsilon] [?ε,ε]之间的随机值
- 选择一个网络结构:
输入的单元个数确定,输出的单元个数确定,隐藏层数目越多越好
- 训练神经网络
文章图片
文章图片
【吴恩达老师机器学习课程--神经网络】
文章图片
推荐阅读
- 机器学习吴恩达|coursera机器学习吴恩达-学习笔记-第三周
- 机器学习|吴恩达机器学习课程-第八周
- 机器学习算法之KMeans聚类
- 深度学习|深度学习神经网络之超参数(hyper-parameter)
- 神经网络|贝叶斯优化神经网络参数_贝叶斯超参数优化(神经网络,TensorFlow,相预测示例)
- java|pytorch贝叶斯网络_使用贝叶斯优化快速调试pytorch中的超参数的快速教程
- 人脸识别|yolov5人脸识别(yolov5-facenet-svm)
- 数学基础知识|机器学习中常用的数学及概率统计中的一些概念
- 论文|MicroNet: Improving Image Recognition with Extremely Low FLOPs(速读)