我们实验性的用BP算法来解决XOR这样一个简单的问题。这两周一直在看Faussett的Fundamentals of Neural networks, architectures, algorithms and applications这本书。
书上第300页的数据如下:使用2-4-1的拓扑结构,学习速率为0.02,如果使用momentum,mu=0.9,当平方误差(欧氏距离的平方)小于0.05时停止学习。我们不考察0,1这种binary的数据表示,因为-1,+1这种bipolar的数据表示在各种神经网络模型中已经被证实明显优于binary。当使用Nguyen-Widrow的初始化,作者做了8次实验,收敛次数分布从224到285,8次中只有一次不收敛。如果用随机的初始化,收敛次数为387,并没有提到不收敛的几率。如果随机初始化+带动能的训练,收敛次数为38。不知道为什么到308页的时候作者给的参数(alpha=0.75,mu=0.9+binary)根本无法收敛,可能是印刷错误,之前某页也说到“学习速率还是取0.2(跟以前一样)”,可是以前明明是0.02。这让我非要自己做实验探求一番不可:
2-4-1,alpha=0.02,mu=0.9,括号中是收敛步数,NA表示发散:
| Random | Nguyen-Widrow | Random+momentum | Nguyen-Widrow+momentum |
| 3250 | 549 | 344 | 109 |
| 4079 | 545 | 323 | 59 |
| 2572 | 568 | 407 | 40 |
| 3091 | 8785 | 328 | 50 |
| 3556 | 512 | 466 | 47 |
| 2949 | 560 | 437 | 56 |
| 4220 | 450 | 384 | 43 |
| 3846 | 460 | 381 | 46 |
| 3506 | 541 | 297 | 48 |
| 4229 | 364 | 336 | 25 |
| 3631 | 453 | 441 | 58 |
| 3314 | 589 | 316 | 44 |
| 4221 | 682 | 283 | 40 |
| 3976 | 450 | 593 | 65 |
| 3143 | 481 | 375 | 37 |
每一次实验都收敛了,而且结果显而易见,Nguyen-Widrow和动能学习有着明显的优势。下面研究一下拓扑结构对收敛速度的影响,(m,n)表示2-m-1的拓扑结构,每个隐藏层有n个元,以下结果均基于bipolar+Nguyen-Widrow+Momentum,alpha=0.02,mu=0.9:
| 第一次试验 | 第二次试验 | 第三次试验 | |
| (1,10) | 15 | 15 | 17 |
| (1,15) | 10 | 8 | 16 |
| (1,30) | 4 | 7 | 5 |
| (1,60) | NA | NA | 4 |
| (2,5) | 15 | 14 | 19 |
| (2,10) | 16 | 8 | 12 |
| (2,20) | 7 | 10 | 6 |
| (2,40) | 5 | 10 | 12 |
| (2,60) | 5 | 6 | 4 |
| (2,100) | 5 | 4 | 3 |
| (5,5) | 17 | 27 | 15 |
| (5,20) | 7 | 6 | 8 |
| (5,60) | 5 | 6 | 5 |
| (5,100) | 5 | 6 | 4 |
| (20,5) | NA | NA | NA |
| (10,5) | 106 | 18 | 6346 |
| (10,20) | 22 | 17 | 17 |
如同上篇文章所说,训练对数应该是权重总数的10倍才好,这里只有4对数据对。单层隐藏层足够解决这个问题,2层的结果更鲁棒,这是可以想象的,因为第二层所引入的值都是-1到+1的值。层数更多也无意义。每层的元数稍稍要多一点,这样每次训练改变的权值也就多一点,收敛也许更快。我这最后一句话太不科学了。谁叫我这篇博客的题目就是一个目前没有说法的一个问题。只能靠实验了。
点我阅读更多
算我后知后觉,神经网络的BP算法原来是这么简单的东西。它是用梯度递降法来减小输出平方误差的方法。多隐藏层可以学习任意连续的映射直到任意精度,但通常一个隐藏层就足够了。它使用的激活函数必须满足以下几个条件:连续,可微,单调非减,有渐进的最小最大值,函数还要相对容易计算。比如
等。
算法描述
- 输入层输出层权重均赋值为小随机数例如unif(-0.5,0.5)。
- 当停止条件为false时,执行3-10
- 对每对训练数据x:t执行4-9
- 每个输入层给数据到隐藏层,也就是发出一个输入向量x
- 输入向量x和输入权重向量v作内积,得到的向量z_in被激活函数f映射到隐藏层上,隐藏层广播该隐藏层向量z
- 该向量和输入权重向量w作内积,得到的向量y_in被激活函数映射输出,得到结果向量y
- 计算输出权重向量w的改变向量delta_y为学习速率alpha,绝对误差(t-y),f’(y_in)还有z的乘积。(以向量的component来看)
- 计算输入权重向量v的改变向量delta_z等于学习速率alpha,w与delta_y的内积,f’(z_in),还有x的乘积。
- 修正w与v
- 检验停止条件
初始权重的选择
这会影响到收敛速度,更甚会导致收敛以致误差是局部最小值而不是全局最小值。初始权重要很小,以免求导得到的值几乎为零。另一方面,权重太小,输出值会很小,也会导致学习速度很慢。
Nguyen_Widrow方法
以输入权重向量为例,随机赋值后,不看biais的权重,使用欧式范数归一化,然后乘以0.7*隐藏层元数的输入层元数分之一次方,biais的权重取正负以上乘积之间的一个随机实数。注意此方法使用tanh(x)作为激活函数。
何时停止
Hecht-Nielsen(1990)建议
数据对分为两个部分,一部分用来训练,一部分用算误差来测试停止。如果误差递减就继续,如果误差增加了,则停止。
需要多少训练对
Baum-Haussler(1989)
假设一共有W个权重,为了使得(1-e)这个比例的同样本空间的结果正确,需要使用W/e对训练数据对得到(1-e/2)的正确率。
修改版BP算法
带动量的BP算法
权重的更改不是用朝着梯度的方向改,而是朝着现梯度和前梯度的方向张成的平面上的一个方向来改,具体的就是在老方法中权重改变量的基础上加上mu乘以上次的改变量。mu的取值是0到1的随机数,不取0和1。带动量的Momentum的BP算法可以避免错误的数据对的影响。如果训练数据对有小部分和其他的很不一样,需要使用小的学习速率,而训练数据对如果相对相似,快速的训练也是可以的。
广义学习速率
每个权值有自己的学习速率alpha,而且学习速率会随着时间改变。简单说来就是,如果改对了方向,学习速率就变大,改错了方向,学习速率就变小。比如Delta-Bar-Delta方法。但是不能保证这种方法一定会起作用。
我的总算把目前三种主要方法的高维通用程序编完了。其中Stochstic Mesh方法涉及到了多维几何布朗运动的条件密度函数,很简单基础的东西,记在这里。不过我不知道是不是这样翻译成中文,反正搜不到,总之就是Geometric Brownian Movements(GBM)。这个随机过程满足以下微分方程:

其中
是一个n维列向量,
是一个n×d维矩阵,
是一个d维列向量的Wiener过程,且其分量相互独立。这就是Black Scholes模型的多维形式。用Ito公式处理
可以知道(记住这是个向量):
,其中C是一个n维列向量,它的第i个分量是这样的:
,这里的
就是
第i行第j列的元了。
设
,我们有:

所以:

所以在已知
的前提下,
是遵循以下密度函数的:
![f(X,Y)=\bigg((2\pi)^{\frac{n}{2}} \sqrt{\det(\Delta\cdot \Gamma\Gamma^t)}\bigg)^{-1} \exp \bigg[-\frac{1}{2}(Y-X-C \Delta)^{t}(\Delta\cdot \Gamma\Gamma^t)^{-1}(Y-X-C \Delta)\bigg]](http://www.deuxmille.org/wp-content/cache/tex_2674e871edafd51f0bc91b9d65b6df6d.png)
通过简单的积分时的变量替换即可知道
的前提下,
是遵循以下密度函数的:
![f(X,Y)=\bigg((2\pi)^{\frac{n}{2}} \sqrt{\det(\Delta\cdot \Gamma\Gamma^t)} \prod_{i=1}^{n}Y_i\bigg)^{-1} \exp \bigg[-\frac{1}{2}(\log Y-\log X-C \Delta)^{t}(\Delta\cdot \Gamma\Gamma^t)^{-1}(\log Y-\log X-C \Delta)\bigg]](http://www.deuxmille.org/wp-content/cache/tex_17e13136d7c2da2511466596671a8cbb.png)
以上推理可能并不严密,不过结果是正确的,知道这两个东西,什么就都知道了。
顺便说一句如果n=d,且
非奇异,则complete且arbitrage-free……….
整个金融行业大致分为buyside和sellside两大类。sellside做的主要是把各种asset变成各种金融产品,提供给市场。 sellside主要指的是通常意义上的投行。投行内部结构也很复杂,按照产品分大致分为fixedincome和equity两大类。按照业务分大致分为IBD,sales&trading,equityresearch,assetmanagement(这部分和buyside性质是类似的)等。IBD是最传统的投资银行业务,靠近的是corporate一边;sales&trading主要进行产品销售和交易,有时候投行会扮演 marketmaker的角色以保持市场的流通性。
buyside主要进行的是投资管理的业务,所以也称为IM(investmentmanagement)或者AM(assetmanagement),主要由各种机构投资者组成,包括mutualfund,hedgefund,pensionfund等等。
就careerpath来说,很难说谁好谁不好,关键看每个人的特长和个性。IBD适合工作热情高涨,吃苦耐劳的人。sales适合善于人际交往的人。trading适合能承受巨大压力,并且对市场感觉敏锐的人。
equityreasearch适合做事踏实的人。一般来说IBDcareerpath比较按部就班,需要熬年头,能熬上去的不仅需要良好的业务能力也需要强健的体魄。tradercareerpath风险很大,可能在2年之内就毁了前程,也可能在很短的时间内平步青云。我知道一个顶尖的trader从 associate升到director只用了2年。sellsideequityresearch行业前景有一定问题,因为regulation越来越倾向让research保持独立性以保护投资者。
Buyside总体来说lifestyle比sellside好,收入也超过sellside。不过,进buyside也远远难于进sellside。
注:当今金融产业之庞大和复杂远远超过常人想象,在整个金融产业链上还有着很多细分的行业,这里就不一一列举。
补充一下,帖子的职业分工主要是指成熟市场的情况。国内情况有所不同。
金融领域的开放让国内很多年轻的朋友一下子豁然开朗。不过随之而来的是扭曲的价值观:进投行的是牛人,进四大的是凡人,进企业的是土人之类。在此还想表明以下我一向的观点:工作本身没有等级之分,我决不赞成投行就比四大“高级”之说。任何一个人能在本行干的出色的才是牛人。选择职业道路应该看自己喜欢干什么,自己能够干什么,然后尽量在二者之间取得平衡。如果一心只想往“高级”的工作钻的话,可能回头看来还是一事无成。
hedgefund中文翻译成“对冲基金”,这个翻译是准确的。不过有意思的是,现在主流的hedgefund往往做的不是hedge,相反很多 hedgefund对一些市场趋势进行大胆的speculation(中文是投机,贬义词,英语的原意是中性的,是hedge的反义词,表示承担风险而获取超常的收益)。如果把hedgefund和国内的情形联系起来看,更准确的翻译应该是“私募基金”。这个意义上而言国内存在hedgefund已经已经有些年头了,只不过因为法律界定而没有露出水面。现在管理层正在进行私募基金合法化的进程,应该很快就能成为正大光明的一支金融力量。(国内现在往往把 PE翻译成“私募基金”是不准确的,下文还有相关论述)
在成熟市场上hedgefund通常是相对于mutualfund而言。其差别是:mutualfund是公开招募,并且公开交易的开放型基金。国内市场上交易的开放型基金大多数属于mutualfund。而hedgefund则大多是私下招募,并且封闭的基金。
在全球金融市场,hedgefund已经成为一支举足轻重的角色。从东南亚金融危机到最近两年的商品期货的超级牛市都可以见到hedgefund的身影。由于hedgefund收益率普遍高于mutualfund,最近几年全球范围的hedgefund都取得了快速的成长。再加上全球性资本过剩,现在几个 billion的fund都算很小的。
稍微提一下对冲的概念。对冲是一种控制金融风险的手段。举个例子来说,如果你买了100股股票,然后又担心股票下跌,你就可以再买一个认沽100股的期权(putoption)进行对冲。最后无论股票怎么跌,最差的结果就是你以putoption的执行价(strike)卖掉手中的股票。
和对冲相关但比较容易混淆的概念是套利(arbitrage)。套利是指把所有相关风险完全对冲掉以后可以获取的无风险收益。比如说中国银行的美元牌价是 8,门口黄牛的牌价是7.8,你可以用7.8人民币从黄牛那里换1美元,随后马上拿一美元换给BOC变成8元人民币,毫无风险的赚了0.2元。
就职业而言buyside和sellsidelink最多的是tradingdesk。双方的人马几乎是对应的。基本上都设有:trading,structure和research几块。一般来说sellside研究力量更为强大,buyside很多基本信息都依靠 sellside取得。sellsidestructure侧重的是如何将金融产品合理定价,而buyside侧重于如何搞出模型更好的预测市场的变化。(本质是一样的)双方的trader做的事情倒是殊途同归。
当投行根据buyside要求设计出金融产品后,双方达成交易。然后投行一般会尽快地通过相关交易对冲产品风险,而buyside这时候一般是“一切尽在掌握”,因为买到手中的产品完全是根据自己的判断而订制的。这时候,双方是合作伙伴关系,大家赚自己的利润。另外有些时候,投行也会 takeposition,这种时候双方都是marketplayer,关系也就变成你死我活的博弈了。
把业务上的link讲完后,职业上的link也就水到渠成了。双方trader作的事情十分接近,互相之间的跳槽也就十分普遍。research而言,投行的比较focus也比较辛苦,所以一般更加愿意往buyside跳,不过buyside本来也不需要很多的research,跳槽并不容易。 structure是双方都需要的,虽然侧重不同,但都是通的,互相之间都有跳。
上面说的都是投行的市场一头。回过头说IBD(传统投行业务),更多的是和企业打交道,而不是和市场打交道。反之,buyside都是和市场大交道。所以IBD一般不容易转buyside。
由于国内这些年出现了很多成功风投的案例,大家已经不太陌生,这里简单的介绍一下PE。
国内很多地方把PE(privateequity)翻译成“私募基金”,这显然是不熟悉金融市场的人“顾名思义”所致。诚如上文所述,私募基金接近于 hedgefund的概念(相对于mutualfund)。而PE是一个相对于publicequity的概念。我个人将其翻译成“非上市融资”,现在国内比较被认可的翻法是“私人股权融资”。
现在vc/pe是一个很时髦的词,无论在美国还是在国内。在美国火爆的原因是最近几年PE的收益率都明显好过publicmarket,导致PE的规模快速膨胀。在国内火爆的原因就比较复杂了。
其实现在vc/pe差异已经不是十分明显,很多时候人们把VC看成是pe的一种。如果进行划分的话,二者主要区别在于对targetcompany投资阶段的不同。vc主要投资于公司发展早期,从种子阶段到上市前不等。而pe主要投资于有稳定现金流,businessmodel比较成熟的公司。PE最经典的做法是LBO(leveragebuyout),核心是将现金充沛而又失去发展动力的上市公司goprivate,通过大财务杠杆使公司有紧迫感,从而为股东提供更大的收益。
喜欢看电影的朋友一定知道《风月俏佳人》,其中理查基尔干的就是PE。片中罗伯茨问他你到底是干嘛的,回答颇为经典:“总而言之我干的就是把一家公司买下来,然后再拆成一块一块卖”。(注:这只是PE做法的一种,并不是全部)
vc/pe是金融市场中最直接和企业打交道的分支。vc做的是整天看businessplan(bp),从中找出有前途的bp以及执行团队,随后进行价值评估以及投资。根据公司不同,有些vc会强烈的参与公司经营管理,有些则没有。pe更多的是寻找有前途的被收购公司,并且进行金融改造。
vc/pe最终的的目的都是找一个更好的价钱把公司股份卖掉推出,从而进入新的循环。具体操作方法VC/PE在其他很多地方都是不同的,有兴趣的朋友可以进一步讨论。
现在可以把金融产业链简单的串一串。在一个企业IPO之前,公司都是private的,这一阶段可以参与融资的就是VC/PE。当企业需要上市,这时投行就参与进来,对公司价值进行精确评估,然后公开招募。这时候,企业自己或者vc/pe提供的股份是原材料,投行将其加工成金融行业认可的“股票”。公开上市前后,buyside就会进行认购。接下来就是二级市场上的各方博弈了。
金融的原始定义是为买足企业发展需要进行的各种融资,因此金融必定有企业和市场两级。企业这级是金融行业的生存之本,市场这级可以看作金融行业发展壮大的动力。投行作用是金融产业链的hub,一端联系着企业,另一端联系着市场。企业这端是实实在在的,可以说资本主义出现后的几百年都没有太大的变化。而市场这一端则越来越庞大并且趋向虚无。很多衍生金融产品最早的出现是为了满足风险公职的需求,但很快变成一些豪赌的利器。会计师事务所的地位是保证企业(无论 privateorpublic)企业原始数据的真实性,从而使其他机构可以对企业价值进行进一步的评估。如果没有会计师的存在,整个金融行业就会陷入一片混乱。因而会计师有“经济警察”之称。
整体而言,金融业连接企业一端的工作核心更侧重于对于企业价值的评估,金融连接市场一段的工作的核心侧重于市场风险的控制以及对市场方向的判断。因为对技能要求的不同,两端互相转都比较困难。相反,只要在金融产业链的同一端,转行至少都是有逻辑上的可行性的。
源地址:http://blog.renren.com/GetEntry.do?id=309127567&owner=236062316
相信很多人对CMU的MSCF项目垂涎已久,下面把这个项目相关的课程介绍贴出来与大家分享!
Full-Time Course Sequence
Earning the MSCF degree requires the satisfactory completion of twenty-five MSCF courses (150 units). (The MSCF program reserves the right to change course times and offerings at any point during the academic year.)
Fall 1: August 25 to October 18, 2009
Probability
Macroeconomics for Computational Finance
MSCF Finance
Presentations for Computational Finance
Financial Computing I
Fall 2: October 22 to December 17, 2009
Statistical Inference
Fixed Income
Multi-Period Asset Pricing
Options
MSCF Deutsche Trading Competition
Spring 3: January 12 to March 6, 2010
Linear Financial Models
Stochastic Calculus for Finance I
Financial Computing II
Financial Products and Markets
Spring 4: March 16 to May 6, 2010
Financial Time Series Analysis
Financial Computing III
Stochastic Calculus for Finance II
Simulation Methods for Option Pricing
Fall 1: August 24 to October 17, 2010
Statistical Arbitrage
Financial Computing IV
Studies in Financial Engineering
Advanced Derivative Modeling
Fall 2: October 21 to December 16, 2010
Numerical Methods
Choose three of four
Quantitative Asset Management
Financial Economics for Computational Finance
Topics in Quantitative Finance
Credit Derivatives 点我阅读更多
