深度学习基础(一):logistic分类
来源:互联网 发布:手机淘宝无法登录 编辑:程序博客网 时间:2024/04/26 11:04
这个系列主要记录我在学习各个深度学习算法时候的笔记,因为之前已经学过大概的概念,所以这轮学习比较着重于公式推导和具体实现,而对概念上的描述不多,因此比较适合对此有一定基础的同学。
在正式开始写深度学习的知识之前,会有两节传统神经网络的内容,因为深度学习中大量运用了以往神经网络的知识。搞懂传统的神经网络如何工作是很有必要的,有助于对之后的学习打下坚实的基础。
1. logistic分类
几乎所有的教材都是从logistic分类开始的,因为logistic分类实在太经典,而且是神经网络的基本组成部分,每个神经元(cell)都可以看做是进行了一次logistic分类。
所谓logistic分类,顾名思义,逻辑分类,是一种二分类法,能将数据分成0和1两类。
logistic分类的流程比较简单,主要有线性求和,sigmoid函数激活,计算误差,修正参数这4个步骤。前两部用于判断,后两步用于修正。本文分为3部分,前2部分讲普通logistic分类的流程,第三部分则稍作扩展。
1.1 线性求和以及sigmoid函数
第1,2步是用于根据输入来判断分类的,所以放在一起说。假设有一个n维的输入列向量
此时因为z的值域是
其形状为
图1 sigmoid函数
可以看到x越大,
当 a 大于0.5的时候,我们判定x应属于1类,如果小于0.5,则属于0类。这样,就完成了判断的工作
1.2 误差计算以及参数修正
上面完成的判断过程中用到了参数向量h和偏置量b。 可以说,h和b的值直接关系到logistic判断的准确性。那么这两组参数是如何获得的呢?这就涉及到了参数的修正。在最开始的时候,h中的值是随机的,而b的值是0. 我们通过不断的训练来使得h和b能够尽可能的达到一个较优的值。
那么如何训练呢?假设我们期望输入x的判定是y,而实际得到的判定值是a,那么我们定义一个损失函数C(a,y),通过修正h和b的值来使得C最小化,这是一个优化问题。在凸优化问题中,可以通过
来直接算得h和b的最优解。然而在某些情况下,例如数据规模很大,或者非凸优化问题中,则不能这么做,而是用迭代的方法来得到局部最优解。
其中
这样,就能够得到每次迭代的参数更新公式为
1.3 将logistic扩展到多分类
从之前可以看出,普通的logistic只能进行二分类,即只能够分为0或者1。那么如果这些样本属于多个类该怎么办呢?人们想了很多办法,例如一对多法,依次把某个类别的样本归为一类,其他剩余的样本归为另一类,这样k个类需要构建k个分类器。还有一对一法,在任意两类样本之间设计一个分类器,k个类需要k(k-1)/2个分类器。
在这里,我们将输出由一个值更改为一个向量。例如有3个类,那么输出就是一个长度为3 的列向量,对应项的值为1,其他为0.即
分别表示第0,1,2个类。 也可以看成是原来若干个logistic分类器组合在一起。对应的某个分类器只对该类输出1,其他情况都输出0.从这一点上来讲,这个做法有点类似于一对多法。此时,由于输出从一个数成为一个向量,之前的公式都要加以修改。首先,原来的y,a,z,b变成了列向量, 向量
此时的
得到的a向量中,其最大值所在的位置索引即为判断出的分类。
参数修正部分的公式也是类似的,
注意有些向量之间是进行点乘的。
- 深度学习基础(一):logistic分类
- 深度学习笔记(一):logistic分类
- TensorFlow【深度学习】逻辑分类(Logistic Classification)
- 深度学习(一)logistic回归
- Logistic回归(一)分类
- 深度学习基础(一)
- 深度学习:Logistic 回归
- 机器学习一:基于logistic回归来做分类预测
- 神经网络与深度学习(一)- Logistic Regression as a Neural Network
- 深度学习基础(一)神经网络
- 深度学习笔记(一)线性分类器(基础知识)
- [深度学习基础] 2. 线性分类器
- [深度学习基础] 2. 线性分类器
- logistic regression 分类:机器学习
- 深度学习之基础(一)
- 深度学习(1):Logistic 回归
- logistic分类(logistic回归 LR)
- DeepLearning学习笔记(一):Logistic 回归
- 【HTTPS服务器配置】----Nginx配置
- 母函数(在他人讲解的基础上添些自己的理解)
- 【人工智能】正经说-自然语言处理(1)
- 阿里java编码规范(三)控制语句,注释规约
- 表单校验
- 深度学习基础(一):logistic分类
- 最长子序列问题
- Tensorflow C++学习(二)
- 【Android应用开发】-(19)Android 串口编程原理和实现方式(附源码)
- i2c-dev
- 做UI自动化一定要跨过这些坑
- Codeforces Round #417 (Div. 2) B. Sagheer, the Hausmeister —— DP
- android使用ViewPage实现一个卡片滚动
- 设计模式之代理模式(Proxy)