吴恩达老师机器学习课程chapter04——神经网络
吴恩达老师机器学习课程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)过程。
写作矩阵形式:
\]
其中,\(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 }\)。
代价函数
神经网络的代价函数为:
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
其实质依然是偏微分的链式求导法则。
其结果为:
这里暂不做详细推导。
吴恩达老师机器学习课程chapter04——神经网络的更多相关文章
- 机器学习爱好者 -- 翻译吴恩达老师的机器学习课程字幕 http://www.ai-start.com/
机器学习爱好者 -- 翻译吴恩达老师的机器学习课程字幕 GNU Octave 开源 MatLab http://www.ai-start.com/ https://zhuanlan.zhihu ...
- 吴恩达《机器学习》课程笔记——第六章:Matlab/Octave教程
上一篇 ※※※※※※※※ [回到目录] ※※※※※※※※ 下一篇 这一章的内容比较简单,主要是MATLAB的一些基础教程,如果之前没有学过matlab建议直接找一本相关书籍,边做边学,matl ...
- 吴恩达《机器学习》课程总结(5)_logistic回归
Q1分类问题 回归问题的输出可能是很大的数,而在分类问题中,比如二分类,希望输出的值是0或1,如何将回归输出的值转换成分类的输出0,1成为关键.注意logistics回归又称 逻辑回归,但他是分类问题 ...
- 深度学习 吴恩达深度学习课程2第三周 tensorflow实践 参数初始化的影响
博主 撸的 该节 代码 地址 :https://github.com/LemonTree1994/machine-learning/blob/master/%E5%90%B4%E6%81%A9%E8 ...
- 吴恩达 Deep learning 第二周 神经网络基础
逻辑回归代价函数(损失函数)的几个求导特性 1.对于sigmoid函数 2.对于以下函数 3.线性回归与逻辑回归的神经网络图表示 利用Numpy向量化运算与for循环运算的显著差距 import nu ...
- 吴恩达《机器学习》课程总结(18)_照片OCR
18.1问题描述和流程图 (1)图像文字识别是从给定的一张图片中识别文字. (2)流程包括: 1.文字侦测 2.字符切分(现在不需要切分了) 3.字符分类 18.2滑动窗口 在行人检测中,滑动窗口是首 ...
- 吴恩达《机器学习》课程笔记——第七章:Logistic回归
上一篇 ※※※※※※※※ [回到目录] ※※※※※※※※ 下一篇 7.1 分类问题 本节内容:什么是分类 之前的章节介绍的都是回归问题,接下来是分类问题.所谓的分类问题是指输出变量为有限个离散 ...
- 吴恩达《机器学习》编程作业——machine-learning-ex1:线性回归
❄❄❄❄❄❄❄❄[回到目录]❄❄❄❄❄❄❄❄ 本次编程作业中,需要完成的代码有如下几部分: [⋆] warmUpExercise.m - Simple example function in Octa ...
- 吴恩达deeplearning之CNN—卷积神经网络
https://blog.csdn.net/ice_actor/article/details/78648780 个人理解: 卷积计算的过程其实是将原始的全连接换成了卷积全连接,每个kernel为对应 ...
- 跟我学算法-吴恩达老师(超参数调试, batch归一化, softmax使用,tensorflow框架举例)
1. 在我们学习中,调试超参数是非常重要的. 超参数的调试可以是a学习率,(β1和β2,ε)在Adam梯度下降中使用, layers层数, hidden units 隐藏层的数目, learning_ ...
随机推荐
- tdlib成功编译版本20230205(java)
tdjni是java本地调用接口dll文件夹下的三个动态链接是供tdjni调用的使用时这三个加到系统环境变量里 编译文件在本人的文件里,可以下载
- 数据库原理-SQL查询语句
参考书籍<Oracle 数据库开发与应用> SQL查询语句,针对数据库中的表提供了各种查询功能.这里分为五个部分,说明在SQL中如何对数据进行查询. 简单查询 SELCET语句是最简单的S ...
- Word18 制作家长会通知office真题
1.课程的讲解之前,先来对题目进行分析,首先需要在考生文件夹下,将Wrod素材.docx文件另存为Word.docx,后续操作均基于此文件,否则不得分. 2.这一步非常的简单,打开下载素材文件,在[文 ...
- VMware-实用网站
二进制包的获取方式 ftp://ftp.redhat.com推荐网站 www.rpmfind.net相应的官方网站http://www.mysql.com
- Linux编辑器
Vim 安装: yum install vim $ vim test.cnf --打开文件 命令模式: i --切换到输入模式,以输入字符 : --切换到底线命令模式,以在最底一行输入命令 输入 ...
- vue中的Swiper使用slideTo提示no function
参考官网资料解决:
- vue的:class设置多个值
vue的:class设置多个值 :class="[{ 'labTilTemplate': item.editType == 11 }, { 'txtBold': item.bold == 1 ...
- 自定义Ribbon负载均衡
需要在基包的上一级定义,不然会被扫到如:com.cn.me,要和me同级 然后自定义两个类 DshzsRandomRule类写自己定义的算法,DshzsRule写注入的bean import com. ...
- Python全栈学习笔记---网络编程(三)
一.客户端/服务器架构 客户端:因特定需求联系服务器,并发送必要的数据,然后等待服务器响应,最后完成请求或给出故障原因.对服务进行一次性请求. 服务器:一组硬件和软件,为一个或多个客户端服务.存在的唯 ...
- org.aspectj.lang不存在,引入失败。
问题:添加了依赖,或引入了jar包但是写aspect类时无法引入 解决办法: