当前位置:   article > 正文

机器学习和深度学习 -- 李宏毅(笔记与个人理解1-6)_李宏毅机器学习

李宏毅机器学习

机器学习和深度学习教程 – 李宏毅(笔记与个人理解)

day1

课程内容

  1. 什么是机器学习 找函数
  2. 关键技术(深度学习) 函数 – 类神经网络来表示 ;输入输出可以是 向量或者矩阵等
  3. 如何找到函数: supervised Learning 、 self supervised learning (pre train 又叫 Foundation Model 著名的例子有 Bert)、 Generative Adversarial Network、 Reforcement Learning
  4. 进阶内容 : Anomaly Detection 、 Explainable Al 、 Model Attack、 Domain Adaptation、NetWork Compression、 Life- Long learning 、 Meta Learning = learn to learn

Day2

introduction of Machine /deep Learning

Machine 是什么?

函数的不同类型

预测 分类

Structured learning 产生一个有结构的物件

一个例子 : Youtube Channel 的订阅量 找一个函数可以预测明天的观看次数

Step 1. y = w x1 +b Based on domain knowledge

Step 2. Define Loss From Training Data; Loss is a function of parameters L(b, w)

Step 3. Optimization w *, b * = arg min L ; Gradient Descent : 步长等于切线斜率(微分);然后还有一个n (ita)学习率来控制 w的变化长度 – > 通常自己设定hyperparameters

问题: 有可能陷入局部最优点; 可能的改进方法(self thinking)

1 取更好的初始点

2 改变学习率

