吴恩达老师机器学习课程chapter04——神经网络

本文是非计算机专业新手的自学笔记,高手勿喷,欢迎指正与其他任何合理交流。

本文仅作速查备忘之用,对应吴恩达(AndrewNg)老师的机器学期课程第八章、第九章。



二分类

基本概念

对于复杂的非线性分类问题,线性回归中构造非线性的多项式回归可能会变得十分复杂,特征数会变得很多。

这种情况下,可以使用神经网络。神经网络运用简单的数学模型模拟人脑中神经元的工作方式。如图是一个简单的神经元模型:

其中有三层:输入层(layer 1: input layer),隐藏层(layer 2: hidden layer),输出层(layer 3: output layer)。

常常添加x0、a0,来构成常数偏置项。

  • $ a_{i}^{(j)} $ 表示第j层激活项,由输入层经过某种函数计算得到,这个函数也叫做激活函数。

    分类问题中的Sigmoid函数,被用作一种激活函数。

    实质上是从现有特征中,学到的新的特征的过程。

  • $ \Theta ^{(j)} $ 表示由 系数θ构成的、(\(s_{j+1}\times s_{j}+1\))的系数矩阵,从第j层指向第j+1层。

由输入层到隐藏层到输出层,这样的传播被称为神经网络的前向传播(forward propogation)过程。

写作矩阵形式:

\[\Theta g(x^{(1)})=g(z^{(2)})=a^{(2)\prime}
\]

其中,\(x^{(1)\prime}\)不含偏置项\(x^{(1)}_0\),补上常数偏置项得\(x^{(1)}\),\(a^{(2)\prime}\)不含偏置项\(a^{(2)}_0\),补上常数偏置项得\(a^{(2)}\)

神经网络的层数可以灵活增加,以获取更复杂的特征。

简单举例

神经网络实现AND逻辑

神经网络实现OR逻辑

神经网络实现NOT逻辑

神经网络实现NOR逻辑


多分类

以上举例实现的是二分类问题。想要实现多分类。本质上就是拓展输出层。

输出层不再是一个数,而是一组由概率构成的向量。选取概率最大作为输出结果。

这种时候输出写为$h_{\Theta}(x) \in \mathbb{R}^{K} $,是一个K维向量,有K个可能的输出结果。

\(\quad\left(h_{\Theta}(x)\right)_{i}=i^{t h} \text { output }\)。


代价函数

神经网络的代价函数为:

\[\begin{aligned}
J(\Theta)=&-\frac{1}{m}\left[
\sum_{i=1}^{m} \sum_{k=1}^{K} y_{k}^{(i)} \log \left(h_{\Theta}\left(x^{(i)}\right)\right)_{k}+\left(1-y_{k}^{(i)}\right) \log \left(1-\left(h_{\Theta}\left(x^{(i)}\right)\right)_{k}\right)\right] \\
&+\frac{\lambda}{2 m} \sum_{l=1}^{L-1} \sum_{i=1}^{s_{l}} \sum_{j=1}^{s_{l+1}}\left(\Theta_{j i}^{(l)}\right)^{2}
\end{aligned}
\]

其构成有两部分组成:

1. 由m个训练样本的Cost函数之和

2. 正则项

更新系数——反向传播(back-propogation)

运用梯度下降法解最优问题,会遇到求偏导数$\frac{\partial J(\Theta )}{\partial \Theta ^{(l)}_{ij}} $的问题:

其思想请直接参考博客https://blog.csdn.net/weixin_38347387/article/details/82936585

其实质依然是偏微分的链式求导法则。

其结果为:

这里暂不做详细推导。

最新文章

  1. Git入门资料汇总
  2. supervisor的安装与简单介绍
  3. 关于easyui datagrid 表格数据处理
  4. ModelMapper 中高级使用 java
  5. 如何使CEF支持Flash
  6. C++ 控制台代码输出控制
  7. 173. Binary Search Tree Iterator
  8. JSFunction-Javascript常用函数库
  9. mongnodb 启动脚本
  10. 【Xamarin挖墙脚系列:Mono项目的图标为啥叫Mono】
  11. Swift - 搜索条(UISearchBar)的用法
  12. 单向链表仿LinkedList
  13. Flex4 布局 元素index
  14. 安装和配置Symfony
  15. Spring boot 学习笔记 1 - 自定义错误
  16. Winsock编程基继承基础(网络对时程序)
  17. js 向上和向下取整
  18. 【开源GPS追踪】 之 服务器硬伤
  19. C#Web从0到1—创建一个web并从VS集成的SQLlocalDB数据库中查询数据
  20. The First Android App----Adding the Action Bar

热门文章

  1. kali-国内源-更新系统
  2. XAF在页面中添加按钮
  3. C++程序设计实验三 类和对象Ⅱ
  4. Aspose.Cells 拒绝访问、数据库 64 bit mode with the 32 bit Oracle、视图加载格式不正确。
  5. datax在win10中的安装
  6. 靶场练习2:cloudantvirus
  7. Selinux讲解
  8. Ubuntu14.04下Git安装与使用
  9. 当win7遭遇蓝屏代码0x0000006b
  10. CentOS7桥接网络设置(小白向)