吴恩达老师机器学习课程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_ ...
随机推荐
- axios 下载文件流或者预览在线pdf
问题: 后端返回文件流,前端使用axios下载或者在线预览 下载文件流 import axios from 'axios' // 设置响应类型为blob axios.get('/api/app/xxx ...
- 2.2 在resources目录下,新建applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?> <beans> <!-- 这个bean标签的作用是, ...
- 十二、21.提交本地代码到Git仓库并推送到码云
查看分支 运行git add . 把所有修改过后文件添加到暂存区 git commit 把当前所有的代码提交到rights分支 加-m加一个消息 到此所有的功能模块都已经提交到了rights这个分支里 ...
- 福音---Mysql数据库Schema快速生成
数据库工具--Navicat Premium 参考链接:https://jingyan.baidu.com/article/ea24bc395231e49b62b33183.html 以下是数据库sq ...
- .net core解决时间格式转换问题或日期取当前时间
一.时间格式转换 1.新建一个格式化类DatetimeJsonConverter,继承自JsonConverter,然后重写里面的方法 public class DatetimeJsonConvert ...
- elementUI合并单元格
<el-table :data="tableDataFormat" border :header-cell-style="{background:'#FAFAFA' ...
- Win10系统桌面exe文件图标消失不见了的解决方法
使用 Windows10正式版系统 过程中,发现桌面上的一些exe文件图标突然消失不见了.虽然这些exe程序还能够正常运行,可是感觉还是非常不舒服.这该怎么办呢?接下来,就随小编看看Windows10 ...
- sudo:Operation not permitted事件
转载请注明来源:https://www.cnblogs.com/Sherlock-L/p/14933949.html 前言 事情是这样的,在风和日丽的一天,我如往常一样在服务器上敲下了sudo xxx ...
- python multiprocessing调用cython openmp方法需要采用spawn方式
先说结论,在Linux系统,如果python multiprocessing要调用的cython的方法中包含了多线程,比如openmp C code,必须手动设定spawn方式产生多进程. 更多的细节 ...
- mybatis 数据搜索后参数显示乱码无法搜到
今天写作业的时候遇到的小问题 问题说明:搜索订单名中含有"香皂"的订单,显示订单的一系列属性.在搜索后,调试框中显示的东西很奇怪,也没有查找到答案: 觉得是编码问题,所以调试了编码 ...