当前位置: 首页 产品详细

学好线性代数程序员

一、前辈给计算机专业学生的几个建议!

阿里前辈给计算机专业学生的

九个建议

1.学好线性代数和离散数学

它是算法、机器学习,视觉处理这些研究方向的一个基础。

2.学好计算机底层相关的课程

包括数据结构、算法、操作系统、网络、数据库以及编译原理这些课程。它决定你将来是成为一名真正的程序员,还是做一个普通的码农。同时决定你是否能通过大厂的面试。可以去b站、中国大学

MooC、国外的coursera上学习。

3.确定未来技术方向,深入学习一门编程语言

可以是Java,或者C或者C++。

关于学技术,有一句老话说的很好,叫做不怕万招会,只怕一招精,学精一门语言,不仅可以帮助你解决更深层次的问题,实现功能更强的项目,并且,对你学习其他的语言,也非常有帮助。你会发现,学精了一门语言,再学其他的就很容易了

4.参与实际项目或者学科竞赛

首先,它可以检验你的专业水乎够不够硬,是不是做到了学以致用。

其次,通过项目和竞赛可以帮助你们发现知识体系中的盲点,驱动你有目的的学习,而且参加项目和竞赛,可以大大提高你将来到大厂去实习以及就业的几率。特别是对于那些只上了普通学校的计算机专业的学生来说,这个,更是可以提高你将来就业竞争力的不二法宝。

5.刷题刷题刷题,重要的事情说三遍!

主要就是刷算法题,需要你先学习数据结构与算法,之后你就可以多刷题,多刷题,多刷题了!这件事情越早做越好,最好的开始时问节点是大二,大一把数据结构与算法学习学习,大二就开始刷题了。

6.学会使用Github

这个真的是一个巨大的资源包括,这个也号称是程序员最大的同性交友网站,我觉得,每一个计算机专业的人都应该知道它,会基本的使用它,在这上面,你可以找到很多有趣实用的项目供你学习!

这就是一个代码托管平台,简单说,就是全世界各地的程序员会把自己用代码写的东西上传上去,然后你就可以用了,一定要善加利用,好处多多,用了就忘不掉了!

7.多折腾项目

千万不要只做一个理论派,理论固然重要,但是离开了实战,理论的作用将大大折扣,所以身为一个计算机专业的学生,除了要学好学透必备的理论知识,一定要花时间多去折腾一些项目!

说的简单点,就是用你所学的知识去做一些东西出来,把理论知识落实到实战当中去,在实战中去不断的弥补巩固你的理论上知识,理论与实战一定是相互促进的!

8.提前实习

尤其不准备考研,毕业就准备工作的!

实习能让你提前接触企业公司,包括环境、氛围、工作方式方法,并且实习一定要找那种大公司,大公司对实习生是有培养计划和要求的,对于表现优秀的会直接聘用你,省得再去哀鸿遍野的秋招卷了,难道不香吗?

小公司找实习生大部分就是便宜,教你一点东西,然后你之后的时问都会是重复的做这个东西,所以实习也要慎重。

9.锻炼身体

跟学习没有直接关系但有间接关系,并且比学习还要重要的事。

二、程序员线性代数什么程度可以学

程序员需要掌握本科程度的线性代数才可以学。作为一名程序员需要要掌握物理知识,数据冗余存储相关的编解码算法,这些背后本质是矩阵的计算,而这些至少需要你掌握本科程度的线性代数的知识才能够进一步的理解学习。

三、程序员必备的一些数学基础知识

作为一个标准的程序员,应该有一些基本的数学素养,尤其现在很多人在学习人工智能相关知识,想抓住一波人工智能的机会。很多程序员可能连这样一些基础的数学问题都回答不上来。

作为一个傲娇的程序员,应该要掌握这些数学基础知识,才更有可能码出一个伟大的产品。

向量向量(vector)是由一组实数组成的有序数组,同时具有大小和方向。一个n维向量a是由n个有序实数组成,表示为a=[a1,a2,···,an]

矩阵

线性映射矩阵通常表示一个n维线性空间v到m维线性空间w的一个映射f:v->w

注:为了书写方便,X.T,表示向量X的转置。这里:X(x1,x2,...,xn).T,y(y1,y2,...ym).T,都是列向量。分别表示v,w两个线性空间中的两个向量。A(m,n)是一个m*n的矩阵,描述了从v到w的一个线性映射。

转置将矩阵行列互换。

加法如果A和B都为m×n的矩阵,则A和B的加也是m×n的矩阵,其每个元素是A和B相应元素相加。[A+B]ij=aij+bij.

乘法如A是k×m矩阵和B是m×n矩阵,则乘积AB是一个k×n的矩阵。

