AIAnimation 工程安装

AIAnimation 工程安装

GLEW,GLUT库安装: http://newx3d.cn/2017/07/13/%E5%9C%A8win10%E5%92%8Cvs2017%E4%B8%8B%E5%AE%89%E8%A3%85opengl%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83/ 主要就是搜索路径:Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.10.25017\lib\x64 opengl安装非常关键,结果路径是: SDL库安装: https://blog.csdn.net/bo_wen_/article/details/49080631 Eigen配置(不行就编译一下): https://blog.csdn.net/sda42342342423/article/details/78201170 glm安装: 同eigen,只需要链接正确就行! 最后千万不要忘记了:    

Glenn – networked physics

https://gafferongames.com/     Glenn Fiedler is the founder of Network Next where he’s hard at work as CEO/CTO. Network Next is creating a new internet for games and e-sports.     第一篇: Networked Physics in Virtual Reality https://gafferongames.com/post/networked_physics_in_virtual_reality/     Introduction     About a year ago, Oculus approached me and offered to sponsor my
Read More

Machine Learning Techniques Lecture 15: Matrix Factorization

    内容: Matrix Factorization(矩阵分解)模型,一开始先讲linear network里面通过对ID这样的特征编码来萃取特征,然后讲基本的 matrix factirization演算法,要做的事情就是在两个特征之间交互的 做 linear regression,同时你也可以用SGD来做,这是一个有效率的方法,而且可以根据应用做适当的调整,最后总结了一下 extraction model。         上一讲: Raidal Basis Function Network,就是把原来的原始数据通过k-means算法来找出代表,通过使用RBF函数来替代,然后整个方法就可以转化成linear aggregation问题来求解了。     这里: Matrix Factorization         我们首先来回到机器学习基石课程最早讲过的,机器学习的目标就是从资料里面学习的到技能。例如从很多使用者那里收集的到了很多喜欢的电影的数据,每一笔资料就是某个使用者给某一部电影的分数,我们目标是得到那个使用者喜不喜欢还没上映的那部电影。棕色框就是一个实际问题的例子。     在上面的例子里面,x是一个抽象的特征,是一个编号。这样的数据怎么去做机器学习,就是这里要讲解的问题。         X 是抽象的,就是数值上没有意义,只是用来分类别的数据,比如ID,血型,程序语言。     但是我们目前学过的ML Model都作用于有数值特征的数据,例如线性模型,算分数的方式的前提就是数值有举例意义,NN等基于线性模型的方法也有这个要求。只有很少数的机器学习方法可以直接处理类别特征数据,比如讲过的 decision tree。     所以如果我们要对类别特征做机器学习,那么第一步就是将类别特征数据转换成数字数据特征,这个过程叫做encoding。     一种简单的encoding方法叫做 Binary
Read More

Machine Learning Techniques Lecture 14: Radial Basis Function Network

    内容: Radial Basis Function Network 模型,其hypothesis就基本是一堆RBF,比如高斯函数,用这些RBF作为代表来取代NN里面的神经元;学习的过程中如果决定了中心是哪些之后,剩下的就是做一步linear aggregation;然后我们介绍了k-means演算法来用于决定中心,其算法的核心就是 alternating potimization,对里面的变数交叉做最佳化;最后我们举例图示加深印象。         回顾:Deep Learning 是NN的延伸,NN很多很多层的时候,要怎么克服一些困难,比如训练的时候需要好的初始值,denoising autoencoder 就是一种做法(non-linear PCA),其和统计里面用来做资料处理的PCA 有一定的关联性     这里: Radial Basis Function Network         回顾一下很早以前讲的 Gaussian SVM,在SVM里面配合上gaussian kernel,就可以做到在一个无线多维转换的空间里面想办法找一个胖胖的边界。     如果从最后的结果得到的hypothesis来看,我们也可以说Gaussian SVM做的事情就是拿一堆Gaussian来,然后把他们做线性组合,他们的中心在Support Vector这些资料点上。     Gaussian Kernel 也叫做 Radial Basis Function(RBF) kernel,radial 代表你今天算的函数值只和x与中心点的距离有关,basis function 表示的是我们要拿来做线性组合的系数。  
Read More

Machine Learning Techniques Lecture 13: Deep Learning

    内容: Deep Learning模型,是之前讲的类神经网路的延伸,他是一个困难的问题,要经过很多层层层淬炼;然后讲了autoencoder,在deep learning里面它的作用就是帮我们预训练出好的weight,本质上做的事情是从资料里面找出最好的表现方式,做法是用一个浅浅的NN来找到一个好的表现方式;进一步讲到denoising autoencoder 就是在原来的资料里面埋了一些杂讯进去做学习已达到可以抗杂讯的autoencoder的效果;最后讲到这些非线性的autoencoder如果退回来变成线性的话,其实就是PCA方法,作用都是帮助我们降低资料的维度。         回顾:NN模型里面有一层一层的神经元,他们的作用就是帮我们萃取出资料面的模式(特征),通过backprop工具来计算梯度,从而通过GD/SGD法来学习的到NN模型里面的w参数。     这一讲:Deep Learning         类神经网络的核心就是一层一层的神经元和他们之间的连接关系。那么问题是我们要用多少个神经元呢?我们要用多少层呢?我们的NN结构是怎么样的呢?或者你可以主动的去设计;或者你可以把模型的结构当作是参数,通过validation来选择最好的。     在NN里面决定使用什么样的网络结构是非常核心,也是非常困难的问题。         我们这课里面不会把所有的网络结构列出来比较好坏,而是来比较基本的两种。     Shallow(浅): 相对来说学习效率很高,计算量比较小;结构简单,参数比较少;层数比较少,但是每一层放足够多的神经元,一样可以做到很复杂的事情。     Deep(深): 训练的时候一定会花更多的力气,计算量大;对结构的决定会很复杂,参数量大;层数足够多,一样可以做到很复杂的事情;deep这几年很流行的一大关键原因就是其可以得到比较有物理意义的特征。         什么叫做 Meaningful?这里举例手写识别来说明。比如我们要辨识1/5,那么每一层萃取出越来越复杂的各个部位的特征,也就是每一层代表了不一样的物理意义,最后再做辨识。越多层就可以表示越多种不一样的变化,每一层要做的事情相对就变简单了,层与层之间的物理意义就是从简单到复杂的转换。     如果今天你最终要区分的是比较复杂的高级特征,你不能一步登天,像这样每一层做的都是区分非常简单的特征,一层一层的处理合成起来也就可以处理复杂的辨识。在计算机视觉,语音等领域很流行。         深度学习里面的困难点和对应的关键技术如下。     决定整个网络的架构
Read More

Machine Learning Techniques Lecture 12: Neural Network

    内容: Neural Network模型,出发点是把原来的perceptron变成更多层来达到越来越复杂,越来越powerful的效果,这样的链接在生物学上模仿的就是神经元的连结。在NN里面一个网络w固定了的话就是一个hypothesis,每一层做的事情就是根据这些权重来萃取pattern,一层一层萃取出来到最后一层是直接输出。NN学到这些权重的基本方法就是gradient descent(GD),透过backprop的方去很快的算这些梯度到底是多少。最后讲到这样的基本模型还需要小心的是怎么去初始化,用什么regularizer,以及透过early stopping的机制来避免overfit。         上一讲: Gradient Boosted Decision Tree 模型透过 functional gradient 的方式去得到一棵棵不一样的树,然后再给每一棵树以 steepest descent 的方式得到其对应的权重,合起来以后可以做到处理任何的error measure。     这一讲: Neural Network         我们已经学过了 Perceptron 模型,就是把你的输入乘上一堆权重算出一个分数,然后判断这个分数大于0就是正一,小于0就是负一。     如果我们今天把一堆 Perceptron 用 linear aggregation 的方式组合起来的话,就如上面的图所示,从输入出发,乘上第一组的权重得到g1,乘上第二组权重得到g2,以此类推得到一堆的 Perceptron,之后各个g乘上各自的权重alpha,组合起来得到最后的G。     数学表达式如右边所示: 这个过程里面有两组权重,第一组是从输入乘上对应的权重得到一堆的g,权重是w_t;第二组是g_t投票的权重alpha_t。 这个过程里面还有两次取sin的过程,第一次是得到g,第二次是得到G。图示中使用红色的阶梯函数来表示这个动作。     这样的模型到底可以做到什么样的边界。    
Read More

Machine Learning Techniques Lecture 11: Gradient Boosted Decision Tree

    内容: Gradient Boosted Decision Tree,一开始现讲怎么把adaboost和decision tree搭配起来,需要引进sampling 和pruning才能搭配得很好;然后讲了怎么从优化的角度来看adaboost,找到好的 hypothesis 就是找一个好的方向,找到alpha其实就是走一个适当的步长,对应到adaboost里面的exponential error这样的函数就是优化问题;我们可以把优化观点下的adaboost延伸到其他不同种的错误衡量,映入了gradientboost,他做的事情就是residual fitting,根据余数还剩多少来更新regression的问题,看看能不能做得更好;最后总结了一下aggregation的方法。         上一讲: Random forest模型,就是一堆的decision tree,利用bagging的方式做出一些不一样的decision tree,再把他们合起来。除了基本的bagging和decision tree之外,再加上一些额外的random机制,做到了自动的validation和特征选择。     这里: Gradient boosted decision tree         上一次讲的random forest,外层是个bagging,里面是decision tree。这里把decision tree结合到adaboost一起的话,就是 Adaboost-Dtree: 每一轮给我们的资料一群新的weight; 通过这些weight来使用decision tree学一个g; 使用linear的方式把g合起来成为G     要把decision tree搭配adaboost的话,需要把decision tree改造成可以接受权重的形式。         带权重的decision tree算法应该要根据权重来最佳化Ein。  
Read More

Machine Learning Techniques Lecture 10: Random Forest

    内容: Random forest,演算法就是做bagging,然后在bagging里面做decision tree,为了让decision tree更加随机一点,通常会做randomly projected subspaces,就是随机的选择features下刀。在这样的模型里面,因为采用了bagging,可以得到Out-of-bag(OOB)结果,用来代替validation达到self-validation的效果。有了这个机制,配合premutation test(采用随机排序的特征)来测试每一个特征到底是不是你需要的,其重要性。最后图示该算法的表现。         上一讲: 决策树模型,演算法的核心是想办法通过递归的方式切割资料,切割资料的标准就是希望你的资料越纯越好。切开后就得到conditional aggregation的效果,就是根据不同的情况使用不同的小g,就是树叶。     这一讲: 随机森林         先来复习一下两个机器学习模型     Bagging:通过bootstraooing的方式得到不一样的资料,然后把这些不一样的资料送到base算法里面得到不同的小g,最后让这些不同的小g来投票得到结果。 特点是:小g的变化越大,bagging降低variance的效果越明显。     Decision Tree:拿到资料后想办法建立一棵树,通过递归的方式利用条件分割资料得到g,分割的依据是资料的纯度。 依据是:variance很大,资料稍微变一点点得到的树可能就差很多。     两者结合是不是能取长补短呢?         Random forest:random(Bagging过程里面的随机性) + forest(Baggin下面的hypothesis是由fully-grown C&RT decision tree得到)     基本算法: 每一轮的时候想办法用bootstripting的方式得到不同的资料,然后送到完全长成的Decision Tree里面得到g,然后把结果公平的投票得到大G。  
Read More