3 找到所有的局部最优点(可以通过改变学习率进行跳出), 进行比较(例如找到十个不同的 局部最优点,然后进行min

老师的伏笔: 高斯梯度 真正的痛点是什么?盲猜是 梯度消失 (wrong)

Gradient Descent

高斯梯度法的一般步骤:image-20240405193643648

image-20240331160958811

how to improve linear model?

因为 linear model 过于简单 造成了一定的 model bias; 需要有更多未知参数的model

如图所示 , 红色的线可以由 常数+ 一系列蓝色的线来拟合

image-20240331163714307

具体步骤如下:

image-20240331164018134

0+1+2+3 = red line

发现:

所有的piecewise linear curves 都可以由blue line 组成

发现 more:

beyond piecewise linear 也可以

how to represent this function (blue line )?

image-20240331164617726

用一个近似的曲线表示 sigmoid function

more thinking:

  1. how to find the first sigmoid ? 数学变换?–> 人口增长的背景下,概率论中的伯努利分布 f(x|p)=px (1-p)1-x
  2. and w and b here 和 前面的linear functon 是否有关?无关

实际可用的拟合函数(折线函数)

image-20240331195542107

这里补充说明一点, 之前走了弯路, 以为这里的合成函数是一个分段函数, 后面的学习纠正过来, 这里就是单纯的 三个sigmoid 函数进行了 相加(有点多余, but who knows how could I say that )

NOw we have a new model which is more flexible

image-20240331195721846 image-20240331200013967

这里的w 表示特征,j表示特征的个数, 老师讲 如果是7天的话 j 就是1-7, 有一点点不明不白, 难道说之前的预测例子,是一个多特征的问题吗?

回忆, 好像确实和之前的linear model 有一点点不同, 一开始 取前一天,y = wx1 +b;后来取前七天的时候image-20240331200529105

注意这里的x 表示前j天的订阅次数, w 和b 是需要拟合的参数,也就是说这里至少需要拟合出7 组不同的w 一共有8 个参数(加上 b)。是根据前七天的订阅量, 预估第八天,相当于前七天是 不同的特征,预测第八天的特征,虽然老师这里的例子是实数值;换一个例子来表示可以这样理解: 选西瓜判断好坏瓜, 一开始只选择颜色(取值有 012 ),后来加上了 大小、响度,气味等不同的性状(取值为 0 1 2 ),然后预测瓜的取值(0 / 1 ); 从这个角度理解, 这个玩意儿相当于训练出 不同特征对于 结果影响的权重! nice

得出结论, 是的老师之前讲的例子确实相当于一个多特征的例子 √

言归正传, 那么这里老师讲得到一个 关于w 的参数矩阵, 和b,c 的参数向量,以及 最外面的b ;

那么接下来的问题就变成,优化 这些参数使得 L 最小 (nice!)

image-20240331203102456

卡住了;

简单顺一下这个图是什么意思: x 表示前 1 2 3 天 的订阅量;

当 j 不变的时候, j = 1 ,表示,通过三个 blue line image-20240331203428921去拟合 前一天的订阅量和y(第二天的订阅量)的关系;需要 3*3 +1 = 10 个参数; j = 2 / 3 的时候同上, ok pass ~

注意:w i j _{ij} ij 在这里表示每一个blue line 的斜率,w i j _{ij} ij表示每一个特征在每一次sigmoid 函数中所占的权重

more thinking :

这里的r1 ~r3 表示什么呢?根据式子来理解, 就只能是三种sigmoid 函数方法占预测结果的权重了

Day3

改写为向量和矩阵乘法的格式image-20240405193757628

接下来就分别把r 放到sigmoid方式里

image-20240402155902778

简写以后 (向量化)

image-20240402155920608

整个过程的向量表示: y = b + cT a在这里插入图片描述

一系列线性代数的表示方法(简洁)

Before we find the parameter (unknown) ,define some variable

image-20240402160557674

Loss L(theta)


image-20240402161613791

并不是用L 中的数据来训练参数,每一次更新参数的步骤叫做一次 epoch

Q:老师伏笔, 为什么这里要使用batch?

Day4

image-20240404170836887

这里的batch Size 也变成了hyperparameter

一个hard Sigmoid 也等于两个relu的叠加image-20240404171251360

ActivationFunction

image-20240404171417570

哪一种比较好?

神经网络训练的层数-- 又一个 hyperparameter

image-20240404171637780

a fancy name

image-20240404172105715 image-20240404172252689

为什么深? 而不更宽呢

Fully connect feedforward

在这里插入图片描述

image-20240404174249655

这里可以用来推导矩阵的表示image-20240404174539553

image-20240404174701660

image-20240404175108549

相当于在隐藏层中,做了特征提取;输出层相当于一个多分类器image-20240404175415340

FAQ

image-20240404180133128

Loss 的定义

image-20240404180343018

这里的这个函数用的很奇怪,没见过,但是简单分析一下, 这个式子表示的还是y 和 y ’ 的差距;but含奇怪的一点是 这里老师说 让这个参数越小越好 ……不应该是越大越好吗?因为有一个 负号

明白了 应该就是越小越好, 这里老师拿一个多分类的问题举例,所以这里用到了交叉熵的概念, 信息熵越小, 说明信息的混乱程度越小, 分类的 y1 --y10 越精确,之后的loss 见下一页ppt

image-20240404180942211

啊 这里Loss 为啥上面的系数是 n 啊…… 哦对,我sb,n表示的是c 的序号,而不是幂次;

怎么回事, 怎么乱糟糟的, 这个c i 到底是什么时候出现的?本质上还是对交叉熵的概念不了解导致的

交叉熵(cross Entropy)

…… 这个概念暂时悬而未解吧

这里注意一下哈,

首先这个交叉熵的概念先放下, 就先用最常见的欧氏距离来表示这里的 y 和y '的差距,ok,第一个问题解决了;

第二点, 为什么这里需要用c i 以及它表示的是什么意思, 简单理解的话就是说, 每一个输入对应的一个输出和真实值的距离;因此有多少组输入就会有多少个c

第三点, c 对w的偏微分 一定是 ci 到 cn 同时进行 且等于 0 的,否则不能保证他们的和最小 (c i 到cn的和)

Day5 BackPropagation

什么是方向传播?

在train neru network 的时候 GradientDiscent的运作方式

Gradient Descent

image-20240405004715930

在这里插入图片描述

cn 表示 yn 和yn(head) 距离的function

chain Rule

正向传播:

image-20240405003912719

找到规律,对谁的偏微分 ,就等于该输入

反向传播:

image-20240405010416466
在这里插入图片描述

老师这里说 sigmoid ‘(z )是一个常数, 因为z在决定 前馈的 时候就已经决定好了;提问, 为什么?如何理解这个已经决定好了?
如果是按照常数的理解方法的话, z’ 又从何谈起呢?

…… 这个暂时学不进去了

Day6 BackPropagation(2)

image-20240405191755463

用手推导了一遍具体数字的题目,对反向传播有了更深的理解: 本质上就是梯度下降法;没有丝毫新奇之处;只在于 在深度学习中, L(g(h(……w))),然后我们无法直接求出 L对w 的微分, 需要经过chain rule来进行,这个过程就是反向传播;

至于老师这里说的 sigmoid ‘(z )是一个常数;是因为 z 在前面的前馈中已经计算出来了,就等于输入值和w的线性相加,所以带入以后是一个常数;其实老师讲的很清楚了,是自己对过程不太清晰,把自己绕进去了。

两个case:

case1 . output layer

直接求即可

case2 . hiden layer(not output Layer)

我猜测还是和之前的一样,直到变成case1 为止

image-20240405192123796 image-20240405192242622

ok 我猜对了~嘿嘿

image-20240405192813225

ok 小结一下,反向传播的意义在于减少运算~ 与其正向的求不出来算好几遍 对输出层的偏微分, 不如最开始就直接算 输出层的偏微分

但是扩大的倍率(图中的三角形)需要前一次的正向传播才能求出

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/1002756
推荐阅读
相关标签
  

闽ICP备14008679号