2021-08-20 ML-李宏毅 lesson1

本文详细介绍了机器学习的基本步骤,包括定义损失函数、梯度下降优化及非线性模型的构建。通过线性模型和非线性模型(如sigmoid和ReLU)的实例,阐述了模型参数的求解过程,以及防止过拟合和欠拟合的考虑。最后,讨论了神经网络(NN)的深层结构及其在深度学习中的应用。
摘要由CSDN通过智能技术生成

机器学习步骤

AI 数据集最常见的6大问题(附解决方案) - 产品经理的人工智能学习库 (easyai.tech)

评估指标:

准确率、召回率、F值

三大要素:数据、算法、算力

Focus:

  1. 只能解决单一任务

  2. 归纳法:只关注任务本身,不关注为什么

ML-李宏毅

Kaggle

looking for Function

1. Different types of Functions

  • Regression

  • Classification

  • Structure Learning

2. how to find

Linear model :

  1. function with unknow parameters

实际问题可以抽象成带有未知参数的函数:

$$
y=f(questions)
$$

这一步一般根据你对问题的了解或者学习,通过分析、分解问题并得到一些变量之间关系

首先定义一个model:

$$
y = b+wx
$$

其中:y为期望的指标(比如预测播放量、学习成绩等),x是过去数据的feature,w和b是我们自己定义的未知参数,求解要对之后的数据进行‘’学习‘’而来的,并分别被定义为weightbias

  1. define Loss from training data

接下里完善模型,在历史数据集中选择一个x1,然后我们随便选取一组b和W,定义损失函数Loss为b和W的函数:

$$
L(b,W)
$$

将计算的数值和真实数据做运算,包括MAE:

$$
e = |y-\hat y|
$$

还有MSE:

$$
e = (y-\hat y)^2
$$

接着Loss就定义为:

$$
L(b,W) = \frac{1}{N} \sum_{r=1}^n e_n
$$

 之后可以在error surface中找到对应的L

  1. optimization

优化的方法叫做Gradient descent,选取一组值,求梯度,梯度减小的方向就是L下降的方向,最后找到L的最小值所对应的w和b

还是随便选一组w0和b0,接着定义从初始位置往梯度下降的方向移动的步长:

$$
\left \{ \begin{array}{c} w^1=w^0-\eta \frac{\partial L}{\partial W}|_{W=W^0,b=b^0} \\b^1=b^0-\eta \frac{\partial L}{\partial b}|_{W=W^0,b=b^0} \end{array} \right.
$$

  • eta是定义的一个权值called:学习率,选取类似PID中的参数整定法

(ps:多练习Markdown的公式语法)

iteratively update w and b

直到最后梯度为0(很难),或者做不下去,来得到最优的参数

  • why hyperparameters are negative? :意思是eta前面是减号,因为要使Loss减小,所以沿着坡往下走

  • 以下统称Linear Model为LM

Nonlinear model

  • 折线的model,操作是Summation,通过类似控制系统画波特图的画法,累加各个环节的函数来拟合真实的折线

  • Summation的办法想用一个式子表示曲线?

所以引入sigmoid Function (three parameters),翻译成S型曲线(形状也似)去拟合曲线:

$$
y=c(\frac{1}{1+e^{-(b+wx)}})=csigmoid(b+wx)
$$

  • 参数变化引起输出变化:

有了新的model,就可以做和LM同样的事

  1. 首先推广LM,来定义一个function with unknown

还是先选取1组data,接着随便选 i 组参数c、b、w,这样就得到:

$$
y=b+\sum_{i}c_i sigmoid(b_i+w_ix_1)
$$

然后推广为 j 组数据:

$$
y=b+\sum_{i}c_i sigmoid(b_i+\sum_j w_{ij}x_j)
$$

  • 第一个b理解为整体function的截距或y轴偏移量,而第二个存在于sigmoid中exp的指数项,控制着x轴偏移

  • w_ij 需要好好理解一下,i 是sigmoid的个数,j 是x也就是data features的个数,合在一起就可以理解成第 i 个sigmoid中第 j 个x的权值

  • i 和 j 的选取,i 组sigmoid的选取自己来定,但是要考虑过拟合和欠拟合,之后会讲,j 来自数据量,也是自己决定,推测应该和内存和算力有关

之后假设选取三组数据,并随机选三组sigmoid,可以抽象出sigmoid的参数与data的关系:

  • 其中r_i是第 i 组的sigmoid中的整个指数项

把整个式子表示成向量和矩阵的形式:

之后代入整个sigma里面,并求得最后的输出y:

  • 代数里向量默认都是列向量,这也解释了c为什么转置

  1. Loss

Loss的定义与LM的Loss一样,求一个e

  1. Optimization

对于第一步里最后的Output function,把所有参数剥离出来,尤其是W,每一列与其他参数拼在一起,拼成一个长的向量theta,之后就和LM一样的步骤,首先选取一个起点 theta^0,求得此处的梯度:

$$
g=\nabla L(\theta ^0)
$$ 

之后迭代更新theta,使得L最小,或者求不下去:

$$
\theta ^n= \theta ^{n-1}-\eta g
$$

我们通常的寻优方式是把N个data分成许多份,每一份有B个data,每一份成为一个batch,然后去update每一个batch,所有data样本完成update之后可以定义为epoch

  • 开头提到的折线的model也叫Hard sigmoid,我们用如下方法进行拟合

存在一个折线ReLU(Rectified Linear Unit):

$$
y = cmax(0,b+wx_1)
$$

  • 形如:__/

想拟合Hard Sigmoid需要将sigmoid model中的sigmoid函数改成max,并且i 要是2倍!!因为两个ReLU才是一个Hard Sigmoid

$$
y=b+\sum_{2i}c_i max(b_i+\sum_j w_{ij}x_i)
$$

推广出来,我们可以把每个sigmoid或ReLU的结果a_i,作为新的x_i,来进行不断的叠加,这个参数定义为Layer,也就是一个新的需要自己决定的HyperParameters,自己决定做几层,并且我们把输入和输出之间的所有层叫做hidden Layer

  • 层数上来了,如果测试集的L超过了训练集叫做Overfitting

每一个sigmoid或ReLU,叫做一个Neuron,包含这些Neuron的整个过程就叫做NN(Neural Network),最后做很多很多层,就叫做deep,最后就叫做Deep Learning

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值