Machine Learning Techniques Lecture 9: Decision Tree

    内容: 介绍了Decision Tree模型,他的hypothesis就是对于不同的条件,不同的路径上面有不同的小g;他的算法就是把这种树形结构通过对资料越切越纯直到不能再切为止,递归的建立起来。一种实例算法C&RT则是对Decision Tree进一步做了四个决定:怎么做regression,怎么砍树,怎么处理类别输入,怎么处理特征丢失。最后可视化的举例看这个演算法的演进过程。         上一讲: Adaptive Boosting 演算法,透过调整每一笔资料的权重的方式来得到不一样的hypothesis,同时在计算过程中决定每一个hypothesis的权重,然后用linear 的方式合起来,这样的方式被证明可以让分类结果变得比较好。     这一讲: Decision Tree         我们先来看看 aggregation model:就是可以通过很多的g合起来变成大G来提升效果。这包括两种主要的面向。 Blending:我们已经得到了一些小g,可以透过uniform/non-uniform/conditional的方式把他们合起来,这三种情况下的blending的做法叫做 averaging/linear/stacking。 Learning:我们并不知道有哪些小g,需要边学习小g,边把他们合起来,同样可以透过uniform/non-uniform/conditional 的方式把他们合起来,这三种情况下的blending的做法叫做 Bagging/Adaboost/Decision Tree。     Decision Tree 就是补完这张表格,在不同情况下使用不同的小g,而且是边学习边合起来使用。这个方法的起源非常早,都比机器学习这个名词的出现还早,其做法就是模仿的人类的认知决策过程。         什么叫做Decision Tree?     这里是一个例子:你到底要不要下班后打开线上课程学习? 首先看是否下班早,早回则看一下是否有约会,晚回则看一下是否是作业的deadline,再确定会不会打开线上课程。     我们怎么来表达这个hypothesis?     小g:叶子节点,最后的决定;q:非叶子节点,条件,每一个都是比较简单的判断;所有的合起来就是G。 就是模仿人类的决策过程。
Read More

Machine Learning Techniques Lecture 8: Adaptive Boosting

    内容: 介绍了 Adaboost 演算法,一开始先给大家一个小学生课堂的例子来告诉大家这个演算法想像上是长什么样子的。这算法的关键是每一轮的时候透过重新的给每一个example不一样的权重,提高错误的权重,降低正确的权重来得到不一样的g,最后再把g整合成G。最后给了一个adaboost配合decision stump以后的实例,可以工作的很好。         上一讲:开始讲aggregation model,就是想办法把很多的小g合起来变成一个更符合你需求的大G。然后讲到blending,就是如果你已经有很多小g在手上的时候,你可以让他们求平均或者加权投票或者更复杂的非线性组合它们。那如果手上只有一堆已有的资料,那么可以通过bootstrap的方式得到一堆资料集,然后得到一堆小g求大G,这样的演算法叫做bagging。     今天从这系概念出发,讲一个有趣的演算法。         举例:老师交学生辨识图中有没有苹果做法     首先去网络上手机苹果图片。         收集了10张苹果图片,10张不是苹果的图片。老师就是想通过这些数据来学到怎样区分图中有没有苹果的二元分类。         放到一起,前十张是苹果,后十张不是苹果。(对应到机器学习里面的supervised learning,告诉x,y)     第一个学生觉得:苹果是圆形的,不是苹果的很多不是圆形。 根据是不是圆形分类,有些是对的,有些是错的(蓝色的就是错的部分)。         为了让学生更认识到这种分类方式的缺陷,老师就把已经作对了的图片缩小,没做对的放大,突出错误的地方。     然后再问学生还有没有其他的规则来分类?     第二个学生觉得:苹果是红色的,不是苹果很多都不是红色的。 根据颜色分类,有些是对的,有些是错的。(蓝色标出了错误的)     同样老师标出了错误的,让后放大缩小来突出错误的。  
Read More