对角矩阵对角矩阵是一个主对角线之外的元素皆为0的矩阵。对角线上的元素可以为0或其他值。一个n×n的对角矩阵A满足:[A]ij=0ifi?=j?i,j∈{1,···,n}

特征值与特征矢量如果一个标量λ和一个非零向量v满足Av=λv,则λ和v分别称为矩阵A的特征值和特征向量。

矩阵分解一个矩阵通常可以用一些比较“简单”的矩阵来表示,称为矩阵分解。

奇异值分解一个m×n的矩阵A的奇异值分解

其中U和V分别为m×m和n×n的正交矩阵,Σ为m×n的对角矩阵,其对角线上的元素称为奇异值(singularvalue)。

特征分解一个n×n的方块矩阵A的特征分解(Eigendecomposition)定义为

其中Q为n×n的方块矩阵,其每一列都为A的特征向量,^为对角阵,其每一个对角元素为A的特征值。如果A为对称矩阵,则A可以被分解为

其中Q为正交阵。

导数对于定义域和值域都是实数域的函数f:R→R,若f(x)在点x0的某个邻域?x内,极限

存在,则称函数f(x)在点x0处可导,f'(x0)称为其导数,或导函数。若函数f(x)在其定义域包含的某区间内每一个点都可导,那么也可以说函数f(x)在这个区间内可导。连续函数不一定可导,可导函数一定连续。例如函数|x|为连续函数,但在点x=0处不可导。

加法法则
y=f(x),z=g(x)则

乘法法则

链式法则求复合函数导数的一个法则,是在微积分中计算导数的一种常用方法。若x∈R,y=g(x)∈R,z=f(y)∈R,则

Logistic函数是一种常用的S形函数,是比利时数学家PierreFran?oisVerhulst在1844-1845年研究种群数量的增长模型时提出命名的,最初作为一种生态学模型。Logistic函数定义为:

学好线性代数程序员

当参数为(k=1,x0=0,L=1)时,logistic函数称为标准logistic函数,记为σ(x)。

标准logistic函数在机器学习中使用得非常广泛,经常用来将一个实数空间的数映射到(0,1)区间。标准logistic函数的导数为:

softmax函数是将多个标量映射为一个概率分布。对于K个标量x1,···,xK,softmax函数定义为

这样,我们可以将K个变量x1,···,xK转换为一个分布:z1,···,zK,满足

当softmax函数的输入为K维向量x时,

其中,1K=[1,···,1]K×1是K维的全1向量。其导数为

离散优化和连续优化:根据输入变量x的值域是否为实数域,数学优化问题可以分为离散优化问题和连续优化问题。

无约束优化和约束优化:在连续优化问题中,根据是否有变量的约束条件,可以将优化问题分为无约束优化问题和约束优化问题。###优化算法

全局最优和局部最优

海赛矩阵

《运筹学里面有讲》,前面一篇文章计算梯度步长的时候也用到了:梯度下降算法

梯度的本意是一个向量(矢量),表示某一函数在该点处的方向导数沿着该方向取得最大值,即函数在该点处沿着该方向(此梯度的方向)变化最快,变化率最大(为该梯度的模)。

梯度下降法
梯度下降法(GradientDescentMethod),也叫最速下降法(SteepestDescendMethod),经常用来求解无约束优化的极小值问题。

梯度下降法的过程如图所示。曲线是等高线(水平集),即函数f为不同常数的集合构成的曲线。红色的箭头指向该点梯度的反方向(梯度方向与通过该点的等高线垂直)。沿着梯度下降方向,将最终到达函数f值的局部最优解。

梯度上升法
如果我们要求解一个最大值问题,就需要向梯度正方向迭代进行搜索,逐渐接近函数的局部极大值点,这个过程则被称为梯度上升法。

概率论主要研究大量随机现象中的数量规律,其应用十分广泛,几乎遍及各个领域。

离散随机变量

如果随机变量X所可能取的值为有限可列举的,有n个有限取值{x1,···,xn},则称X为离散随机变量。要了解X的统计规律,就必须知道它取每种可能值xi的概率,即

称为离散型随机变量X的概率分布或分布,并且满足

常见的离散随机概率分布有:

伯努利分布

二项分布

连续随机变量
与离散随机变量不同,一些随机变量X的取值是不可列举的,由全部实数或者由一部分区间组成,比如

则称X为连续随机变量。

概率密度函数
连续随机变量X的概率分布一般用概率密度函数p(x)来描述。p(x)为可积函数,并满足:

均匀分布若a,b为有限数,[a,b]上的均匀分布的概率密度函数定义为

