在YouTube上学习李宏毅的机器学习课程。
1、学习这门课的出发点。
1)为以后找到一份跟机器学习算法相关的工作。
2)在TN神经痛课题上,运用机器学习相关技术,挖掘数据背后的规律。
第一个需要挖掘的规律是,利用颌面部表情,挖掘疼痛强度之间的关系;
第二个需要挖掘的规律是,利用小鼠的神经元,挖掘和疼痛强度之间的关系;
2、希望达到的水平
1)理论层面,对于如何构建机器学习模型有系统的认知。(掌握几个主流的Machine Learning框架,Support Vector Machine、CNN、RNN、LSTM);
2)实践层面,熟悉tensorflow框架,能够搭建、修改深度学习模型;
3)像使用PPT一样,使用深度学习模型。
机器学习2017
课程网站:http://speech.ee.ntu.edu.tw/~tlkagk/courses_ML17_2.html
开源笔记网站:https://datawhalechina.github.io/leeml-notes/#/
3、开始课程吧~
【機器學習2021】預測本頻道觀看人數 (上) - 機器學習基本概念簡介
https://youtu.be/Ye018rCVvOo?list=PLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J&t=930
机器学习能够解决的问题:回归(预测明天股票的价格)、分类(n个类别)、Structured Learning(让机器产生一个有结构的东西,比如绘制一张图、写一段话)。
机器学习 training 的三个关键步骤:
第一步:定义模型model,(说白了,就是带有参数的函数)。$y = b + w x$
第二步:定义模型的评价函数Loss Function(Loss是一个跟参数相关的函数)。选择Loss函数$L$ loss is a function of parameters。L(b,w),模型的输出和真实label之间的差异。
- Mean Absolute Error (平均绝对误差)、Mean Square Erroe(平均均方误差)、交叉熵(Cross-Entropy)
- error surface(通过调整不同参数,绘制出的loss结果);
第三步:优化(optimization) $w^, b^ = arg\ \mathop{min}\limits_{w,b}\ L$
使用梯度下降法,找到使得$L$最小的$w^*$ 和$
Model Bias:来自model本身的限制
https://youtu.be/bHcJCp2Fyxs?list=PLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J&t=115
- Sigmoid函数,多个sigmoid函数叠加起来可以逼近任何函数。
https://youtu.be/bHcJCp2Fyxs?list=PLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J&t=544
【機器學習2021】預測本頻道觀看人數 (下) - 深度學習基本概念簡介
- 课程笔记:关于epoch和batch size的区别:
https://youtu.be/bHcJCp2Fyxs?list=PLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J&t=2378
- ReLu函数
https://youtu.be/bHcJCp2Fyxs?list=PLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J&t=2520
两个ReLU函数加起来,等于一个soft sigmoid函数
机器学习中的Activation Function
https://youtu.be/bHcJCp2Fyxs?list=PLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J&t=2622
- 为什么深度学习不横向发展,而要纵向发展?(为啥不搞fat netkwork ,而叫deep network)
https://youtu.be/bHcJCp2Fyxs?list=PLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J&t=3194
层数越深,越容易过拟合。
机器学习三步走:
https://youtu.be/WeHM2xpYQpw?list=PLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J&t=248
1、function with unknow;$y = f_\theta(x)$
2、define loss function;$L(\theta)$
3、optimization;$\theta^* = arg\ \mathop{min}\limits_{\theta}\ L$
4、使用模型进行预测 $y{predict} = f{\theta^*}(x)$
- 如何做一个调参师:(调整模型结构、调整loss function、通过做batch normolization使得error surface更加平坦、做数据增强、增加训练集的样本)
https://youtu.be/WeHM2xpYQpw?list=PLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J&t=312
- 什么时候才需要增加训练集的样本?
当你的模型出现Overfitting的时候才需要增加训练样本。overfitting的症状是,模型在train dataset上的loss非常低,但是在test dataset上的loss非常高。
https://youtu.be/WeHM2xpYQpw?list=PLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J&t=1285
在无法收集资料的前提下,该如何增加模型在test dataset上表现呢?答案有:数据增强(data augmentation)、对模型施加约束(更少的参数、参数共享、less feature、early stopping、regularization、drop)
- 为什么要把training set分成两份(training set和validation set)
https://youtu.be/WeHM2xpYQpw?list=PLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J&t=2466
- 什么是mismatch(训练样本的分布和预测样本的分布不一样)
https://youtu.be/WeHM2xpYQpw?list=PLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J&t=2933
- 如何知道是不是mismatch?(要理解训练资料和测试资料的产生方式)
https://youtu.be/WeHM2xpYQpw?list=PLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J&t=3061
- 模型都不知道,函数都不清楚,如何计算梯度?
https://datawhalechina.github.io/leeml-notes/#/chapter3/chapter3
【機器學習2021】類神經網路訓練不起來怎麼辦 (一): 局部最小值 (local minima) 與鞍點 (saddle point)
梯度为零的点包括local minimun、saddle point —->统称为critical point
海森矩阵的eign value有正有负,代表saddle point
https://youtu.be/QW6uINn7uGk?list=PLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J&t=1158
- 用海森矩阵的方法逃离saddle point,是实际情况中并不常用。
https://youtu.be/QW6uINn7uGk?list=PLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J&t=1514
- 关于优化函数的小结:
https://youtu.be/HYUXEeh3kwY?list=PLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J&t=2197
- 能不能把error surface 给“炸”平?
通过修改loss function 能够改变optimization的难度
https://youtu.be/O2VkP8dJ5FE?list=PLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J&t=1165
- 分类问题的标签如何打?one-hot vector
https://youtu.be/O2VkP8dJ5FE?list=PLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J&t=214
- 什么是softmax function?
https://youtu.be/O2VkP8dJ5FE?list=PLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J&t=365
softmax的输入叫logit
- 两个class的时候,sigmoid和softmax是一样的。
https://youtu.be/O2VkP8dJ5FE?list=PLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J&t=653
- classficition的loss(MSE、和cross entropy)
https://youtu.be/O2VkP8dJ5FE?list=PLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J&t=723
- 最小化 cross-entropy 和最大化 likelyhood是一模一样的东西。
https://youtu.be/O2VkP8dJ5FE?list=PLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J&t=723
softmax和cross entropy在pytorch中被绑定在一次。
什么是batch normalization
https://youtu.be/BABPWOkSbLE?list=PLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J&t=1047
- batch normaization能够是的error face变得更加光滑
https://youtu.be/BABPWOkSbLE?t=1725
- 各种各样的normalization方法:
https://youtu.be/BABPWOkSbLE?t=1725
network的设计,有什么想法。
【機器學習2021】卷積神經網路 (Convolutional Neural Networks, CNN)
如何强制限制模型的结构(比如只让模型关注一小部分,一个局部,通过设置Receptive Field)
https://youtu.be/OP5HcXJg2Aw?list=PLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J&t=1624
通过参数共享(parameter sharing)进一步限制模型的弹性
https://youtu.be/OP5HcXJg2Aw?list=PLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J&t=1644
- 什么是Feature Map(假设你有一张图片100×100×3的图片,然后有64个3×3×3(chanel)的filter,经过一个卷积层之后得到98×98*64的Feature Map,然后这个Feature Map,你可以再看成是一张图像,只不过这张图片的chanel不是3了,是64个channel)。当然convolution layer可以叠很多层,那么第二层里的filter呢,它的大小就是3×3×64了
https://youtu.be/OP5HcXJg2Aw?list=PLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J&t=2052
- 换一种方式理解CNN,convolution 由各种各样的filter构成,每个filter的功能是从图像中抓feature
https://youtu.be/OP5HcXJg2Aw?list=PLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J&t=1836
- pooling存在的目的是为了减少运算量,一般做两层卷积,做一次pooling。
https://youtu.be/OP5HcXJg2Aw?list=PLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J&t=2611
但是有些场景就不能用pooling,比如AlphaGo里边,就没有pooling,因为pooling之后,把某些列删掉后,对围棋来说就没道理了。
https://youtu.be/OP5HcXJg2Aw?list=PLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J&t=3164
- Flatten是干什么的?把排成矩阵的tensor,拉直成一个向量。然后丢给fully connection layer,再过一个softmax,最终得到输出。
https://youtu.be/OP5HcXJg2Aw?list=PLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J&t=2648
- 将CNN运用到语音识别、自然语言处理上时,需要注意的点有:receptive field设计、参数共享设计等注意事项。
https://youtu.be/OP5HcXJg2Aw?list=PLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J&t=3207
- CNN不能处理图片放大缩小的问题;(训练前,做图像增强)
https://youtu.be/OP5HcXJg2Aw?list=PLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J&t=3310
【機器學習2021】自注意力機制 (Self-attention) (上)
- Self-attention神经网络解决什么问题?
https://youtu.be/hYdO9CscNes?list=PLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J&t=14
现在的网络,输入是一个向量,输出是一个标量或者类别。但是很多任务中,输入是一堆向量,而且输入向量的长度还会发生改变。该怎么办?(比如输入一个句子,句子的长短不是固定的,而且每个单词之间是有联系的。要求输出句子中每个单词的词性,该怎么弄?one-hot的编码格式,使得单词之间的关联性消失)。但是需要注意的是,这类任务中,输入和输出的长度是一样的。(输入几个向量,输出几个向量)
还有一种可能,输入是多个向量,但只需要输出一个label。(比如语句分析,给一个句子,输出是积极的评价,还是消极的评价)
还有一个可能,输入是多个向量。输出也是多个向量。但是输出的个数不是固定的。这类任务是seq2seq任务。
以上总结了三种任务:N对N,N对1,N对M(M是机器决定的);
本节课的内容,针对的是第一类问题:N对N;(sequence labeling任务)
解决“I saw a saw”这样的问题。如何解决?
1、加窗(考虑前后5个vector);
2、考虑整个sequence;如何做到呢?就需要用到self attention技术了;self -attention 会吃掉整个sequence的信息;Input结果Vector,就输出几个Vector;
- 如何更好地考虑整个input的信息?
https://youtu.be/hYdO9CscNes?list=PLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J&t=966
1、第一步,根据$a^1$找出整个sequence中哪些部分是重要的,这部分对于判断$a^1$的label是重要的;
2、sequence中,每向量跟$a^1$关联的程度用一个数值表示$\alpha$
3、self-attention如何决定两个向量之间的关联性呢?(https://youtu.be/hYdO9CscNes?list=PLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J&t=1298),有两种做法:第一种是dot-product。引入了两个矩阵$W^q$和$W^k$ ,还可以采用Additive的方法
4、$q^1 = W^q\ a^1$ (q是query的缩写),其他的向量$k^2 = W^k a^2$(k是key的缩写),然后将$q^1$和$k^2$做内积,得到$\alpha{1,2}$(1代表query是$a^1$提供的,2代表key是$k^2$提供的),$\alpha{1,2}$也叫做attention score。
5、$a^1$也会跟自己做相关性;
6、每一个$\alpha$都会经过一个soft-max(当然也可以经过ReLu函数) ,得到$\alpha’$
7、接下来要根据这些$\alpha$(相关性)去抽取整个Sequence中重要的信息;此时引入$W^v$矩阵,用$W^v$和$a^i$相乘得到$v^i$,即$v^i = W^va^i$ ;
8、每个$v^i$和$\alpha’$相乘,求和,最终得到输出label ,$b^i$ ;
9、谁的attention最大,输出结果就受谁的影响最大;
从矩阵惩罚的角度,重新讲一遍:
https://youtu.be/gmsMY5kc-zw?list=PLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J&t=215
- self attention可以叠加很多层;
https://youtu.be/hYdO9CscNes?list=PLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J&t=1113
- 自监督层中的特征如何计算?
https://youtu.be/hYdO9CscNes?list=PLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J&t=1691
- 什么是模型的embedding? The embedding in machine learning or NLP is actually a technique mapping from words to vectors which you can do better analysis or relating。就是把单词变成向量的方法。
https://datascience.stackexchange.com/questions/53995/what-does-embedding-mean-in-machine-learning
- 多个模型如何级联到一起? Model Ensemble
【機器學習2021】自注意力機制 (Self-attention) (下)
- 做语音识别的时候,有个技术叫Truncated self-attention技术,它解决“如果输入样本L太大”这类问题。(解决如何避免内存爆炸的问题);
https://youtu.be/gmsMY5kc-zw?list=PLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J&t=1664
- self attention 如何运用到图像处理上?
https://youtu.be/gmsMY5kc-zw?list=PLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J&t=1686
讲CNN的时候,把一张图像看成一个很长的Vector;
现在把一张图像看成一个vector set;
- self attention和CNN有什么差异?
https://youtu.be/gmsMY5kc-zw?list=PLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J&t=1828
(1)CNN可以看做是一种简化版的self-attention。因为CNN只考虑 receptive field里的信息。
(2)反过来说,self-attention是一种复杂化的CNN,在CNN中,只关注receptive field里的信息,receptive field的大小和尺寸是人设定了。而在self-attention中,这个receptive field是由机器自己学出来的。
https://youtu.be/gmsMY5kc-zw?list=PLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J&t=1877
- self attention和RNN之间的差异:
https://youtu.be/gmsMY5kc-zw?list=PLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J&t=2122
1、RNN和Self Attention一样,都需要处理输入是一个Sequence的情况;
2、对于第一个input vector,RNN吃掉该Vector和一个memory;
3、对于第二个input vector,RNN吃掉该vector和上个RNN的输出;
4、以此类推;
—两者有什么不同呢?
1、对于self attention 来说,每个输出的vector都考虑了整个sequence;但是RNN输出的每个vector,只考虑了左边的vector,没有考虑右边的vector;
2、李宏毅老师举了一个例子,拿最右边的Output Vector来说,如果希望考虑第一个输入Vector该怎么办?在Self Attention中,只要第一个vector提供的key和query匹配就可以了,但是在RNN中,第一个Vector提供的信息得一直在memory中保留才行;
3、RNN在输出output的sequence时,没有办法并行;而self-attention可以并行;
- RNN相关的神经网络介绍:
https://youtu.be/gmsMY5kc-zw?list=PLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J&t=2423
RNN在之前的课程中已经介绍过,网址如下:
https://www.youtube.com/watch?v=xCGidAeyS4M&ab_channel=Hung-yiLee
一个背景问题:Slot Filling。引出来:我们希望我们的网络是有记忆力的;
在RNN中,网络会考虑输入序列的order;
在RNN中有多种不同的类型,
比如
(1)Elman Network:把hidden layer的值存起来,下个时刻再读出来
(2)Jordan Network:把整个网络的output存起来,
(3)双向RNN Bidirectional RNN 好处是,网络观测的范围比较广。
以上属于基础版的RNN,还有升级版的RNN,比如LSTM,
LSTM中也有记忆门,但是记忆门的结构比较复杂,包括Input Gate(输入门,能不能往memory里写数据,由网络自己学),Output Gate(输出门,其他神经元能不能从memory中读数据,由网络自己学)和forget Gate(遗忘门,决定要不要把memory中的数据格式化,由网络自己学)。
简单来说,LSTM的Cell有四个输入:要写到memory的数据、三个门的开关信号;
https://youtu.be/xCGidAeyS4M?t=1180
LSTM运行的真实过程:
https://youtu.be/xCGidAeyS4M?t=1682
- Self attention如何应用到图(Graph)中?
1、直线的attention matrix是学出来的;但对于Graph来说,edge已经提供了连接关系;
2、所以,在计算attention matrix时,只计算有edge相连的node;
3、当把graph应用到self attention上时,其实就是一种 Graph neuro network;
https://youtu.be/gmsMY5kc-zw?list=PLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J&t=2580
4、那self-attention囊括了所有的Graph Neuro Network吗?
5、GNN网络的详细介绍(图神经网络):
https://youtu.be/gmsMY5kc-zw?list=PLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J&t=2593++
图神经网络:在之前的课程中已经介绍过了
姜成翰助教来讲新的内容,
1、图神经网络的基本介绍。
Graph:图,包含节点和权重边;就是连在一起的结构;节点有节点的性质,边有边的性质;
Neural Network:
神经网络的入门级别:CNN -> RNN -> Transformer ->
2、图神经网络能够解决什么问题?
问题:
我们为什么要用到图神经网络呢?(GNN)
我们怎么把一张图塞到一个Neural Network里呢?
图神经网络能够解决什么问题,做什么事情?
(1)用图神经网络,来开发新药。Train一个generator,(也就是一个decoder),它只吃一些随机的node(random node)
图神经网络的输入是一个graph
日剧,忒休斯之船。找凶手的过程,可以看成是一个classification的问题;每个角色是一个entity,每个entity都有对应的attributes 如何train?
角色和角色之间的关系,如何丢到模型中进行训练?
如何考虑所有entity之间的关系?这个时候就必须要用图神经网络了;
一个问题:我们手上有海量的数据,但是只有有限的labeling,该怎么办?
一个图上边有label node和unlabel node。
图神经网络学的,是node represention (node feature)
基本原则,近朱者赤近墨者黑;
如何把邻居的信息,aggreate到当前节点中;
图神经的卷积;
如何在图中进行卷积?
(1)基于空间的卷积:sum(NN4G),mean(DCNN, DGC, GraphSAGE),weighted sum(MoNET, GAT, GIN), LSTM(GraphSAGE), Max pooling(GraphSAGE)
(2)基于频率的卷积(ChebNet -> GCN -> HyperGCN);
最常用的Model有两个:GAT和GCN;
GNN网络一般用在哪些任务中:
(1)有监督的分类问题上;
(2)半监督的学习问题上;
(3)表达学习上,Graph InfoMax;
(4)Generation(生成): GraphVAE, MolGAN, etc
图神经网络在NLP(自然语言处理问题)上的应用;
图神经网络中一些常见的dataset:
Spatial Based GNN
在GNN中如何更新Feature中的Value,和CNN的基本思想类似,用邻居的值,进行卷积后,得到新的权重。在GNN中补交卷积,叫aggregate。
如何把每个node的feature合并起来,成为一个graph的feature?在GNN中,这件事儿叫read-out
第一个GNN神经网络:NN4G(Neural Networks for Graph)
如何更新权重? :邻居们 加起来,然后乘上权重,在加上input对应的值;
GNN可以有很多层,这么多层怎么readout呢?每一层的feature都加起来,然后经过一个transform后,再加起来
https://youtu.be/eybCCtNKwzA?t=1585
第二个GNN神经网络:DCNN(Diffusion-Convolution Neural Network)
第一层:距离是1的节点全部加起来,然后取平均;
第二层:不是用第二层的feature来更新,还是用第一层的feature来更新,只不过距离不再是1,而是2;
https://youtu.be/eybCCtNKwzA?t=1763
GNN中有K层,就能看到距离是k的邻居的内容;
每一层的特征,就成为一个矩阵;
如果需要做node的feature classification,就把所有层的的第一个节点的feature拿出来,拼成一个矩阵,然后 经过一个矩阵,得到一个值
还有一个网络叫:DGC(Diffusion Graph Convolution)
它是把所有层的feature map 加起来,再做判断;
另外一个model : MoNET(Mixture Model Networks)
出发点:每个邻居都有不同的weight(权重不一样)
https://youtu.be/eybCCtNKwzA?t=1878
该model,定义了节点到节点之间的距离(设计到了节点的度):
https://youtu.be/eybCCtNKwzA?t=1924
另外一model: GraphSAGE
https://youtu.be/eybCCtNKwzA?t=1991
在GraphSAGE网络中,有很多种来利用邻居进行aggregation:mean,max-poling, lstm.
其中最具特色的是把LSTM的思想,运用到图网络中;即,把邻居的feature喂到LSTM中,然后把它最后一层的hidden state当做是output,然后拿这个东西来update。我们知道LSTM是针对有顺序的data的,那么怎么处理GNN中一个节点的邻居们呢?这个时候就是随机搞一个顺序,丢到LSTM中。因为是随机的,所以GNN可能到最后,就会学会忽略顺序对结果的影响;
还有一个网络GAT(Graph Attention Networks)
特点是:不只要做weighted sum ,这个weight sum还要自己去学;
用一个节点和邻居节点,算出来energy的东西;energy衡量了邻居对当前这个节点的重要性。然后在下一层中,用能量energy 乘上 邻居的value,再求和,就得到下一层的的feature map。这种网络就叫 Graph Attention Networks。
https://youtu.be/eybCCtNKwzA?t=2153
GIN(Graph Isomorphism Network) 图同构网络;
理论分析,为什么有的方法是work的,有的方法不可能work。为什么。这就是理论分析;
为什么不要用mean 和max pooling,而要用sum? 以为在前两者无法区分邻居都是一样的情况。
https://youtu.be/eybCCtNKwzA?t=2254
还要加上节点本身的feature ,但是本身的权重可以去学。
图神经网络的第二课;
https://youtu.be/M9ht8vsVEw8
https://youtu.be/M9ht8vsVEw8?t=43
Deep Graph Library中已经有很多写好的GNN
这一节主要讲的是,
(1)graph signal processing;
(2)Spectral-based graph neural network;
基本思想:
https://youtu.be/M9ht8vsVEw8?t=196
Spectral Graph Theory 谱图理论
https://youtu.be/M9ht8vsVEw8?t=420
需要明确两个概念:
邻接矩阵(adjacency matrix):节点和节点之间是否相连?
度矩阵(degree matrix):对角线上都是该节点有多少个邻居;
Graph Signal:每个节点上是一个信号,类似于真实的神经元信号;
Graph Laplacian(图的拉普拉斯变换)
这个课程中将的内容呢,每个节点都是一个标量;
https://youtu.be/M9ht8vsVEw8?t=811
当把laplacian apply到一个graph上之后,相当于在某个信号跟他邻居的能量差。
https://youtu.be/M9ht8vsVEw8?t=1148
这个式子代表的是:power of signal variation between nodes. 代表两个节点之间的信号能量差;
带你直观地理解 图的频率:
图的傅里叶变换:
https://youtu.be/M9ht8vsVEw8?t=1557
图的傅里叶反变换:
https://youtu.be/M9ht8vsVEw8?t=1744
讲这些内容的目标是为了,找到一个可以在图graph上做filter的东西。在频率上直接想乘,相当于在时域上做卷积。
https://youtu.be/M9ht8vsVEw8?t=1923
当前方法的局限性:
模型要学的filter的size跟graph的size有关,这样带来的问题是,模型的学习能力跟输入图的大小尺寸相关。(模型的参数越多,说明模型的学习能力越强。)
Spectral Graph 网络存在的关键局限性是:它不是localize的;
一个GNN网络:ChebNet(属于Spectral Graph)
该网络的两个特点:第一,快;第二:localize;
他的学习能力是O(N) 不会随着模型的输入尺寸变化而变化。
https://youtu.be/M9ht8vsVEw8?t=2490
如何解决时间成本高昂的问题?chebyshev polynomial
https://youtu.be/M9ht8vsVEw8?t=2637
为什么要用chebyshev polynomial,意义是:通过这种方法,可以让参数变得非常好算。
前边没听懂没关系,这里是结论:
https://youtu.be/M9ht8vsVEw8?t=3087
第二个网络GCN(最喜欢用的,比较直观,背后有数学基础)
GCN中feature map 更新的策略是:先让所有节点经过一个transform之后,所有的neighbor包起来,取平均。
把一张自然图像,转换成一张图:
自然图像 ——>super pixel(像素之间存在link)
https://youtu.be/M9ht8vsVEw8?t=3537
一个公开数据集,通过观察分子的结构,预测分子的溶解度:
https://youtu.be/M9ht8vsVEw8?t=3579
一个任务:辨别node属于哪些cluster?
一个任务:做edge的travel classification;
结论:GCN网络的效果并不是最好的;
https://youtu.be/M9ht8vsVEw8?t=3826
可能的原因:
权重的指数decay
drop edge;
Graph Generation,的目标是:生成图片。
这种任务,传统的方法也能做:VAE-based model, GAN-based model,还有auto regressive based model;
图神经网络的总结:
https://youtu.be/M9ht8vsVEw8?t=4151
- self attention的各种变形;
https://youtu.be/gmsMY5kc-zw?list=PLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J&t=2616
- self attention最大的问题,就是运算量非常之大;
【機器學習2021】Transformer (上)
- transformer和bert有什么关系?
https://youtu.be/n9TlOhRjYoc?list=PLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J&t=28
- transformer是什么?就是一个seq2seq的model
https://youtu.be/n9TlOhRjYoc?list=PLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J&t=43
- 硬train一发,能不能解决问题?
https://youtu.be/n9TlOhRjYoc?list=PLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J&t=428
- 台语的语音合成
https://youtu.be/n9TlOhRjYoc?list=PLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J&t=568
- seq2seq的model训练一个聊天机器人;
https://youtu.be/n9TlOhRjYoc?list=PLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J&t=675
- 定制化的模型,往往比seq2seq更好;
https://youtu.be/n9TlOhRjYoc?list=PLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J&t=913
- seq2seq用来进行语法解析;
https://youtu.be/n9TlOhRjYoc?list=PLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J&t=1198
- seq2seq用来解决多标签分类问题;(multi label classification)同一个目标,属于多一个类别
https://youtu.be/n9TlOhRjYoc?list=PLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J&t=1217
- 现在开始学,如何做seq2seq的model.
【機器學習2021】Transformer (下)
【機器學習2021】生成式對抗網路 (Generative Adversarial Network, GAN) (一) – 基本概念介紹
【機器學習2021】生成式對抗網路 (Generative Adversarial Network, GAN) (二) – 理論介紹與WGAN
【機器學習2021】生成式對抗網路 (Generative Adversarial Network, GAN) (三) – 生成器效能評估與條件式生成
【機器學習2021】生成式對抗網路 (Generative Adversarial Network, GAN) (四) – Cycle GAN
【機器學習2021】自督導式學習 (Self-supervised Learning) (一) – 芝麻街與進擊的巨人
自监督学习是无监督学习的一种。
【機器學習2021】自督導式學習 (Self-supervised Learning) (二) – BERT簡介
【機器學習2021】自督導式學習 (Self-supervised Learning) (三) – BERT的奇聞軼事
【機器學習2021】自督導式學習 (Self-supervised Learning) (四) – GPT的野望
【機器學習2021】自編碼器 (Auto-encoder) (上) – 基本概念
自编码器模型的encoder跟降维之间有联系。
李宏毅老师讲PCA和t-SNE
https://youtu.be/3oHlf8-J3Nc?list=PLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J&t=469
Auto-Encoder好在哪里呢?
为什么Auto-Encoder能够work?
https://youtu.be/3oHlf8-J3Nc?list=PLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J&t=632
encoder的事情就是化繁为简:
https://youtu.be/3oHlf8-J3Nc?list=PLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J&t=726
Hinton使用Restricted Boltzmann Machine(受限玻尔兹曼机)对不同层的auto encoder分开进行训练
https://youtu.be/3oHlf8-J3Nc?list=PLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J&t=818
为什么现在都没啥人用,Restricted Boltzmann Machine(受限玻尔兹曼机)了呢?
https://youtu.be/3oHlf8-J3Nc?list=PLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J&t=908
De-noising Auto-encoder去噪的自编码器
https://youtu.be/3oHlf8-J3Nc?list=PLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J&t=964
Bert的模型就是encoder,输出就是embedding,然后跟着一个linear模型做decoder
https://youtu.be/3oHlf8-J3Nc?list=PLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J&t=1085
【機器學習2021】自編碼器 (Auto-encoder) (下) – 領結變聲器與更多應用
【機器學習2021】來自人類的惡意攻擊 (Adversarial Attack) (上) – 基本概念
【機器學習2021】來自人類的惡意攻擊 (Adversarial Attack) (下) – 類神經網路能否躲過人類深不見底的惡意?
【機器學習2021】機器學習模型的可解釋性 (Explainable ML) (上) – 為什麼類神經網路可以正確分辨寶可夢和數碼寶貝呢?
【機器學習2021】機器學習模型的可解釋性 (Explainable ML) (下) –機器心中的貓長什麼樣子?
【機器學習2021】概述領域自適應 (Domain Adaptation)
【機器學習2021】概述增強式學習 (Reinforcement Learning, RL) (一) – 增強式學習跟機器學習一樣都是三個步驟
【機器學習2021】概述增強式學習 (Reinforcement Learning, RL) (二) – Policy Gradient 與修課心情
【機器學習2021】概述增強式學習 (Reinforcement Learning, RL) (三) - Actor-Critic
【機器學習2021】概述增強式學習 (Reinforcement Learning, RL) (四) - 回饋非常罕見的時候怎麼辦?機器的望梅止渴
【機器學習2021】概述增強式學習 (Reinforcement Learning, RL) (五) - 如何從示範中學習?逆向增強式學習 (Inverse RL)
【機器學習2021】機器終身學習 (Life Long Learning, LL) (一) - 為什麼今日的人工智慧無法成為天網?災難性遺忘(Catastrophic Forgetting)
【機器學習2021】機器終身學習 (Life Long Learning, LL) (二) - 災難性遺忘(Catastrophic Forgetting)的克服之道
【機器學習2021】神經網路壓縮 (Network Compression) (一) - 類神經網路剪枝 (Pruning) 與大樂透假說 (Lottery Ticket Hypothesis)
【機器學習2021】神經網路壓縮 (Network Compression) (二) - 從各種不同的面向來壓縮神經網路
【機器學習2021】元學習 Meta Learning (一) - 元學習跟機器學習一樣也是三個步驟
【機器學習2021】元學習 Meta Learning (二) - 萬物皆可 Meta
【機器學習2021】課程結語 - 最後的業配並改編《為學一首示子姪》作結