机器学习深度学习基础笔记(1)——基础理论

  • 该系列是笔者在机器学习深度学习系列课程学习过程中记录的笔记,简单粗暴,仅供参考。

1人脑识别图像过程简介

这里写图片描述

图片左侧从下往上看,
- 第一层的神经元们接收像素级的信号,
- 第二层从这些输入信息得到一些边缘信息,
- 第三层得到一些简单的原始形状信息,
- 第四层得到一些高层的更具体的形象。

2神经元

这里写图片描述

  • 上图为一个简单的神经元的例子,它经过对三个输入的处理得出一个输出结果,举一个简单的实例:

eg:今天去不去游泳?
天气冷?……………………(冷=0,不冷=1)
是不是周末?……………..(不是=0,是=1)
有没有朋友一起去?……(没有=0,有=1)
w1=5, w2=3, w3=2,threshold=5
(PS:实际神经网络的模型是很复杂的。)

  • 对上述公式作个变形(把threshold挪到公式左边):

向量w和向量x
偏移量b=-threshold

这里神经元相当于与非门

这里写图片描述

与非门可以模拟任何方程

  • sigmoid神经元(神经元的一种function)

为了模拟更加细微的变化,使得输入和和输出值从0,1转变为0~1之间的任何的数

这里写图片描述

3神经网络基本结构

一个简单的两层神经网络结构:

这里写图片描述

多层网络(三层网络):

这里写图片描述

Multi Layer perception(MLP):这里实际上是sigmoid neurons,不是perceptions,但是遵循传统,把这一类叫为Multi Layer perception

深度学习的深度主要指隐藏层数量很多

4假设识别手写数字的图片

这里写图片描述

  • 取其中一张图:

这里写图片描述

图片像素是28×28,那么输入层总共要有28×28=784个神经元
如果输出层只有一个神经元,那输出如果>0.5判断其是9,<0.5判断其不是9

Feed Forward Network:前馈型神经网络中没有循环,信息单项向前传递

  • 假设用以下神经网络进行识别(两层):

这里写图片描述

输入层:28×28=784个神经元——每个神经元代表一个像素的值:0.0——全白,1.0——全黑,中间值为灰度(浅灰~深灰)

一个隐藏层:n个神经元(本例中n=15)

输出层:10个神经元,分别代表对输入的手写数字为0~9这十个数字的可能性
eg:第一个神经元(代表0)的输出值=1,其他的输出都<1,则判断输入的手写数字为0

这里写图片描述

  • 总结:
    输入层对应像素点。
    隐藏层:从最低的像素级别到最高的概念级别,其中间的隐藏特征通过隐藏层学习得来。
    输出层对应分类。

5梯度下降算法

梯度下降(gradient descent)

  • 首先介绍一个数据库,它一共有70000张手写数字的黑白图片,名为:

Modified National Institute of Standards and Technology(MNIST dataset

训练集:60000张图片——用于训练
测试集:10000张图片——用于测试

扫描自250位员工的手写字体

x:训练输入,28×28=784d向量,每个值代表一张灰度图中的一个像素值
y=y(x):10d向量

如果输入的某个图片是数字6
理想输出是y(x)=( 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 )T
(ps:T是转为纵向的意思)

  • cost function(又称loss function,objective function)目标函数(又称损失函数)

C:cost预测值和真实值的差别
w:weight权重
b:bias偏移量
n:训练数据实例个数
x:输入值
y(x):神经网络预测得出的输出值——测出的答案
a:实际应该输出的值(当x是输入时)——正确答案
:向量的length function即

C(w,b)越小越好,输出的预测值和真实值差别越小越好

目标:最小化C(w,b)

  • 最小化问题可以用梯度下降解决

C(v):v有两个变量 v1和v2

PS:通常可以用微积分来解决,但如果v包含很多变量,(最大的神经网络具有的成本函数,取决于数十亿的权重和偏差,这非常复杂,仅仅使用微积分最小化是不行的),就无法用微积分解决了,所以用梯度下降解决。

假设把寻找最小的C(v)想象成一个小球从山谷滚下来的过程(梯度下降),小球所在位置就是当前的C(v)的值,小球越靠近最低点,C(v)越小。

这里写图片描述

  • 注意几点:

小球滚落的时候,运气好点会落在最低点,运气不好就可能陷入局部最优。
下降的前提是目标函数要是凸函数convex(就是画出来的图是碗状的)
learning rate 会自动减小

这里写图片描述

寻找最小的C(v):


:学习率

:求偏导

新的就是减去各自对应的偏导
通过不断的更新参数实现C(v)的最小化

6梯度下降算法的变种-随机梯度下降

这里写图片描述
目标函数:

变化量:

coss function 的 gradient vector:

:梯度向量C)

由以上3个公式推导出;

设定:

所以C不断减小

回顾目标函数:

是平均的cost

权重和偏移量更新方程;


对于每个训练实例x,都要计算梯度向量gradient vector:

如果训练数量集很大,会花费很长时间,学习过程太慢

所以,改进算法得出一个变种,称为:
随机梯度下降算法(stochastic gradient descent):
基本思想:从所有训练实例中取出一个小的采样(sample):X1,X2,….,Xm (mini-batch)来估计,大大提高学习速度

eg:选举调查(随机从所有选民中抽取m个人)

如果样本够大:

代入更新方程;


然后重新选则一个mini-batch用来训练,直到用完所有的训练实例,一轮epoch完成

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我知道了,下面是我的回答: 聚类算法是一种无监督学习算法,它可以将数据集中的数据按照某种规则进行分组,使得同一组内的数据相似度较高,不同组之间的数据相似度较低。聚类算法可以帮助我们对数据进行分类、分析和理解,同时也可以为其他机器学习任务提供数据预处理和特征提取的支持。 聚类算法的基本流程包括:确定聚类算法的目标函数、选择相似度度量方法、选择聚类算法、确定聚类的数量、进行聚类操作以及评估聚类效果。常见的聚类算法包括K-Means算法、层次聚类算法、密度聚类算法等。 K-Means算法是一种基于距离的聚类算法,它的基本思想是将数据集中的数据划分为K个簇,使得同一簇内的数据相似度较高,不同簇之间的数据相似度较低。K-Means算法的优点是计算复杂度较低,容易实现,但是需要预先指定簇的数量和初始聚类中心。 层次聚类算法是一种基于相似度的聚类算法,它的基本思想是不断合并数据集中相似度最高的数据,直到所有数据都被合并为一个簇或达到预先设定的簇的数量。层次聚类算法的优点是不需要预先指定簇的数量和初始聚类中心,但是计算复杂度较高。 密度聚类算法是一种基于密度的聚类算法,它的基本思想是将数据集中的数据划分为若干个密度相连的簇,不同簇之间的密度差距较大。密度聚类算法的优点是可以发现任意形状的簇,但是对于不同密度的簇分割效果不佳。 以上是聚类算法的基础知识,希望能对您有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值