正态分布又名高斯分布,是自然界最常见的一种分布,并且具有很多良好的性质,在很多领域都有非常重要的影响力,其概率密度函数为

其中,σ>0,μ和σ均为常数。若随机变量X服从一个参数为μ和σ的概率分布,简记为

累积分布函数
对于一个随机变量X,其累积分布函数是随机变量X的取值小于等于x的概率。

以连续随机变量X为例,累积分布函数定义为:

其中p(x)为概率密度函数,标准正态分布的累计分布函数:

随机向量
随机向量是指一组随机变量构成的向量。如果X1,X2,···,Xn为n个随机变量,那么称[X1,X2,···,Xn]为一个n维随机向量。一维随机向量称为随机变量。随机向量也分为离散随机向量和连续随机向量。条件概率分布对于离散随机向量(X,Y),已知X=x的条件下,随机变量Y=y的条件概率为:

对于二维连续随机向量(X,Y),已知X=x的条件下,随机变量Y=y的条件概率密度函数为

期望对于离散变量X,其概率分布为p(x1),···,p(xn),X的期望(expectation)或均值定义为

对于连续随机变量X,概率密度函数为p(x),其期望定义为

方差随机变量X的方差(variance)用来定义它的概率分布的离散程度,定义为

标准差随机变量X的方差也称为它的二阶矩。X的根方差或标准差。

协方差两个连续随机变量X和Y的协方差(covariance)用来衡量两个随机变量的分布之间的总体变化性,定义为

协方差经常也用来衡量两个随机变量之间的线性相关性。如果两个随机变量的协方差为0,那么称这两个随机变量是线性不相关。两个随机变量之间没有线性相关性,并非表示它们之间独立的,可能存在某种非线性的函数关系。反之,如果X与Y是统计独立的,那么它们之间的协方差一定为0。

随机过程(stochasticprocess)是一组随机变量Xt的集合,其中t属于一个索引(index)集合T。索引集合T可以定义在时间域或者空间域,但一般为时间域,以实数或正数表示。当t为实数时,随机过程为连续随机过程;当t为整数时,为离散随机过程。日常生活中的很多例子包括股票的波动、语音信号、身高的变化等都可以看作是随机过程。常见的和时间相关的随机过程模型包括贝努力过程、随机游走、马尔可夫过程等。

马尔可夫过程指一个随机过程在给定现在状态及所有过去状态情况下,其未来状态的条件概率分布仅依赖于当前状态。

其中X0:t表示变量集合X0,X1,···,Xt,x0:t为在状态空间中的状态序列。

马尔可夫链离散时间的马尔可夫过程也称为马尔可夫链(Markovchain)。如果一个马尔可夫链的条件概率

马尔可夫的使用可以看前面一篇写的有意思的文章:女朋友的心思你能猜得到吗?——马尔可夫链告诉你随机过程还有高斯过程,比较复杂,这里就不详细说明了。

信息论(informationtheory)是数学、物理、统计、计算机科学等多个学科的交叉领域。信息论是由ClaudeShannon最早提出的,主要研究信息的量化、存储和通信等方法。在机器学习相关领域,信息论也有着大量的应用。比如特征抽取、统计推断、自然语言处理等。

在信息论中,熵用来衡量一个随机事件的不确定性。假设对一个随机变量X(取值集合为C概率分布为p(x),x∈C)进行编码,自信息I(x)是变量X=x时的信息量或编码长度,定义为I(x)=?log(p(x)),那么随机变量X的平均编码长度,即熵定义为

其中当p(x)=0时,我们定义0log0=0熵是一个随机变量的平均编码长度,即自信息的数学期望。熵越高,则随机变量的信息越多;熵越低,则信息越少。如果变量X当且仅当在x时p(x)=1,则熵为0。也就是说,对于一个确定的信息,其熵为0,信息量也为0。如果其概率分布为一个均匀分布,则熵最大。假设一个随机变量X有三种可能值x1,x2,x3,不同概率分布对应的熵如下:

联合熵和条件熵对于两个离散随机变量X和Y,假设X取值集合为X;Y取值集合为Y,其联合概率分布满足为p(x,y),则X和Y的联合熵(JointEntropy)为

X和Y的条件熵为

互信息互信息(mutualinformation)是衡量已知一个变量时,另一个变量不确定性的减少程度。两个离散随机变量X和Y的互信息定义为

交叉熵和散度交叉熵对应分布为p(x)的随机变量,熵H(p)表示其最优编码长度。交叉熵是按照概率分布q的最优编码对真实分布为p的信息进行编码的长度,定义为

在给定p的情况下,如果q和p越接近,交叉熵越小;如果q和p越远,交叉熵就越大。

发布人:hsz68944639 发布时间:2024-07-26

友情链接