(2)神经网络编程基础
文章目录
- 神经网络编程基础
- 2.1 二分分类
- 2.2 logistic 回归(logistic Regression)
- 2.3 logistic 回归损失函数
- 损失函数 (Loss (Error)Funtion)
- 成本函数 (Cost Function)
- 2.4 梯度下降法
- 2.5 使用计算图求导数
- 2.6 logistic 回归中的梯度下降法
- 单个样本的logistic回归梯度下降
- m个样本的logistic回归梯度下降
- 2.7 向量化
- 利用向量化代替其中一个 for
- 利用向量化将 m 个训练样本一步计算
- 进一步利用向量化
- 2.8 损失函数的附加解释
神经网络编程基础
2.1 二分分类
输入一张猫图,网络可以给出判断,是猫(1),不是猫(0)。
E.g. 输入的一张 6464 的RGB三通道的图,即大小为 6464*3 的 X 向量
输出 y = 0 or 1
2.2 logistic 回归(logistic Regression)
如果我们直接利用线性回归 y = wx + b 得到一个估计值 y ,这并不好。
因为我们想的得到的是一个概率,概率取值范围为 0~1,于是利用了sigmoid函数。
y = sigmoid(wx + b)
在网络模型的编程过程中,我们通常将 w 和 b 分开
2.3 logistic 回归损失函数
为了训练模型中的 w 和 b ,需要设置一个成本函数 J(w, b) 使得 J 的函数值尽可能小
损失函数 (Loss (Error)Funtion)
损失函数衡量了在单个样本上的表现
常用的损失函数如下
由于会多次出现斜率为 0 的地方,不利于梯度下降的进行,所以需要寻找一种可以替代它又方便梯度下降的函数
那你想问了,为什么这个函数就可以作为损失函数呢?
原因如下,
成本函数 (Cost Function)
成本函数衡量了在全体训练样本上的表现
2.4 梯度下降法
得到的成本函数是一个凸函数可以求出全局最优解
如上图,通过梯度下降的方法,沿着梯度最大的地方(以最快的速度)达到或者接近全局最优解。
通过以下过程的重复迭代,w 将逐渐向中间靠拢
对 w 和 对 b 同理计算
2.5 使用计算图求导数
在python编程过程中,常用如下方式表示 J 或 L 的导数
正、反向传播过程如是
如上,一个流程图,从左到右的计算是计算成本函数 J,可能需要优化函数
从右到左是求导计算
2.6 logistic 回归中的梯度下降法
a 是预测输出值
y 是样本的基本真值标签值
单个样本的logistic回归梯度下降
单个样本实例的一个更新步骤
m个样本的logistic回归梯度下降
只有两个特征(即x1,x2)梯度下降的迭代公式如下
当输入的特征值变多之后,为了方便计算,需要使用 for 循环,而有一种巧妙的方法,可以利用向量化的方式将 for 循环隐式的表达,再优美一点便可以通过向量化后利用矩阵乘法简化计算,这些将在后面讲解。
2.7 向量化
向量化是代码中消除显式 for 循环的一种方式
经实验验证,向量化要比 for 快 100 倍以上。
利用向量化代替其中一个 for
for 只能对各个元素逐个计算,而利用 python 中的 numpy 中的函数可以将输入的特征 x 向量化,利用矩阵运算简化计算,消除显式的 for 。下图左边是 for 的运算过程,右边是 numpy 提供的一些函数。
下图是梯度算法 for 循环实现的 python 语言
利用 numpy 中所带的函数可以直接对所有 X(i)进行运算的特性,将 dw 计算的部分利用向量化代替,结果如下
利用向量化将 m 个训练样本一步计算
进一步利用向量化
下图语句分别是
- 对矩阵进行列求和, 若 axis = 1 则为行求和
- 利用原矩阵乘 100 后再分别与其列和做比值(相当于求百分比的操作)
reshape可以帮助我们得到正确大小的矩阵,复杂度为O(1),应该常用。
上面的矩阵除法是怎么实现的呢?
原来 python 对于常数或者小矩阵,会将其自动展开为可计算的大小
一般对于加减乘除,python 都会将其展开,然后逐个元素计算。
2.8 损失函数的附加解释
由前两种特殊情况引出损失函数的一般形式
成本函数利用最大似然估计求解
(2)神经网络编程基础相关推荐
- DeepLearning.AI笔记:二、神经网络编程基础
文章目录 神经网络编程基础 2.1 二分类(Binary Classification) 2.2逻辑回归(Logistic Regression) 2.3逻辑回归的代价函数(Cost Function ...
- 达叔系列——神经网络编程基础
以下内容为听了达叔课程的笔记与疑惑之处,暂且都记下.如有不妥之处,尽情指出. (1)二分类问题 目标:习得一个分类器,它以图片的特征向量作为输入,然后预测出结果 y 为 1 还是 0 .比如,我们需要 ...
- python 神经网络编程 视频_python基础教程之达叔系列——神经网络编程基础|python基础教程|python入门|python教程...
https://www.xin3721.com/eschool/pythonxin3721/ (1)二分类问题 目标:习得一个分类器,它以图片的特征向量作为输入,然后预测出结果 y 为 1 还是 0 ...
- 机器学习入门——Python神经网络编程②
python神经网络编程②-基于MNIST数据集 本人通过异步图书<python神经网络编程>这部书来学习,所以此博客内容大概为这本书的概括. 这时Python神经网络编程的第二讲,第一讲 ...
- 深度学习笔记第一门课第二周:神经网络的编程基础(上)
本文是吴恩达老师的深度学习课程[1]笔记部分. 作者:黄海广[2] 主要编写人员:黄海广.林兴木(第四所有底稿,第五课第一二周,第三周前三节).祝彦森:(第三课所有底稿).贺志尧(第五课第三周底稿). ...
- 神经网络的编程基础(转自吴恩达)
第二周:神经网络的编程基础(Basics of Neural Network programming) 文章目录 第二周:神经网络的编程基础(Basics of Neural Network prog ...
- 第一节课-第二周:神经网络的编程基础(Basics of Neural Network programming)
二.神经网络的编程基础(Basics of Neural Network programming) 2.1 二分类(Binary Classification) 2.2 逻辑回归(Logistic R ...
- 《吴恩达深度学习》学习笔记002_神经网络的编程基础(Basics of Neural Network programming)
http://www.ai-start.com/dl2017/html/lesson1-week2.html 神经网络的编程基础(Basics of Neural Network programmin ...
- 深度学习入门笔记(五):神经网络的编程基础
欢迎关注WX公众号:[程序员管小亮] 专栏--深度学习入门笔记 声明 1)该文章整理自网上的大牛和机器学习专家无私奉献的资料,具体引用的资料请看参考文献. 2)本文仅供学术交流,非商用.所以每一部分具 ...
最新文章
- 取存储过程output的取
- day3 python 函数
- Shell中的分支语句
- OpenCV HDF和建立群组Group
- 什么时候考虑使用神经网络
- Task.Factory.StartNewTResult 和 Task.RunTResult 到底有什么区别?
- 莫烦Matplotlib可视化第五章动画代码学习
- vs未能找到程序集platform.winmd_PP体育直播大连人VS恒大:新老8冠王首尾对决竟有十大看点...
- 诗与远方:无题(九)
- 微软 Edge 浏览器加入对 ARM64 的原生支持
- 描述C,C++编译和链接过程
- android httpget 参数,如何在Android中向HTTP GET请求添加参数?
- Java项目——个人博客系统
- Java9 基于异步响应式流的发布-订阅框架
- war包还原成项目_将War包还原成java web项目
- Eclipse中文版汉化教程(详细图解)
- linux记账软件下载,速手记账app安卓版下载-速手记账软件官方版v1.1.7-Linux公社
- 帝国cms !--list.var1--,!--list.var2--的终极用法
- quilt 工具增加 patch 方法
- 【团队管理系列】团队管理方面的量化数据
热门文章
- jeecg富文本编辑器增加字体(仿宋)
- 移动端最强适配(rem适配之px2rem) 移动端结合Vuex实现简单loading加载效果
- Faiss教程:索引(2)
- FindAllAnagramsinaString
- (剑指Offer)面试题61:按之字形顺序打印二叉树
- 基于C++与VS2012的HDF5文件处理(二)
- 2014-02-26_javascript_event
- poco vs Boost
- r语言 bsda包_使用R语言creditmodel包进行Vintage分析或留存率分析
- Python表白代码:“ 星光月夜烟花 皆归你,我也归你”