概率基础
- 用概率来描述数据的不确定性
概率论课上都学过Orz
- 贝叶斯的先验和后验概率。
小白特别白
哈哈哈哈哈看到以前说要好好配置博客,结果从2月11日第一次捣鼓了别人5分钟就配置好的hexo 博客,经历了一系列的拼凑,终于也算建成了。
原来学期开始前,想在b站上宣传博客,可是!即没有渲染,也长得这么丑,笔记的质量也参差不齐!
我才不会说,很多记录到一半的笔记,就是因为我上课听不下去了,然后笔记就夭折了。
现在来搞一波markdown渲染~
其实就是在yilia主题配置的_config.yml
文件中将MathJax渲染更新为true.
但是有时候会崩掉,就哭辣。
more >>可以用这些微分来解决什么?
链式法则:复合函数的梯度和导数。
Output是一个向量。
梯度在向量与向量之间的变化关系上的推广。
将矩阵向量化:
df=\partfT\partxTdx
从分量的角度去考虑。
多远正态分布的推广
当f和x是相同大小:
\partfT\partx−1=\partxT\partf
这个结论很适用于变量替换。
当一阶导数求完后,\partf\partx1
其还要关于xT进行求。(行向量?)
Hessian 矩阵在机器学习优雅上有很多应用,
Hessian是对称矩阵,二阶优化算法:牛顿法。
假设我们有n个列向量。
(x−μ)TΣ−1(x−μ)关于μ求导。
18.3/18.4有符号的错误
神经网络中的梯度与链式法则。
考虑f(x)=√x2+exp(x2)+cos(x2+exp(x2))
这样的微分的计算会很冗余
正向传播过程中,我们需要每层的偏导数。
每层的偏导数计算兜涉及到链式法则。
此部分笔记,在专业英语反向传播的那篇博客中也有涉及。
e=(a+b)(b+1)
求a=2,b=1时的e 的梯度:
\parte/\parta=b+1
\parte/\partb=(b+1)+(b+a)
引入中间变量c/d
c=b+1
d=b+a
前注:
本讲的内容按照学习路线上Gradient Descent的补充知识
New Optimization
常见Optimization的方法
Momentum:History
送进一个xt,送入θt得到,yt,会与送入的label比较a.k.a ^yt
使损失函数最小(优化问题)
如何sumover所有的dataset?
On-line v.s. Off-line
Off-line : pour all into model at every time step.
On-line: one pair of (xt,^yt) at a time step.
把momentum累计
时间上的weighted Sum。
考虑到过去的momentum的影响。
当某一个gradientj接近0的时候,或local minimum的时候,有可能有卡住不动的情况出现。
以为我们前面的移动(左1梯度大)会我们累加过来使我们继续移动,虽然这一点(左2)的gradient很小,
实时调整learning rate。
与adgrad唯一的差别在于分母的算法。
确保vt不会永无止境的变大,而是在时间上有weighted sum,不会因为前几步的步伐太大而停下来。给之前的vt乘上一个系数 就不会出现前几步grad太大,造成的分母太大,更新为0。
因为Adagrad是前面所有的求和,所以vt会永无止境的变大,使步伐越来越小。
上两个也很难解决local mimum的问题
Adam=SGDM+RMSProp的优势结合。
[参考资料](SGD,SGDM,Adagrad,RMSProp,Adam,AdamW复习笔记 - 木吉子的文章 - 知乎 https://zhuanlan.zhihu.com/p/129702058)
事实上,是很少再有了。
2014年以后,很少有可以超越SGDM/Adam的算法。
视频没有看完,但现阶段对Adam和SGDM的优化暂且与我无瓜。
基本模型:
Input:x
Output:Class n
Application
还是以宝可梦为例:
Total: how strong 整体程度
HP
Attack
Defense
SP Atk
SP Def
Speed
即一只宝可梦,是7个数字组成的vector.
每个宝可梦都是用feature来描述。
收集数据 Training data for Classification.
(皮卡丘,type雷)/(杰尼龟,type水)/妙蛙种子,type木)
机器学习定理:没有免费的午餐定理。
Regression: Output :realnumber
Classification:Output:Discrete(Some class)
回归方法:对数值型连续随机变量进行预测和建模。
房价预测、股票预测、成绩预测
1.1 线性回归:
拟合,wx+b,值是连续值。
b+∑iwixi
1.2 回归树
1.3 深度学习
1.4 最近邻算法
分类方法:
邮件过滤,金融欺诈,预测雇员异动
2.1 逻辑回归
将线性回归的wx+b通过sigmoid函数映射到(0,1),并利用threshold进行划分。
N分类问题:先得到N组w值不同的wx+b,归一化,最后变成N个类上的概率问题。
2.2 分类树(集成方法)CART算法
2.3 深度学习
2.4 支持向量机SVM
2.5 朴素贝叶斯
聚类:
3.1 k-means
3.2 Affinity Propagation
3.3 层次聚类
3.4 DBSCAN
这里的Loss function是无法用Gradient Descent。
Perceptron/SVM
给一个宝可梦x,统计从哪一个class中来的几率最大。
但是还有一个问题:
如何estimating the probabilities from training data.
计算x出现的几率,得知x的distribution,然后利用distribution来generate一个x。
P(x)=P(X|C1)P(C1)+P(X|C2)P(C2)
正态分布的由mean和variance来决定。
找μ和σ
其实这堆sample可以是任何一个正态分布都有可能sample出来的。
但是,每一个高斯分布能sample出这79个点的概率是(likelihood)不一样的。
即
Likelihood of a Gaussian with mean μ,和协方差矩阵Σ
=
the probability of the Gaussian samples x1,x2,….,x79;
Likelihood(μ,Σ)=Πifμ,Σ(xi)
即likelihood of distribution是独立sample出这79个点的乘积。
接下来,要找Maximum likelihood的那个Guassian
$\mu^,\Sigma^=arg \space max \space Likelihood(\mu,\Sigma) $
什么能让它最大呢?
平均值能让它最大:
μ∗=1n∑ixi;
$\Sigma^=\frac{1}{n}\sum(x^i-\mu^)(x^i-\mu^*)^T$;
把分类放到更到的维度上去。
但是放到了更高的维度上,好像也只有54%de accuracy。
即修改两个class分布的Gaussian,强迫其共用Convariance Matrix。
如此,如何计算likelihood呢?
这样就有140个sample point了,即变成了140个的乘积。
μ1,μ2的计算方式仍不变。
You can always use the distribution you like
这里p(x|C1)的x可以是一个vector,所以p(x|C1)=p(x1|C1)p(x2|C2)…p(xk|C1)
拆解了以后,就变成了一维度的Gaussian了,此时可以更好的减少次数,但模型的正确率。即需要model 不同feature之间的covariance.
对于binary feature:是或不是,可以是Bernoulli distributions.
当你把这些维度拆开的时候,你就在假设各个维度之间没有相关性了。
当independent的时候,是Naive Bayes Classifier.
这也解释了为啥两个Σ相等的时候是linear的boundary
设玩lol的是60%,不玩的是40%.
P(X=1)=0.6;P(X=0)=0.4;
玩lol中,0.8男性,0.2女性。
则不玩lol中,0.2男性,0.8女性。
P(Y=1|X=1)=0.8;
P(Y=0|X=1)=0.2;
P(Y=1|X=0)=0.2;
P(Y=0|X=0)=0.8;
P(X=1)=0.6;P(X=0)=0.4;这个概率是统计得到的,所以X的概率分布是已知的。
现在又来了一个样本,x,在他是男性的情况下,这里x取1的概率是多少:
P(x=1|Y=1)=P(x=1∩Y=1)P(Y=1)
P(x=1∩Y=1)/P(x=1)=P(Y=1|x=1)
P(x=1|Y=1)=P(Y=1|x=1)P(x=1)P(Y=1)
$P(Y=1)=P(Y=1|X=0)P(X=0)+P(Y=1|X=1)P(X=1)$
=0.2×0.4+0.8×0.6
P(x=1|Y=1)=0.8∗0.60.56
最后算出的P(X=玩lol|Y=男性)称之为X的后验概率,即它获得是在观察到事件Y发生后得到的
结构树:数据模型;
通常的决策树以二叉树为主。
每个内部/叶子节点都会带一个label,作为数据如何划分的依据。
所到数据的标签位置,从根节点往下走,走到叶子结点,拿叶子上的label,作为record上的标签。
如何学习?训练得到模型?
自定向下/自定向上
构造完成后的剪纸修正。
C4.5算法以及CART算法
通常使用决策树,使用贪心算法。
寻找最易将label划分开的属性
决策树用crossvalidation和loss进行评价。
多维场景下的维度灾难?
维度高/稀疏/模型不可靠。
在MINIX3中安装一块X MB大小的RAM盘,可以挂载并且存取文件操作。
测试RAM和DISK盘的文件读写速度
分析读写速度有差异的原因。
/*todo */
修改/usr/src/minix/drivers/storage/memory/memory.c
增加RAM盘数
1 | #define RAMDISK 7 |
重新编译内核make build MKUPDATE=yes
;重启reboot选择latest kernel
创建设备 mknod /dev/myram b 1 13
;
1 | /*mknod的使用方式*/ |
DEVNAME创建的设备文件名,这里为/dev/myram
b:块设备:系统从设备中读取数据的时候,直接从内存的buffer中读取数据,而不经过磁盘。
这里,我们的RAM盘,就是用内存来虚拟一个硬盘,所以这里选项应该是b。
MAJOR和MINOR表示主设备号和次设备号。
检测设备是否创建成功:ls /dev/ | grep ram
实现buildmyram初始化工具:
a. 在/usr/src/minix/commands/目录下新建buildmyram文件夹,参照/usr/src/minix/commands/ramdisk文件增加buildmyram也作为minix的内置命令。
b.编写buildmyram.c文件
类比ramdisk.c,但要注意但没和修改PATH
变量。
1 | #include <minix/paths.h> |
c. 将buildmyram.c修改完毕以后,新建buildmyram文件下的Makefile文件(此新建也同样类比于ramdisk),同时修改commands目录下的Makefile文件(此修改类比于Project2)
在ram盘上创建内存文件系统:
mkfs.mfs /dev/myram
将ram盘挂载到用户目录下:
mount /dev/myram /root/myram
检验挂载是否成功,输入命令df
进行检测:
可以看出,有了dev/myram即我们挂载成功。
重启后用户自定义的ram盘内容会丢失,需要重新设置大小,创建文件系统,并挂载。
采用多进程并发的同步读写。
concurrency的数目要增加到设备接近“饱和”状态。
总吞吐量:fileSize(总文件大小)/执行时间(spend time)
饱和:吞吐量难以继续提升,同时I/O延时恶化。
P3-test的编写
P3-test的框架结构:
1 | void write_file(int blocksize,int isrand,char *filename,int fs){ |
还有什么更好的测试方式嘛….
找一个最好的function,需要解决一个Optimization Problem.
随机地选取一个起始点
如何update参数呢?
θ1=θ0−learningRate∇θ0;
此时我们获得了θ1的位置,这是一个新的位置,此时,我们再获取∇θ1,即获取了我们要走的方向,继续走下去。
即梯度是我们要走的方向,走下去。
来自于 bias and variance of estimator.
估算随机变量X的平均值:
Estimator of mean μ
Sample N points : {x1,x2,…,xN}
用抽样的平均去估计/逼近真实的平均值:
m=1N∑nxn≠μ
E[m]=1N∑nE[xn]=μ
可以类比打靶,靶心是真实值。
Var[m]=σ2N,
s2=1N=∑n(xn−m)2,用s2来估计。
E[s2]=N−1Nσ2≠σ2;
不考虑方差:瞄的时候就没有瞄准/即使我瞄准了但仍是有偏离了。
综上:错误来自bias有多大(你瞄准的位置),variance有多大(你的水平有多稳定)
简单的model受data影响会变小。
Consider the extreme case f(x)=c
bias=E[f∗]=¯y
靶心:ˆf;
根据测试,可以intuitively地直观感觉到,模型越复杂,bias越小,模型越简单,bias越大?
那如何直观的理解这一现象呢?
可以很直观的从图中看到,当模型简单的时候,即我打飞镖时点落的范围,因为它简单,所以他的表示的范围有限,范围集中在那个蓝框框里,所以有可能 它甚至自己本身就不包含那个target(ˆf),而当我的模型复杂的时候,我复杂,可表示的范围就变大了,bias就可能包含我的ˆf了。
当然,简单模型,方差小,bias大,可表示的涵盖的范围小。
当然,复杂模型,方差大,bias小,可表示的涵盖的范围大。
这些都可以intuitively的去理解。
那过拟合和欠拟合都来自于什么情况呢?
如果你的误差来自于bias,那就可能是欠拟合,类比于直线本身涵盖不到target靶心,甚至无法拟合完整的一个模型。
如果你的误差来自于variance,那就可能是过拟合,因为复杂模型离靶心bia很少,那就肯定拟合了,但复杂的方差大,可能拟合的太好了,那就是过拟合了。
redesign your model
More data
Very effective, but not always practical.
Regularization
There is usually a trade-off between bias and variance
Select a model that balances two kinds of error to minimize the total error
What you should Not do:
不要认为,自己手上的testing set就一定是最好,即你本身挑model的时候就考虑了自己手上的testing set,此时,在真正的testing set上不一定是最好的error.
但如何避免在testing set 上也以某种意义过拟合呢?
TraingSet={TrainingSet\ValidationSet
TestingSet={TestingSetPublic\TestingSetPrivate
就不要用在public testing set 作为选择模型的标准。
即 ,当你不相信一次分割做validation的结果的时候时候,可以分很多次。
What problem does backpropagation solve? Explain it in your own words.
more >>tag:
缺失模块。
1、请确保node版本大于6.2
2、在博客根目录(注意不是yilia根目录)执行以下命令:
npm i hexo-generator-json-content --save
3、在根目录_config.yml里添加配置:
jsonContent: meta: false pages: false posts: title: true date: true path: true text: false raw: false content: false slug: false updated: false comments: false link: false permalink: false excerpt: false categories: false tags: true
2020-10-27
#认真的博客哒!#数据科学与工程算法
2020-10-19
2020-10-08
#随笔#bugs
2020-10-07
#随笔#bugs
2020-09-30
2020-09-30
#笔记#数据库#大三下
2020-09-28
#课程#大三上#信息检索#专业选修
2020-09-27
#笔记#Missing Semester
2020-09-27
#笔记#数据库#大三下
2020-09-25
#笔记#数据库#大三下
2020-09-24
#笔记#大三上#统计#数据分析
2020-09-23
#笔记#数据库#大三下
2020-09-21
#笔记#大三上#统计#数据分析
2020-09-21
#笔记#数据库#大三下
2020-09-21
#课程#大三上#信息检索#专业选修
2020-09-21
#大二下#操作系统
2020-09-18
#笔记#数据库#大三下
2020-09-15
#笔记#大三上#统计#数据分析
2020-09-14
#课程#大三上#信息检索#专业选修
2020-08-27
#随笔
2020-08-21
#笔记#Machine Learning#Thought Bridge
2020-08-21
#随笔#Fintech
2020-08-20
#Machine Learning#FinTech#ThoughtBridge
2020-08-20
#随笔#ThoughtBridge#Amazon
2020-08-20
#笔记#Machine Learning#Thought Bridge
2020-08-19
#Machine Learning#FinTech#ThoughtBridge
2020-08-18
#Machine Learning#FinTech#ThoughtBridge
2020-08-18
#笔记#Machine Learning#Thought Bridge
2020-08-17
#Machine Learning#FinTech#ThoughtBridge
2020-08-14
#笔记#待补全
2020-08-11
#笔记#Machine Learning#Thought Bridge
2020-08-11
#笔记#Machine Learning#Thought Bridge
2020-08-10
#笔记#Machine Learning#Thought Bridge
2020-08-05
#笔记#雅思
2020-08-05
#笔记#数学建模#姜启源#matlab#司守奎
2020-08-04
#笔记#Machine Learning#Thought Bridge
2020-08-03
#笔记#Machine Learning#Thought Bridge
2020-08-03
#笔记#数学建模#姜启源#matlab#司守奎
2020-08-03
#实习日记#信托公司#房地产信托业务
2020-08-02
#笔记#数学建模#matlab
2020-07-29
#笔记#数学建模#姜启源#matlab#司守奎
2020-07-27
#随笔#bugs#Java
2020-07-26
#笔记#计算机网络
2020-07-22
#随笔#bugs
2020-07-21
#笔记#设计思维#暑期
2020-07-20
#随笔#bugs
2020-07-20
#笔记#Machine Learning#李宏毅
2020-07-17
#笔记#数学建模#姜启源#matlab#司守奎
2020-07-16
#随笔#bugs
2020-07-16
#笔记#大二下#计算机网络
2020-07-16
#笔记#设计思维#暑期
2020-07-15
2020-07-15
#笔记#设计思维#暑期
2020-07-14
#笔记#设计思维#暑期
2020-07-10
#笔记#设计思维#暑期
2020-07-09
#笔记#数学建模
2020-07-07
#笔记#数学建模
2020-07-07
#笔记#设计思维#暑期
2020-07-06
#随笔#笔记
2020-07-06
#笔记#设计思维#暑期
2020-07-02
#笔记#大二下#操作系统
2020-06-24
#笔记#大二下#数学基础
2020-06-22
#笔记#大二下#操作系统
2020-06-20
#笔记#大二下#专业英语
2020-06-19
#笔记#大二下#计算机网络
2020-06-18
#笔记#Machine Learning#李宏毅
2020-06-18
#笔记#大二下#数学基础
2020-06-18
#笔记#大二下#数学基础
2020-06-17
#笔记#大二下#概率论
2020-06-17
#笔记#Machine Learning#李宏毅
2020-06-16
#笔记#大二下#数学基础
2020-06-16
#笔记#大二下#计算机网络
2020-06-16
#笔记#大二下#操作系统
2020-06-15
#笔记#Machine Learning#李宏毅
2020-06-15
#笔记#大二下#操作系统
2020-06-15
#随笔#DaSE#FinTech
2020-06-15
#笔记#大二下#专业英语
2020-06-13
2020-06-12
#笔记#大二下#数学基础
2020-06-12
#笔记#大二下#DaSE
2020-06-11
#笔记#大二下#数学基础
2020-06-09
2020-06-09
#笔记#大二下#数学基础
2020-06-09
#笔记#大二下#数学基础
2020-06-06
#笔记#大二下#专业英语
2020-06-06
#笔记#大二下#专业英语
2020-06-05
#笔记#大二下#计算机网络
2020-06-05
#笔记#大二下#计算机网络
2020-06-04
#笔记#Machine Learning#李宏毅
2020-06-04
#随笔
2020-06-04
#笔记#大二下#数学基础
2020-06-04
#随笔
2020-06-04
#笔记#大二下#数学基础
2020-06-03
#笔记#Machine Learning#李宏毅
2020-06-03
#笔记#Machine Learning#李宏毅
2020-06-03
2020-06-02
#笔记#大二下#操作系统
2020-06-01
#笔记#Machine Learning#李宏毅
2020-06-01
#笔记#Machine Learning#李宏毅
2020-05-31
2020-05-31
2020-05-30
#笔记#大二下#操作系统
2020-05-29
#笔记#大二下#计算机网络
2020-05-29
#笔记#大二下#非技术#英文选修
2020-05-29
#笔记#Machine Learning#李宏毅
2020-05-28
#笔记#大二下#数学基础
2020-05-27
2020-05-27
2020-05-25
#笔记#Machine Learning#李宏毅
2020-05-25
#笔记#大二下#非技术#英文选修
2020-05-25
#笔记#大二下#数学基础
2020-05-25
#笔记#Machine Learning#李宏毅
2020-05-24
2020-05-24
2020-05-24
#笔记#大二下#数学基础
2020-05-22
#笔记#大二下#计算机网络
2020-05-21
#笔记#大二下#数学基础
2020-05-21
2020-05-19
2020-05-18
2020-05-17
2020-05-17
#笔记#大二下#计算机网络
2020-05-15
2020-05-15
#笔记#大二下#非技术#英文选修
2020-05-13
#笔记#大二下#概率论
2020-05-12
2020-05-08
#笔记#大二下#计算机网络
2020-05-06
2020-05-06
#笔记#大二下#非技术#英文选修
2020-05-02
2020-05-02
#笔记#大二下#操作系统
2020-04-30
2020-04-27
#笔记#大二下#操作系统
2020-04-27
#笔记#大二下#操作系统
2020-04-27
#笔记#大二下#非技术#英文选修
2020-04-26
#笔记#大二下#操作系统
2020-04-24
#笔记#DaSE
2020-04-24
#笔记#大二下#计算机网络
2020-04-23
#笔记#大二下#专业英语
2020-04-20
#笔记#大二下#操作系统
2020-04-20
#笔记#大二下#操作系统
2020-04-20
#笔记#大二下#非技术#英文选修
2020-04-20
#笔记#大二下#非技术#英文选修
2020-04-20
#笔记#大二下#专业英语
2020-04-20
2020-04-19
2020-04-17
#笔记#大二下#计算机网络
2020-04-16
#笔记#大二下#专业英语
2020-04-13
#笔记#大二下#操作系统
2020-04-10
#笔记#大二下#专业英语
2020-04-10
#笔记#大二下#计算机网络
2020-04-03
#笔记#大二下#计算机网络
2020-03-31
#笔记#大二下#操作系统
2020-03-27
#笔记#大二下#计算机网络
2020-03-26
#笔记#大二下#计算机网络
2020-03-24
#笔记#大二下#专业英语
2020-03-24
#笔记#大二下#操作系统
2020-03-24
#笔记#大二下#专业英语
2020-03-20
#笔记#大二下#计算机网络
2020-03-18
#笔记#大二下#非技术#英文选修
2020-03-17
#笔记#大二下#计算机网络
2020-03-16
#笔记#大二下#专业英语
2020-03-15
#笔记#大二下#专业英语
2020-03-14
#笔记#Missing Semester
2020-03-13
#笔记#大二下#计算机网络
2020-03-13
#笔记#参考资料
2020-03-12
#随笔
2020-03-12
#笔记#大二下#数学基础
2020-03-11
#笔记#Crash Course CS
2020-03-11
#笔记#大二下#概率论
2020-03-11
#笔记#大二下#概率论
2020-03-10
#笔记#大二下#操作系统
2020-03-10
#笔记#大二下#专业英语
2020-03-09
#笔记#Crash Course CS
2020-03-08
#笔记#Crash Course CS
2020-03-08
#随笔
2020-03-06
#随笔
2020-03-06
#数学基础
2020-03-05
#笔记#Missing Semester
2020-03-05
#随笔
2020-03-04
#随笔
2020-03-04
#随笔
2020-03-04
#笔记#Missing Semester
2020-03-03
#笔记#Missing Semester
2020-02-15
#笔记#Crash Course CS
2020-02-11
#随笔