×

大数据的挑战与随机机器学习算法

消耗积分:1 | 格式:rar | 大小:0.6 MB | 2017-10-13

分享资料个

 数据规模的重要性
  数据在不断地增长,数据量很大的时候是非常重要的一件事情,因为数据只有到了一定的程度的量才会发生质的变化,有一个例子是Matrix Completion(矩阵补全),就是给你一个表,有一部分的数据你知道,有一部分数据你不知道,没有办法拆出来,这个东西就是矩阵补全。矩阵补全非常重要,几乎所有的机器学习的问题都可以表示成矩阵补全的问题,这里显示的聚类,也可以看成矩阵补全。
  矩阵补全非常有意思的结果是怎样的?我们这边的横轴是数据量,考虑在矩阵里能够看到的数据量,纵轴是恢复误差,拆出来的结果和真实结果的误差,肯定是数据量越多拆的误差越高,当数据低于一定程度的时候,这可以是非常显示的刻划出来,在数据小于一定量的时候,不管怎么做总是拆的很糟糕,几乎没有太大的区别。只有当你的数据大于一定量的时候,突然你可以拆的非常准,如果按原来的说法,在一个的情况下,你可以拆的很完美,没有任何的错误。所以我们说大数据,只有当数据到一定的程度的时候,有些事情才是可能的,当你的数据小于这个的时候,不管你怎么做都永远不可能。
  大数据带来的困难我们大家一直在谈大数据的挑战,来到阿里之前我没有意识到,来了之后觉得这个事情真的是big deal。做任何统计是最重要的一件事情,比如这里非常基础、简单的任务——矩阵平均,即便只是简简单单地做大数据下的平均,也是一个big deal,每一个矩阵都是很大(1Bx1M)。在应用里头,这个矩阵记录了每个人对每个商品行为的矩阵,这个矩阵是非常大的,但每天记录下的矩阵是很稀疏的,虽然说你有几百万几千万的商品,但通常每个人只有在很少量的商品上的行为,你希望把这些矩阵加起来,平均表达出在一个人在很长的周期内的行为是什么样的,但是一个disaster就发生了,如果矩阵做一个平均、求和,这个矩阵会变成一个death的矩阵,如果不做任何smart commutation,这个事情实际上是非常昂贵的,而且存储也是昂贵的。我在阿里的第一件事情,就是我能不能做一个这样的平均,我虽然不能算出确切结果,但有没有办法说我可以算出大概结果?最后一个很简单的办法,就是用一个随机算法做这个事情。
  随机算法的好处所谓的机器学习问题(Learning Problem),一般的机器学习问题会写成这样的形式,考虑有一堆训练样本,有一个叫Lost Function,用来比较预测和现实的差别,并分析这些差别。通常,Learning Problem就是找到一个解,确认这个解能够给出正确的预测和训练样本,通常可以把它变成一个优化问题来做。
  大数据的挑战与随机机器学习算法
  解决该问题的主要挑战在于两个方面:一个方面是样本数量很大(1Bx1M),还有一个问题是维度非常高,通常来讲都是亿级,要解决的不会是一个简单的问题。一个成熟的解决方案就是随机算法。相信很多人都有意无意地使用到随机算法,比如用LR、SGD。
  随机算法有两个好处:
  随机算法的Efficient,包括两个方面,第一个方面是即使针对大规模样本也不需要多次扫描数据,另一个方面,如果是非常高维的数据,一个简单的办法是可以使用随机投影(Random Projection)来降低维度,这样可以不用直接解决高维问题;随机算法的Effective,就是它通常有最小化泛化误差 (Generalization Error) ,不仅仅是计算简化,同时也可以提供很强的保证。
  随机算法的挑战(以随机投影为例)
  随机算法很好,但是总体来讲,随机算法还是有很多的局限的,我的演讲用一个很简单的随机投影问题来讨论,来看一下随机算法的问题在哪里。
  随机投影是一种非常简单的方法,而且应用广泛。一个高维矩阵X,long long vector,处理起来很麻烦,计算量很大,而且可以证明优化收敛速度跟维度是有关系的。一个简单的做法,针对非常长的vector,乘上一个非常fat的随机矩阵S,乘完以后得到一个很短vector的X point,很低维度的表示,就把这个X point变成我的数据,用低维的数据来优化问题,在低维空间学习。这个好的解是一个很矮的vector,我还要回到原来的空间上去,把原来的矩阵转置一下,又变成一个很长的vector,就变成最后的解。几乎所有的random projection都可以这么做:把一个(很长的)vector用一个随机矩阵变成一个很短很短的vector,算出一个解来,再把矩阵转置,把最优解一乘就可以了。这是一个非常简单的算法,是使用广泛,而且有无限多的paper分析这个东西有没有效。几乎所有的paper都告诉你这个东西很有效,也可以证明它很有效,但是我觉得所有的paper都很理想化,通常会假设原来的问题是一个很容易解的问题,可以证明所有的东西都是对的,但不幸的是,如果你的问题是比较难分类的问题,它告诉你的所有story都是假的。所以这其中隐藏了一个非常有趣的几何泛函的问题,一百多年前就已经被well study。也就是说,这个W star是真正的最优解,把所有的高维数据放进去让机器run获得的最优解,而所有W star cute就是刚才说的用随机投影的算法降维得到的解,你可以证明这两个解通常会有非常大的差别,这个差别跟原来的vector应该是一个数量级的。
  大数据的挑战与随机机器学习算法
  所以说run随机投影的算法拿到的解,跟原来的解有很大的差别。这是不是因为我描述了一个非常特定的过程,这个中间的过程造成这个解不好,所以是不是尝试一下变化一个问题就有机会拿到更好的解呢?非常不幸地告诉你,这是不可能的,这也就是我说的Impossibility Theorem,可以证明这个事情不管怎么玩,只要做随机投影,不管你怎么去解这个w star cute,这两个解永远是差别很大,这和怎么解的问题都没有半毛钱关系。而且非常奇怪这个东西一百多年前都知道了,不知道为什么没有人提出来。但是对我来说这个事情很有意思,我能不能做其他的事情,稍微加一点限制,就能让我这个疏密的问题解掉?
  对偶随机投影的优化
  这是五年前让我很感兴趣的一个问题,我们创造了一个对偶随机投影 (Dual Random Projection),非常简单、非常神奇,把随机投影得到的w star cute这个解塞到每一个Lost Function里去,然后去求一个导数,这里称为alpha i,最后的解是用每一个training instance和alpha i对应,所以你需要做的,不是直接采用随机投影得到的解,而是用随机投影的解去算它的对偶变量,用对偶变量去win每一个training instance。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !

'+ '

'+ '

'+ ''+ '
'+ ''+ ''+ '
'+ ''+ '' ); $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code ==5){ $(pop_this).attr('href',"/login/index.html"); return false } if(data.code == 2){ //跳转到VIP升级页面 window.location.href="//m.obk20.com/vip/index?aid=" + webid return false } //是会员 if (data.code > 0) { $('body').append(htmlSetNormalDownload); var getWidth=$("#poplayer").width(); $("#poplayer").css("margin-left","-"+getWidth/2+"px"); $('#tips').html(data.msg) $('.download_confirm').click(function(){ $('#dialog').remove(); }) } else { var down_url = $('#vipdownload').attr('data-url'); isBindAnalysisForm(pop_this, down_url, 1) } }); }); //是否开通VIP $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code == 2 || data.code ==5){ //跳转到VIP升级页面 $('#vipdownload>span').text("开通VIP 免费下载") return false }else{ // 待续费 if(data.code == 3) { vipExpiredInfo.ifVipExpired = true vipExpiredInfo.vipExpiredDate = data.data.endoftime } $('#vipdownload .icon-vip-tips').remove() $('#vipdownload>span').text("VIP免积分下载") } }); }).on("click",".download_cancel",function(){ $('#dialog').remove(); }) var setWeixinShare={};//定义默认的微信分享信息,页面如果要自定义分享,直接更改此变量即可 if(window.navigator.userAgent.toLowerCase().match(/MicroMessenger/i) == 'micromessenger'){ var d={ title:'大数据的挑战与随机机器学习算法',//标题 desc:$('[name=description]').attr("content"), //描述 imgUrl:'https://'+location.host+'/static/images/ele-logo.png',// 分享图标,默认是logo link:'',//链接 type:'',// 分享类型,music、video或link,不填默认为link dataUrl:'',//如果type是music或video,则要提供数据链接,默认为空 success:'', // 用户确认分享后执行的回调函数 cancel:''// 用户取消分享后执行的回调函数 } setWeixinShare=$.extend(d,setWeixinShare); $.ajax({ url:"//www.obk20.com/app/wechat/index.php?s=Home/ShareConfig/index", data:"share_url="+encodeURIComponent(location.href)+"&format=jsonp&domain=m", type:'get', dataType:'jsonp', success:function(res){ if(res.status!="successed"){ return false; } $.getScript('https://res.wx.qq.com/open/js/jweixin-1.0.0.js',function(result,status){ if(status!="success"){ return false; } var getWxCfg=res.data; wx.config({ //debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId:getWxCfg.appId, // 必填,公众号的唯一标识 timestamp:getWxCfg.timestamp, // 必填,生成签名的时间戳 nonceStr:getWxCfg.nonceStr, // 必填,生成签名的随机串 signature:getWxCfg.signature,// 必填,签名,见附录1 jsApiList:['onMenuShareTimeline','onMenuShareAppMessage','onMenuShareQQ','onMenuShareWeibo','onMenuShareQZone'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 }); wx.ready(function(){ //获取“分享到朋友圈”按钮点击状态及自定义分享内容接口 wx.onMenuShareTimeline({ title: setWeixinShare.title, // 分享标题 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享给朋友”按钮点击状态及自定义分享内容接口 wx.onMenuShareAppMessage({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 type: setWeixinShare.type, // 分享类型,music、video或link,不填默认为link dataUrl: setWeixinShare.dataUrl, // 如果type是music或video,则要提供数据链接,默认为空 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ”按钮点击状态及自定义分享内容接口 wx.onMenuShareQQ({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口 wx.onMenuShareWeibo({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ空间”按钮点击状态及自定义分享内容接口 wx.onMenuShareQZone({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); }); }); } }); } function openX_ad(posterid, htmlid, width, height) { if ($(htmlid).length > 0) { var randomnumber = Math.random(); var now_url = encodeURIComponent(window.location.href); var ga = document.createElement('iframe'); ga.src = 'https://www1.elecfans.com/www/delivery/myafr.php?target=_blank&cb=' + randomnumber + '&zoneid=' + posterid+'&prefer='+now_url; ga.width = width; ga.height = height; ga.frameBorder = 0; ga.scrolling = 'no'; var s = $(htmlid).append(ga); } } openX_ad(828, '#berry-300', 300, 250);