怎么去除,r,十。八游戏里的r去3d马赛克补丁下载啊

电车之狼r去3D马赛克补丁下载_电车之狼r去3D马赛克补丁游戏补丁下载
您的位置: >
热门单机游戏
最新单机游戏
& & & &电车之狼r是I社推出的成人游戏,受到众多绅士玩家的喜爱,今天小编给大家带来了电车之狼r去3D马赛克补丁,希望能帮助已完成的玩家。
& & & &补丁介绍
& & & &《电车之狼》R去3D马赛克补丁,各种性癖的达成方法。没有马赛克,没有距离
& & & &使用说明
& & & &1、解压文件
& & & &2、将文件复制到游戏目录下
& & & &3、运行游戏。
相关存档补丁:& & & & & & & & &&
电车之狼r去3D马赛克补丁相关文章
2900人气更新
◎ 看过这篇文章的网友还浏览过↓ ↓ ↓ 上一篇:电车之狼r去马赛克补丁
下载帮助本站软件均来自互联网, 如有侵犯您的版权, 请与我们联系。
* 为了达到最快的下载速度,推荐使用下载本站软件。
* 请一定升级到最新版才能正常解压本站提供的软件!
* 相关网站事务请留言:
或通知我们!或加我们微信公众号:xz7_cngr
Copyright &
. All Rights Reserved微星的7850 hawk 1g玩使命召唤,屏幕中间老是有类似马赛克的东西,其他游戏都好着呢。唯独使命召唤
本人配置 e3 G
hawk 1g ,使命召唤9,18.5英寸 LCD,,显存占用960M,快1G了,所有特效高,一直固定在60帧[图片]
按时间排序
换一下 显卡驱动 用官方版本或者最新版试试
您可以邀请优质答主更快回答您的问题
新手上路2000
擅长领域:&&
在装机硬件分类下共有16515个回答
擅长领域:&&&&
在装机硬件分类下共有6505个回答
擅长领域:&&&&
在装机硬件分类下共有5396个回答
疯狂的制帽匠
擅长领域:&&
在装机硬件分类下共有3714个回答
擅长领域:&&&&
在装机硬件分类下共有3070个回答
windcircle
擅长领域:
在装机硬件分类下共有2457个回答
加载更多答主
感谢您为社区的和谐贡献力量请选择举报类型
经过核实后将会做出处理感谢您为社区和谐做出贡献
确定要取消此次报名,退出该活动?&p&这是个平台无关的库,装个VS2017,把它编译运行起来,单步跟踪、goto definition什么的都很方便。&/p&&p&protobuf 大概分成两部分:compiler 和 runtime 。&/p&&p&compiler 的前端是手写的递归下降 parser ,如果你学过编译原理,很容易读懂。这个编译器的后端是各个目标语言的代码生成器,可以选你熟悉的来读。前后端通过 descriptor 联系起来,非常清晰,也便于扩展。&/p&&p&runtime 主要功能是序列化和反序列化。每个目标语言各有一套,可以根据需要来读,一般要结合生成的代码一起读。&/p&
这是个平台无关的库,装个VS2017,把它编译运行起来,单步跟踪、goto definition什么的都很方便。protobuf 大概分成两部分:compiler 和 runtime 。compiler 的前端是手写的递归下降 parser ,如果你学过编译原理,很容易读懂。这个编译器的后端是各个目标…
&figure&&img src=&https://pic2.zhimg.com/v2-ad9b32758_b.jpg& data-rawwidth=&4000& data-rawheight=&2250& class=&origin_image zh-lightbox-thumb& width=&4000& data-original=&https://pic2.zhimg.com/v2-ad9b32758_r.jpg&&&/figure&&p&&i&&b&Disclamer&/b&:下面这篇文章由我写给正在准备面试 Opendoor 的工程师和数据科学职位的应聘者的材料改写扩展而来。 这半年来我司面试的同学们应该都收到过 recruiter 发来的本文的英文版。 严格来说这里讲的内容只对应 Opendoor 这一家公司,但是据我了解我司的面试在旧金山的创业公司里也还事挺有代表性的。 考虑到过了我司面试的同学一般也会拿着一堆 FLAGUAP, Robinhood, Affirm, Lyft 等等等等的其他公司offer来谈合同,所以达到本文要求的同学应该大概律能刷到个不错的工作。 &/i&&/p&&p&&br&&/p&&p&&br&&/p&&p&公司的面试流程一般包括下面几种类型的面试,下面我会把每轮面试会分成『面试过程』,『准备和注意事项』, 『FAQ』三部分逐个讲解。 我会根据大家提出的问题逐渐扩展 FAQ 部分。 &/p&&ul&&li&电话面试/远程编码面试 (Technical Phone Interview)&/li&&li&Onsite 面试&/li&&ul&&li&结对编程 (Pair Programming)&/li&&li&结对数据分析建模 (Pair Data Science Programming)&/li&&li&软件系统设计 (System Design)&/li&&/ul&&/ul&&p&&br&&/p&&h2&电话面试&/h2&&p&面试者首先会简单自我介绍下,名字叫什么,做什么项目,在公司工作多久了等等。 之后很快进入编码环节。 &/p&&p&这轮的考察内容通常都是几道不太难的算法题(最多leetcode medium吧)。 写代码一般都是用个在线的协同编辑工具,比较流行的是&a href=&http://link.zhihu.com/?target=https%3A//coderpad.io/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&CoderPad&/a&。 尽量用你最熟悉的编程语言回答问题,做好准备详细解释你的代码,尤其是碰上你的面试官不熟悉你用的语言的情况。 这轮电面的目标是了解你是如何思考并且解决问题的,所以如果对任何东西不确定的话请尽可能奔放的提出各种问题澄清理解。 一边写代码一边说,解释清楚你代码背后的逻辑和你正在做的和接下来要做的事情。 &/p&&p&面试的最后五分钟是留给你的, 我们希望你能多多提问。 不妨提前拉个单子列一下你对对方公司最感兴趣的事情。 这是个蛮好的互相了解的机会,我们很乐意分享我们团队的情况,以及我们正在解决的问题。 &/p&&p&&br&&/p&&p&如何准备呢?&/p&&ul&&li&&b&大量练习回答类似的问题&/b&。 没错我说的就是刷题……一些很好的资源包括:&a href=&http://link.zhihu.com/?target=https%3A//leetcode.com/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&LeetCode&/a&, &a href=&http://link.zhihu.com/?target=https%3A//www.hackerrank.com/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&HackerRank&/a&, &a href=&http://link.zhihu.com/?target=https%3A//www.careercup.com/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&CareerCup&/a&, &a href=&http://link.zhihu.com/?target=https%3A//www.interviewbit.com/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&InterviewBit&/a&. 注意不要过度刷题,因为初创公司一般都不会特别在意你解题本身的娴熟程度, 也不会问太难的题。 (起码我没太见过有人叫写 DP 的)&/li&&li&&b&练习在相似的环境下回答问题&/b&。即使你是个很有经验的工程师了,面试的环境也会和你正常工作的情况很不一样。 练习在时间压力下解决问题,用简单的 coderpad 这类编辑器写代码体验下没有全套 IDE 的感觉,试着一边写东西一边不停的说话。 &/li&&li&&b&复习下基础知识。 &/b&基本的数据结构,算法等等内容。 你应该起码能轻松的跟对方聊聊 big-O 复杂度。 &/li&&/ul&&p&FAQ&/p&&ol&&li&Q:我用什么编程语言好?&br&&i&A:用你最能打的语言回答问题。 如果你什么都写得一样好, 那用 Python 之类比较『高级』的『动态』语言面试会略占一点点便宜。 相比起 C++之类语言你可能犯的错误会少很多, 比起 Java 或者 C# 来又没有那么啰嗦。 但是面试者也会根据你用什么语言写调整预期。 同样是30分钟解决问题,用 Java 写的会比用 Python 的评价稍微高一点。 &/i&&/li&&li&Q:最后五分钟我应该问什么问题呢?&br&&i&A:自由发挥。一般来说问对方团队的情况总是很安全的(多少人,都是什么背景的等等)。 问问团队正在做什么项目也不错,公司的工作方式企业文化这些也都可以聊聊。
&/i&&/li&&/ol&&p&&br&&/p&&h2&结对编程面试 (Pair Programming)&/h2&&p&现在很多创业公司已经不太喜欢考纸上或者白板上编程了。多数情况都是直接上机编程,然后更激进一点的(比如 Opendoor)会考察结对编程。 面试一般会用专门的结对编程工作台, 你和你的面试者坐在一起解决问题。 面试者会扮演观察者(observer)的角色,而你来扮演驾驶员(driver)的角色。 对方会解释问题,然后在你编程的过程里提供很多建议,并且有时候会修改问题的需求。 &/p&&p&建议尽可能用自己的笔记本来面试,保证你的电脑上安装有你最喜欢最熟悉的开发环境。 面试的公司通常也可以提供电脑,但是往往不如你自己的顺手。 &/p&&p&结对编程一般只会做一道题,会比你电面上碰到的题目更难更复杂一些。 有时候是算法问题,有时候是写个简单系统。尽管问题有时候会非常的开放, 最好还是希望你能在面试结束的时候提供一个能从头到尾运行的程序。 &/p&&p&面试的注意事项:&/p&&ul&&li&&b&时间管理&/b&:你只有一个小时的时间,要注意好好规划。 不要直接闷头写暴力解法。花点时间想想尽可能理想的解决方案。 但是如果想不出来完美快速的方法, 用比较基本的方式开始再在此这个基础上改善也是不错的稳扎稳打型思路。 能运行但是比较慢的答案,永远比完美的但是没写完的答案好。 &/li&&li&&b&表达能力是关键&/b&:结对编程考察的不仅是写代码的能力。 要记得我们在模拟你们两个人一起工作的情形。 相信你一定也不想你工作的同事把你晾在一边围观你一声不吭写完一整段代码然后双击运行666吧?结对编程应该是一个你来我往的交互过程。 先澄清目标, 然后在纸上写写画画你的整个解决方案,等到你和你的面试者对方案都满意了再开工。 &/li&&li&&b&别留 Bug&/b&:上机编程的好处就是提供了全套的真实开发环境。 你可以用你喜欢的任何工具保证代码质量。 你可以反复运行,当然更应该写几个 unit test。 每个人都会写出 bug,但是要确保你能发现并解决它们。 当然最棒的情况是你的面试者还没看出来 bug 你已经自己发现然后搞定了。 &/li&&li&&b&模拟面试&/b&:对于没真有结对编程经验的同学来说,这个过程可能有点太过紧张。 找几个朋友和你试试看,就当是模拟面试。 然后如果你找不到能和你 pair 的人的话,搞个&a href=&http://link.zhihu.com/?target=https%3A//en.wikipedia.org/wiki/Rubber_duck_debugging& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&橡皮鸭&/a&子也蛮好的。 &/li&&/ul&&figure&&img data-rawheight=&440& src=&http://pic1.zhimg.com/v2-dcbf3fb69411c_b.jpg& data-rawwidth=&440& class=&origin_image zh-lightbox-thumb& width=&440& data-original=&http://pic1.zhimg.com/v2-dcbf3fb69411c_r.jpg&&&/figure&&p&FAQ&/p&&ol&&li&Q:为什么不用白板写?为什么一定要上机?&br&A:&i&因为白板只能看看会不会做算法题, 好处是对于面试者的经验和能量需求比较低, 也就比较容易保证面试标准的一致性。 而实际上机 pairing 能阅读出多得多的东西。 我们可以很容易观察到你的编程习惯(engineering practice),你对你偏好工具的熟练度(craftsmanship),你的代码风格(coding style), 你的测试习惯 (unit test)。&/i&&/li&&li&Q:我题做出来了/面试官的要求我都实现了/我程序能跑, 为啥还是杯具了?&br&&i&A:因为很多来面试的同学,特别是我们中国出来的同学, 虽然编码能力不错但是往往很不注意沟通。 光闷头写 code 是不行的, 要尽量多和面试者交流你的想法。 被动让面试者告诉你写这个测那个不可能拿 strong hire 的, 要尽量在理解了问题的基础上主动引导解决问题。 很多时候面试官对你的那些看起来是『找茬给我增加难度』的要求,其实是他等你主动跟他澄清,或者等你自己想起来要做但是实在等不到只好直接给提示。&/i&&/li&&li&Q: 这轮面试有什么窍门?&br&&i&A:我们组里有个同事的上机面试祖传秘诀。 就是你在试图理解问题聊需求的时候,一边说一边想几个测试用例写成简单的 assertion。『如果输入是这个,这个函数的输出应该是这个对吧』。这样一方面给人你沟通能力很强很严谨的印象,顺便还写了几个 unit test。 这招使出来印象分往往暴涨。 &/i&&/li&&/ol&&h2&结对数据分析建模 (Pair Data Science Programming)&/h2&&p&如果你是面试数据科学家(Data Scientist),数据分析师(BI Analyst)或者 机器学习工程师(Machine Learning Engineer)职位的话。有些时候会有上机的数据分析面试。 过程和上面的结对编程差不多, 区别是可能不会让你写个简单系统或者做算法题,而是会给你个数据要求你做些数据分析或者用这个数据建个机器学习模型。 &/p&&p&数据规模都不会很大,普通配置的笔记本都能轻松搞定。多数来面试的同学会用 R 或者Python。 当然也有用 Java 硬写分析的强者通过面试的。和其他面试一样,最重要的是到面试结束的时候应该有个清楚的结论,或者有个能跑能用的模型。
&/p&&p&面试的注意事项:&/p&&ul&&li&&b&工欲善其事必先利其器&/b&:如果觉得有需要,你可以随时查各种在线资源,用 google 也好 stackoverflow 也好都没关系。 但是面试时间宝贵,你对 R/dplyr 和 Python/Pandas/ScikitLearn 之类的工具熟练度越高你就越有优势。 &/li&&li&&b&熟悉一般的数据分析流程&/b&:&/li&&ul&&li&数据处理 (data munging):不要在数据输入上浪费时间。 你应该很熟悉如何用个 csv 之类文件建立数据表。 知道怎么做基本的 aggregation, filter, transformation, date parsing, string manipulation 等等操作。 &/li&&li&数据验证(data validation/skepticism):真实世界的数据往往是很『脏』的。 工业界面试的一个特点就是会拿出包含各种常见错误的数据来看看你能不能有好的习惯做很多验证来保证数据正确性。 我甚至会主动加入不少噪声,制造一些空行之类的障碍。 有经验的分析师会明确的提出对数据的假设, 然后仔细验证这些假设。&/li&&li&数据可视化(data visualization):你应该能用最有效的方式呈现你分析的结果。 如何能尽量避免冗杂的信息,如何选择最明显最清楚的图像表格类型是分析师的基本功。 &/li&&/ul&&li&&b&深入理解你用的模型&/b&:准备好跟人聊聊各种常见的统计机器学习模型。 你为什么选择用某个特定的模型来解决这个问题?你准备用什么样的 feature,选择什么样的 training target?你的选择有什么pros and cons?如果训练结果显示是情况 A,你会怎么改进模型,情况 BCD 呢?假设我们觉得你选择的模型是正确的,接下来三个星期里你会怎么改进它?三个月呢?&/li&&li&&b&了解你面试公司的商业模式&/b&:你不需要成为对方领域的行业专家(起码入职前你不需要)。 但是起码应该在常识的水平上理解公司处于什么行业, 这个行业的典型商业模式是什么样的。这些对于你选择分析的重点,和模型的优化目标很有帮助。 &/li&&/ul&&p&FAQ&/p&&ol&&li&Q:我挺有经验的,但是我之前一直在 Microsoft/Google 工作不太熟悉外面这些工具怎么办?&br&&i&A:其实很多毕业就近大公司的同学都会面临这种只会用公司自己发明的轮子的问题。 建议面试之前花点时间刷几个项目。 Kaggle 是个很好的项目来源。 另外多投几个比较新的公司做做他们的 take home 也是个好办法。 (Airbnb 和 uber 的 takehome problem 就挺有意思)&/i&&/li&&li&Q:统计模型,数学方面要准备多深?要准备手推公式么?&br&&i&A:这个很难一概而论。 要看公司寻找的是做哪方面事情的人。 一般来说对算法研究本身有需求的 researcher 类职位会对数学有高些的要求。 或者你本身是相关领域的 phd,面试者也会特意深入问一下你『预期』的强项。 &/i&&/li&&/ol&&p&&br&&/p&&h2&系统设计面试(System Design)&/h2&&p&根据你之前的工作经验,通常在工程师面试里会安排一到两轮系统设计面试。 其中有半轮会用来聊聊过去的项目经历,面试者希望了解的是你如何设计一个完整的系统,你是如何做出很多技术决定的。 通常面试者会选择某几个点深挖下项目细节好判断当时项目的深度。 &/p&&p&其他时间的面试内容通常都会是设计某个具体的系统。 面试者会尽量创造一个彼此合作的环境,假设你刚刚加入公司即将担纲设计一个重要的系统, 而你的面试者是公司的资深成员帮助你了解项目。 这一轮面试首先是一次对话,所以不要怕提问题,别怕提出各种天马行空的思路,甚至激烈(但是态度礼貌谦和)的争论也是受欢迎的。 &/p&&p&&b&项目经历面试的注意事项&/b&:&/p&&ul&&li&&b&项目经历面试请先大概总结项目要解决的问题&/b&:面试者和你来自不同的公司,很多你觉得已经反复思考过的尝试对方可能根本没有想过。 所以在切入你的设计和方案之前解释下项目的目标和面临的挑战对帮助对方理解非常有帮助。 &/li&&li&&b&准备解释项目的各种限制(constraints)&/b&:在项目过程里面不可避免的会因为你公司的环境对你的方案产生种种限制。 这些限制是如何影响你的设计的?你当时考虑了哪些 trade-off?项目需求和限制在执行过程种发生过变化么?你是如何调整设计适应这些变化的?&/li&&/ul&&p&&b&系统设计面试的注意事项&/b&&/p&&ul&&li&&b&尽量深刻理解系统需求:&/b&有些时候面试者会故意在描述问题时候模棱两可,语焉不详的目的是要考察你是否有能力主动地理解清楚系统的设计需求是什么样的。即使你问了几次面试者还是没解释清楚,也不要简单放弃。 解释清楚为什么需要问这些问题,并且这些问题的答案会如何影响你的设计。 &/li&&li&&b&如何定义问题是关键的第一步:&/b&理解了问题描述之后,尽量精确地用自己的语言重复一下问题,确保你和面试者在要解决什么问题上达成一致。 之后开始讨论 trade-off 并且定义好项目的关键指标(metrics)。 选对这些方向性的东西,项目就成功了一半。 &/li&&li&&b&尽量话唠&/b&:把思路讲出来。 别怕提出很傻的笨法子, 毕竟你可以有言在先『just think out loud a dumb simple solution』&/li&&li&&b&引导对话:&/b&不要把系统设计面试当成问答题。 想象你自己是个项目负责人,正在和项目经理开会。 面试者了解要解决的问题是什么,而你的任务是搞明白这个问题然后提出个系统设计把这个问题解决掉。 如果没有明确的解决方法, 想出一个解决问题的思路框架来也很不错。 &/li&&/ul&&p&FAQ&/p&&ol&&li&Q:英语不好怎么办?感觉自己没法跟母语是英语的同事一样侃侃而谈?&br&&i&A:系统设计这个『对话』和其他的场合一样, 聊天并不是交流的全部。 你需要做到的是提高你交流的『带宽』。至于你传递信息的方式是靠嘴说,靠手写还是画图并没什么关系。 很多时候快速上手画个流程图比连比带划的说半天有效很多。 站着面试,一边听人讲需求一边就开始往白板上记录是个很好的习惯。 &/i&&/li&&/ol&
Disclamer:下面这篇文章由我写给正在准备面试 Opendoor 的工程师和数据科学职位的应聘者的材料改写扩展而来。 这半年来我司面试的同学们应该都收到过 recruiter 发来的本文的英文版。 严格来说这里讲的内容只对应 Opendoor 这一家公司,但是据我了解我司的…
&figure&&img src=&https://pic3.zhimg.com/v2-2be7b8b4fce_b.jpg& data-rawwidth=&1468& data-rawheight=&944& class=&origin_image zh-lightbox-thumb& width=&1468& data-original=&https://pic3.zhimg.com/v2-2be7b8b4fce_r.jpg&&&/figure&&p&这个要发在VLDB 2017,这个如何在数据储存着一层分割用户这件事情还是很有意思的。之前有公布过算法了,但是没有公布具体实现。我们今天来看一下具体实现的paper是怎么分割可以算是全世界最大的网络之一了。&/p&&p&这里是原文链接 &a href=&http://link.zhihu.com/?target=https%3A//research.fb.com/publications/social-hash-partitioner-a-scalable-distributed-hypergraph-partitioner/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Social Hash Partitioner: A Scalable Distributed Hypergraph Partitioner&/a&&/p&&p&&br&&/p&&p&Introduction&/p&&p&一直以来都有graph partitioning这类问题,在分割graph的时候确保被割掉的edge是最少的,而且分割完的时候每个graph的大小最好一样大。之前大量这类问题都是限制在每个点最多只能跟另外两个点相连接。Facebook上面的社交网路其实是hypergraph,每个点可以跟任意多个其他点相连,这类问题之前没有被很好解决。&/p&&p&Facebook要做这件事情最重要的就是为了分割储存的数据。每次需要请求用户数据的时候,也需要请求他的朋友的数据,那么这个时候需要访问的数据库就非常多了。访问的数据库越少,请求响应速度就越快,用户体验就跟好,所以我们要让每个请求访问尽量少的数据库。&/p&&p&原文里是这样定义具体问题的&/p&&p&&br&&/p&&figure&&img src=&https://pic2.zhimg.com/v2-eb6cec640e3aa14bae63e7_b.jpg& data-rawwidth=&585& data-rawheight=&517& class=&origin_image zh-lightbox-thumb& width=&585& data-original=&https://pic2.zhimg.com/v2-eb6cec640e3aa14bae63e7_r.jpg&&&/figure&&p&所以最后这个问题需要优化的时fanout,那么同时也是跟hypergraph分割的优化问题是一致的。&/p&&p&&br&&/p&&p&hypergraph分割同时也是一个NP难度问题,而且现有的绝大部分解决这个问题的算法都没有考虑过巨大的网络,所以Facebook需要为了这个图形分割问题来定制一个解决方案,这个解决方案也开源了,叫Social Hash Partitioner(但是我表示我找不到!?)&/p&&p&&br&&/p&&p&这里我要挑过讲现有的开源的graph partitioner,大家有兴趣可以具体去看 related work这一段&/p&&p&&br&&/p&&h2&Social Hash Partitioner&/h2&&p&这个是psudocode&/p&&p&&br&&/p&&figure&&img src=&https://pic1.zhimg.com/v2-8f0a5cf01626cfeba1ea_b.jpg& data-rawwidth=&604& data-rawheight=&772& class=&origin_image zh-lightbox-thumb& width=&604& data-original=&https://pic1.zhimg.com/v2-8f0a5cf01626cfeba1ea_r.jpg&&&/figure&&p&&br&&/p&&ul&&li&这个算法一开始先把所有的点随机分布到k个bucket里面&/li&&li&每一个边都随机选自己两个点中的一个,跟着那个点归到一个bucket里面&/li&&li&每个bucket开始通过换vertices(边)来确保每个bucket之间的联系减少&/li&&li&每个bucket之间联系够少的时候算法停止&/li&&/ul&&p&那这个算法(objective function)具体是什么呢&/p&&ul&&li&这个objective function不会直接最小化fanout,因为很容易卡在一个local minimum上面(具体例子看paper)。我们要优化的是probablistic fanout&/li&&/ul&&blockquote&The probabilistic fanout of a given query q, denoted by p-fanout(q), is the expected number of servers that need to be contacted to answer the query given that each adjacent server needs to be contacted with independent probability p.&/blockquote&&p&p-fanout相对于fanout来说更平稳。p=1的时候,p-fanout其实就是fanout,p=0的时候p-fanout其实就是edge cut,所以p-fanout可以说是这些算法的generalization。&/p&&p&每次选择每个bucket要不要交换vertices的时候,我们要算的是move gain,move gain根据p-fanout是这么算的&/p&&figure&&img src=&https://pic3.zhimg.com/v2-379deca58a497_b.jpg& data-rawwidth=&1082& data-rawheight=&666& class=&origin_image zh-lightbox-thumb& width=&1082& data-original=&https://pic3.zhimg.com/v2-379deca58a497_r.jpg&&&/figure&&p&注意这里是在算移动这个vertices的时候p-fanout有没有减小。为了提高交换边的效率,每次每个bucket是分开来算每个换边的gain,然后一起开始换,这样可以减少每个bucket之间的交流成本。&/p&&p&具体实现分四个步骤&/p&&figure&&img src=&https://pic3.zhimg.com/v2-f519a7934bba09bfc852ae_b.jpg& data-rawwidth=&2274& data-rawheight=&712& class=&origin_image zh-lightbox-thumb& width=&2274& data-original=&https://pic3.zhimg.com/v2-f519a7934bba09bfc852ae_r.jpg&&&/figure&&p&&br&&/p&&ol&&li&收集每个vertices里面每个边的信息&/li&&li&算move gain&/li&&li&每个边表示出自己要去哪个bucket&/li&&li&把每个边移到自己该去的bucket&/li&&/ol&&p&这样在算法复杂度上面,每次要算的次数都是vertices的数量,然后一遍过move gain,一遍决定要移动到哪个bucket。在交流成本上面,算move gain的那一步是最昂贵的,需要每个边都把自己的neighbour信息给找出来。&/p&&p&还有每次移动边的时候需要根据move gain从高到低来,但是如果真的每次都要sort一遍的话那这个算法运行起来会很慢。这个作者提出用一个expotentially sized histogram,这样的话就不用sort了,然后还是可以分辨哪些vertices的move gain比较高&/p&&p&这个paper后面有具体讲实验结果,我这里就不细说了,总之social graph大法好,效果拔群。&/p&&p&&br&&/p&&p&再贴一遍,paper在这里&a href=&http://link.zhihu.com/?target=https%3A//research.fb.com/publications/social-hash-partitioner-a-scalable-distributed-hypergraph-partitioner/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Social Hash Partitioner: A Scalable Distributed Hypergraph Partitioner&/a& 。各位看官走好哟!&/p&&p&&/p&&p&&/p&
这个要发在VLDB 2017,这个如何在数据储存着一层分割用户这件事情还是很有意思的。之前有公布过算法了,但是没有公布具体实现。我们今天来看一下具体实现的paper是怎么分割可以算是全世界最大的网络之一了。这里是原文链接
&p&谢邀。&/p&&p&我把我获得最新进展的方法做一个列举:&/p&&p&&br&&/p&&h2&1.手机app&/h2&&p&&b&知乎&/b&:知乎的反应速度会稍微慢一点。&/p&&p&一般某一工作火了之后,知乎会陆续出现&/p&&blockquote&如何评价XXX提出的XXX模型/算法/系统?&/blockquote&&p&或者是某位大牛提出什么轰动性的言论,&b&但是这种问题下面的答案以各抒己见为主,干货不多。&/b&&/p&&blockquote&如何看待XXX的言论,对XXX会造成什么影响?&/blockquote&&p&对于某一会议,大牛们会推荐自己的工作,或者介绍此会议里突出的几个工作。&/p&&blockquote&XXX 2017 有什么值得关注的亮点/文章?&/blockquote&&p&&br&&/p&&p&&b&Reddit:&/b&国外的社交新闻站,更新速度很快,在里面搜寻你想要关注的板块,比如:&a href=&//link.zhihu.com/?target=https%3A//www.reddit.com/r/MachineLearning/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Machine Learning o r/MachineLearning&i class=&icon-external&&&/i&&/a&板块,可以获得很多网络资源的第一手信息。reddit提供手机app下载:&a href=&//link.zhihu.com/?target=https%3A//www.reddit.com/mobile/download& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&The Official App For iPhone and Android. Meow.&i class=&icon-external&&&/i&&/a&&/p&&p&&br&&/p&&figure&&img src=&https://pic2.zhimg.com/v2-8558800ffdecfc9c1ff9_b.png& data-rawwidth=&934& data-rawheight=&477& class=&origin_image zh-lightbox-thumb& width=&934& data-original=&https://pic2.zhimg.com/v2-8558800ffdecfc9c1ff9_r.png&&&/figure&&p&[D]代表discussion,讨论&/p&&p&[R]代表research,研究,一般以&a href=&//link.zhihu.com/?target=https%3A//arxiv.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&arXiv.org e-Print archive&i class=&icon-external&&&/i&&/a&上的新论文为主。&/p&&p&[N]代表news,新闻,某些公司的站点为主&/p&&p&[P]代表project,项目,以同性交友网站&a href=&//link.zhihu.com/?target=https%3A//github.com/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Build software better, together&i class=&icon-external&&&/i&&/a&上的内容居多。&/p&&p&&b&因为是全英文的,需要一定的英语阅读能力,即便此论坛干货极多,不太好吸收&/b&&/p&&p&&br&&/p&&h2&&b&2.公众号&/b&&/h2&&p&每天推送AI相关的热点的公众号多的要死,例如我关注的几个:&/p&&p&机器之心(微信号:almosthuman2014),新智元(微信号:AI_era),微软研究院AI头条(微信号:MSRAsia)&/p&&p&还有我没有关注的好多。。。&/p&&p&每天都有那么多小编在更新文章,不怕没东西看,就怕看不过来。&/p&&p&&br&&/p&&h2&&b&3.微博&/b&&/h2&&p&&b&关注一个就够了,&/b&爱可可-爱生活:&a href=&//link.zhihu.com/?target=http%3A//weibo.com/p/0261/home%3Ffrom%3Dpage_mod%3DTAB%26is_hot%3D1%23place& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Sina Visitor System&i class=&icon-external&&&/i&&/a&&/p&&p&信息很全,推送也很快,同属于推送太快来不及看系列。&/p&&p&顺便感谢下,老师昨天分享我的文章&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&CNN中千奇百怪的卷积方式大汇总&/a&&/p&&p&&br&&/p&&h2&&b&4.Paper&/b&&/h2&&p&&b&如何跟进最新的paper,最简单的方法是去&/b&&a href=&//link.zhihu.com/?target=https%3A//arxiv.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&arXiv.org e-Print archive&i class=&icon-external&&&/i&&/a&上搜,比如CV领域:&a href=&//link.zhihu.com/?target=https%3A//arxiv.org/list/cs.CV/recent& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Computer Vision and Pattern Recognition&i class=&icon-external&&&/i&&/a&就弹出最近的submission了。&/p&&p&github上也有人做自动筛选器&a href=&//link.zhihu.com/?target=https%3A//github.com/karpathy/arxiv-sanity-preserver& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&karpathy/arxiv-sanity-preserver&i class=&icon-external&&&/i&&/a&,专门过滤论文用的,你可以试试。&/p&&figure&&img src=&https://pic2.zhimg.com/v2-2acfb5eb7a20bed211dea409fc8fd2a5_b.png& data-rawwidth=&938& data-rawheight=&692& class=&origin_image zh-lightbox-thumb& width=&938& data-original=&https://pic2.zhimg.com/v2-2acfb5eb7a20bed211dea409fc8fd2a5_r.png&&&/figure&&p&&br&&/p&&p&&br&&/p&&p&暂时就那么多了。&/p&
谢邀。我把我获得最新进展的方法做一个列举: 1.手机app知乎:知乎的反应速度会稍微慢一点。一般某一工作火了之后,知乎会陆续出现如何评价XXX提出的XXX模型/算法/系统?或者是某位大牛提出什么轰动性的言论,但是这种问题下面的答案以各抒己见为主,干货不…
这段路很赞行程也不复杂,所以建议不用提前做好详尽的规划。来一场说开就开的旅行吧&br&&br&【行】其实我建议从旧金山开到洛杉矶比较好,不然你永远开在靠山那一面,停车的点大大减少了看景也不爽。能改变的话还是尽量改吧。租辆心仪的跑车,会开的很心爽。两天,不比普通车贵多少。。当然你们人多的话。。只能。。多租几辆&br&&br&记得油尽量在两头加好,靠近big sur油价很贵,非要加的话加一点就好了。&br&&br&【住】中途停留住宿的话哪里都ok。手机能联网最好,开到哪儿天黑了就搜下附近的小酒店motel之类还蛮多的,一般有空房也不用提前预定。进去一看房间不喜欢的话就下个地儿。如果想提前订好的话推荐住monterey,自行搜索各类,基本都不差注意看评价。那个小镇太美好了。&br&&br&【吃】Yelp搞起啊,去哪儿一开app,在什么mood就吃啥啊!&br&不必带太多零食水,想买吃的喝的,只要地图上看到有城镇(which is all the way)下高速各种超市。&br&&br&【衣】光穿T冻不死你,有太阳没太阳温差非常大,风一直大。白天t加个外套(外套多厚看体质咯,带防风的属性的最好)看日落穿个羽绒服也不为过。长头发的扎起来或者戴头巾(敞篷可能被吹飞),短头发的带个棒球帽吧不然头疼,还晒。&br&&br&如果能实现从北往南开的话务必车速放慢(因为好多点可以停车,不小心就开过无法回头)然后准备好照相机咔嚓。这样你也不必问哪里最好看,想停哪里停哪里,妈妈再也不用担心我错过看景。例如下列:&br&&br&这是在Monterey附近的日落&br&&figure&&img src=&https://pic3.zhimg.com/dead559f70fa_b.jpg& data-rawwidth=&945& data-rawheight=&628& class=&origin_image zh-lightbox-thumb& width=&945& data-original=&https://pic3.zhimg.com/dead559f70fa_r.jpg&&&/figure&以下是在近LA的一个海滩的日落。。&br&&figure&&img src=&https://pic1.zhimg.com/ee10e29ec1a2a4b58280c4_b.jpg& data-rawwidth=&3344& data-rawheight=&2224& class=&origin_image zh-lightbox-thumb& width=&3344& data-original=&https://pic1.zhimg.com/ee10e29ec1a2a4b58280c4_r.jpg&&&/figure&以下是Monterey拍的海鸥。。没错天气好就是那么蓝。。&br&&figure&&img src=&https://pic3.zhimg.com/f6d6c4bde31b1ffab81860b2_b.jpg& data-rawwidth=&4592& data-rawheight=&3056& class=&origin_image zh-lightbox-thumb& width=&4592& data-original=&https://pic3.zhimg.com/f6d6c4bde31b1ffab81860b2_r.jpg&&&/figure&以下是17英里的一对看日落老夫妻(收费路段,Monterey往南一点)&br&&figure&&img src=&https://pic3.zhimg.com/fece19c53168edc9537482_b.jpg& data-rawwidth=&682& data-rawheight=&455& class=&origin_image zh-lightbox-thumb& width=&682& data-original=&https://pic3.zhimg.com/fece19c53168edc9537482_r.jpg&&&/figure&&br&图暂时找不到更多了,国内电脑没带出来。快下班啦急匆匆写的,公司没人上知乎真是太好了。
这段路很赞行程也不复杂,所以建议不用提前做好详尽的规划。来一场说开就开的旅行吧 【行】其实我建议从旧金山开到洛杉矶比较好,不然你永远开在靠山那一面,停车的点大大减少了看景也不爽。能改变的话还是尽量改吧。租辆心仪的跑车,会开的很心爽。两天,…
&figure&&img src=&https://pic1.zhimg.com/v2-cf4a534df25fbe8896bfcd_b.jpg& data-rawwidth=&848& data-rawheight=&528& class=&origin_image zh-lightbox-thumb& width=&848& data-original=&https://pic1.zhimg.com/v2-cf4a534df25fbe8896bfcd_r.jpg&&&/figure&&p&本书作者跟广大程序员一样,在开始写作前需要去来一杯咖啡。我们跳进车准备出发,Alex掏出他的安卓喊一声“OK Google”唤醒语言助手,Mu操着他的中式英语命令到“去蓝瓶咖啡店”。手机这时马上显示出识别的命令,并且知道我们需要导航。接着它调出地图应用并给出数条路线方案,每条方案边上会有预估的到达时间并自动选择最快的线路。&/p&&p&好吧,这是一个虚构的例子,因为我们一般在办公室喝自己的手磨咖啡。但这个例子展示了在短短几秒钟里,我们跟数个机器学习模型进行了交互。&/p&&p&如果你从来没有使用过机器学习,你会想,这个不就是编程吗?或者,到底机器学习是什么?首先,我们确实是使用编程语言来实现机器学习模型,我们跟计算机其他领域一样,使用同样的编程语言和硬件。但不是每个程序都用了机器学习。对于第二个问题,精确定义机器学习就像定义什么是数学一样难,但我们试图在这章提供一些直观的解释。&/p&&h2&一个例子&/h2&&p&我们日常交互的大部分计算机程序可以使用最基本的命令来实现。当你把一个商品加进购物车时,你触发了电商的电子商务程序来把一个商品ID和你的用户ID插入到一个叫做购物车的数据库表格中。你可以在没有见到任何真正客户前来用最基本的程序指令来实现这个功能。如果你发现你可以这么做,那么你就不应该使用机器学习。&/p&&p&对于机器学习科学家来说,幸运的是大部分应用没有那么容易。回到前面那个例子,想象下如何写一个程序来回应唤醒词例如“Okay, Google”,“Siri”,和“Alexa”。如果你在一个只有你和代码编辑器的房间里写这个程序,你该怎么办?你可能会想像下面的程序&/p&&p&&b&if&/b& input_command &b&==&/b& 'Okey, Google': run_voice_assistant()&/p&&p&但实际上你能拿到的只是麦克风里采集到的原始语音信号,可能是每秒44,000个样本点。那么需要些什么样的规则才能把这些样本点转成一个字符串呢?或者简单点,判断这些信号里是不是就是说了唤醒词。&/p&&figure&&img src=&http://pic3.zhimg.com/v2-1e71c14eb9b2fd7a18ad6a_b.png& data-rawwidth=&800& data-rawheight=&262& class=&origin_image zh-lightbox-thumb& width=&800& data-original=&http://pic3.zhimg.com/v2-1e71c14eb9b2fd7a18ad6a_r.png&&&/figure&&p&&br&&/p&&p&如果你被这个问题困住了,不用担心。这就是我们为什么要机器学习。&/p&&p&虽然我们不知道怎么告诉机器去把语音信号转成对应的字符串,但我们自己可以。我们可以收集一个巨大的&b&数据集&/b&里包含了大量语音信号,以及每个语音型号是不是对应我们要的唤醒词。在机器学习里,我们不直接设计一个系统去辨别唤醒词,而是写一个灵活的程序,它的行为可以根据在读取数据集的时候改变。所以我们不是去直接写一个唤醒词辨别器,而是一个程序,当提供一个巨大的有标注的数据集的时候它能辨别唤醒词。你可以认为这种方式是&b&利用数据编程&/b&。换言之,我们需要用数据训练机器学习模型,其过程通常如下:&/p&&ol&&li&初始化一个几乎什么也不能做的模型;&/li&&li&抓一些有标注的数据集(例如音频段落及其是否为唤醒词的标注);&/li&&li&修改模型使得它在抓取的数据集上能够更准确执行任务(例如使得它在判断这些抓取的音频段落是否为唤醒词上判断更准确);&/li&&li&重复以上步骤2和3,直到模型看起来不错。&/li&&/ol&&figure&&img src=&http://pic2.zhimg.com/v2-cf4a534df25fbe8896bfcd_b.png& data-rawwidth=&848& data-rawheight=&528& class=&origin_image zh-lightbox-thumb& width=&848& data-original=&http://pic2.zhimg.com/v2-cf4a534df25fbe8896bfcd_r.png&&&/figure&&p&&br&&/p&&h2&眼花缭乱的机器学习应用&/h2&&p&机器学习背后的核心思想是,设计程序使得它可以在执行的时候提升它在某任务上的能力,而不是有着固定行为的程序。机器学习包括多种问题的定义,提供很多不同的算法,能解决不同领域的各种问题。我们之前讲到的是一个讲&b&监督学习&/b&应用到语言识别的例子。&/p&&p&正因为机器学习提供多种工具可以利用数据来解决简单规则不能或者难以解决的问题,它被广泛应用在了搜索引擎、无人驾驶、机器翻译、医疗诊断、垃圾邮件过滤、玩游戏、人脸识别、数据匹配、信用评级和给图片加滤镜等任务中。&/p&&p&虽然这些问题各式各样,但他们有着共同的模式从而可以被机器学习模型解决。最常见的描述这些问题的方法是通过数学,但不像其他机器学习和神经网络的书那样,我们会主要关注真实数据和代码。下面我们来看点数据和代码。&/p&&h2&用代码编程和用数据编程&/h2&&p&这个例子灵感来自 &a href=&http://link.zhihu.com/?target=http%3A//joelgrus.com/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Joel Grus&/a& 的一次 &a href=&http://link.zhihu.com/?target=http%3A//joelgrus.com//fizz-buzz-in-tensorflow/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&应聘面试&/a&. 面试官让他写个程序来玩Fizz Buzz. 这是一个小孩子游戏。玩家从1数到100,如果数字被3整除,那么喊’fizz’,如果被5整除就喊’buzz’,如果两个都满足就喊’fizzbuzz’,不然就直接说数字。这个游戏玩起来就像是:&/p&&blockquote&1 2 fizz 4 buzz fizz 7 8 fizz buzz 11 fizz 13 14 fizzbuzz 16 …&/blockquote&&p&传统的实现是这样的:&/p&&div class=&highlight&&&pre&&code class=&language-python3&&&span&&/span&&span class=&n&&res&/span& &span class=&o&&=&/span& &span class=&p&&[]&/span&
&span class=&k&&for&/span& &span class=&n&&i&/span& &span class=&ow&&in&/span& &span class=&nb&&range&/span&&span class=&p&&(&/span&&span class=&mi&&1&/span&&span class=&p&&,&/span& &span class=&mi&&101&/span&&span class=&p&&):&/span&
&span class=&k&&if&/span& &span class=&n&&i&/span& &span class=&o&&%&/span& &span class=&mi&&15&/span& &span class=&o&&==&/span& &span class=&mi&&0&/span&&span class=&p&&:&/span&
&span class=&n&&res&/span&&span class=&o&&.&/span&&span class=&n&&append&/span&&span class=&p&&(&/span&&span class=&s1&&'fizzbuzz'&/span&&span class=&p&&)&/span&
&span class=&k&&elif&/span& &span class=&n&&i&/span& &span class=&o&&%&/span& &span class=&mi&&3&/span& &span class=&o&&==&/span& &span class=&mi&&0&/span&&span class=&p&&:&/span&
&span class=&n&&res&/span&&span class=&o&&.&/span&&span class=&n&&append&/span&&span class=&p&&(&/span&&span class=&s1&&'fizz'&/span&&span class=&p&&)&/span&
&span class=&k&&elif&/span& &span class=&n&&i&/span& &span class=&o&&%&/span& &span class=&mi&&5&/span& &span class=&o&&==&/span& &span class=&mi&&0&/span&&span class=&p&&:&/span&
&span class=&n&&res&/span&&span class=&o&&.&/span&&span class=&n&&append&/span&&span class=&p&&(&/span&&span class=&s1&&'buzz'&/span&&span class=&p&&)&/span&
&span class=&k&&else&/span&&span class=&p&&:&/span&
&span class=&n&&res&/span&&span class=&o&&.&/span&&span class=&n&&append&/span&&span class=&p&&(&/span&&span class=&nb&&str&/span&&span class=&p&&(&/span&&span class=&n&&i&/span&&span class=&p&&))&/span&
&span class=&nb&&print&/span&&span class=&p&&(&/span&&span class=&s1&&' '&/span&&span class=&o&&.&/span&&span class=&n&&join&/span&&span class=&p&&(&/span&&span class=&n&&res&/span&&span class=&p&&))&/span&
&/code&&/pre&&/div&&p&1 2 fizz 4 buzz fizz 7 8 fizz buzz 11 fizz 13 14 fizzbuzz 16 17 fizz 19 buzz fizz 22 23 fizz buzz 26 fizz 28 29 fizzbuzz 31 32 fizz 34 buzz fizz 37 38 fizz buzz 41 fizz 43 44 fizzbuzz 46 47 fizz 49 buzz fizz 52 53 fizz buzz 56 fizz 58 59 fizzbuzz 61 62 fizz 64 buzz fizz 67 68 fizz buzz 71 fizz 73 74 fizzbuzz 76 77 fizz 79 buzz fizz 82 83 fizz buzz 86 fizz 88 89 fizzbuzz 91 92 fizz 94 buzz fizz 97 98 fizz buzz&/p&&p&对于经验丰富的程序员来说这个太不够一颗赛艇了。所以Joel尝试用机器学习来实现这个。为了让程序能学,他需要准备下面这个数据集:&/p&&ul&&li&数据 X [1, 2, 3, 4, ...] 和标注Y ['fizz', 'buzz', 'fizzbuzz', identity]&/li&&li&训练数据,也就是系统输入输出的实例。例如 [(2, 2), (6, fizz), (15, fizzbuzz), (23, 23), (40, buzz)]&/li&&li&从输入数据中抽取的特征,例如 x -& [(x % 3), (x % 5), (x % 15)].&/li&&/ul&&p&有了这些,Jeol利用TensorFlow写了一个&a href=&http://link.zhihu.com/?target=https%3A//github.com/joelgrus/fizz-buzz-tensorflow& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&分类器&/a&。对于不按常理出牌的Jeol,面试官一脸黑线。而且这个分类器不是总是对的。&/p&&p&显然,用原子弹杀鸡了。为什么不直接写几行简单而且保证结果正确的Python代码呢?当然,这里有很多一个简单Python脚本不能分类的例子,即使简单的3岁小孩解决起来毫无压力。&/p&&p&&br&&/p&&b&&figure&&img src=&http://pic3.zhimg.com/v2-df2008defc7faa_b.jpg& data-rawwidth=&500& data-rawheight=&400& class=&origin_image zh-lightbox-thumb& width=&500& data-original=&http://pic3.zhimg.com/v2-df2008defc7faa_r.jpg&&&/figure&&/b&&b&&figure&&img src=&http://pic3.zhimg.com/v2-c661ba1ef2_b.jpg& data-rawwidth=&500& data-rawheight=&400& class=&origin_image zh-lightbox-thumb& width=&500& data-original=&http://pic3.zhimg.com/v2-c661ba1ef2_r.jpg&&&/figure&&/b&&p&喵vs汪&/p&&p&幸运的是,这个正是机器学习的用武之地。我们通过提供大量的含有猫和狗的图片来编程一个猫狗检测器,一般来说它就是一个函数,它会输出一个大的正数如果图片里面是猫,一个大的负数如果是狗,如果不确信就输出一个0附近的。当然,这是机器学习能做的最简单例子。&/p&&h2&机器学习最简要素&/h2&&p&成功的机器学习有四个要素:数据、转换数据的模型、衡量模型好坏的损失函数和一个调整模型权重来最小化损失函数的算法。&/p&&ul&&li&&b&数据&/b&。越多越好。事实上,数据是深度学习复兴的核心,因为复杂的非线性模型比其他机器学习需要更多的数据。数据的例子包括&/li&&ul&&li&图片:例如你的手机图片,里面可能包含猫、狗、恐龙、高中同学聚会或者昨天的晚饭&/li&&li&文本:邮件、新闻和微信聊天记录&/li&&li&声音:有声书籍和电话记录&/li&&li&结构数据:Jupyter notebook(里面有文本,图片和代码)、网页、租车单和电费表&/li&&/ul&&li&&b&模型&/b&。通常数据和我们最终想要的相差很远,例如我们想知道照片中的人是不是在高兴,所以我们需要把一千万像素变成一个高兴度的概率值。通常我们需要在数据上应用数个非线性函数(例如神经网络)&/li&&li&&b&损失函数&/b&。我们需要对比模型的输出和真实值之间的误差。损失函数帮助我们决定2017年底亚马逊股票会不会价值1500美元。取决于我们想短线还是长线,这个函数可以很不一样。&/li&&li&&b&训练&/b&。通常一个模型里面有很多参数。我们通过最小化损失函数来学这些参数。不幸的是,即使我们做得很好也不能保证在新的没见过的数据上我们可以仍然做很好。&/li&&ul&&li&&b&训练误差&/b&。这是模型在评估用来训练模型的数据集上的误差。这个类似于考试前我们在模拟试卷上拿到的分数。有一定的指向性,但不一定保证真实考试分数。&/li&&li&&b&测试误差&/b&。这是模型在没见过的新数据上的误差,可能会跟训练误差不很一样(统计上叫过拟合)。这个类似于考前模考次次拿高分,但实际考起来却失误了。(笔者之一曾经做GRE真题时次次拿高分,高兴之下背了一遍红宝书就真上阵考试了,结果最终拿了一个刚刚够用的低分。后来意识到这是因为红宝书里包含了大量的真题。)&/li&&/ul&&/ul&&p&下面我们详细讨论一些不同的机器学习应用。&/p&&h2&监督学习&/h2&&p&监督学习描述的任务是,当给定输入x,如何通过在有标注输入和输出的数据上训练模型而能够预测输出y。从统计角度来说,监督学习主要关注如何估计条件概率P(y|x)。在实际情景中,监督学习最为常用。例如,给定一位患者的CT图像,预测该患者是否得癌症;给定英文句子,预测出它的正确中文翻译;给定本月公司财报数据,预测下个月该公司股票价格。&/p&&h2&回归分析&/h2&&p&回归分析也许是监督学习里最简单的一类任务。在该项任务里,输入是任意离散或连续的、单一或多个的变量,而输出是连续的数值。例如我们可以把本月公司财报数据抽取出若干特征,如营收总额、支出总额以及是否有负面报道,利用回归分析预测下个月该公司股票价格。&/p&&p&如果我们把模型预测的输出值和真实的输出值之间的差别定义为残差,常见的回归分析的损失函数包括训练数据的残差的平方和或者绝对值的和。机器学习的任务是找到一组模型参数使得损失函数最小化。我们会在之后的章节里详细介绍回归分析。&/p&&h2&分类&/h2&&p&值得一提的是,回归分析所关注的预测往往可以解答输出为&b&连续数值&/b&的问题。当预测的输出是&b&离散的&/b&类别时,这个监督学习任务就叫做分类。分类在我们日常生活中很常见。例如我们可以把本月公司财报数据抽取出若干特征,如营收总额、支出总额以及是否有负面报道,利用分类预测下个月该公司的CEO是否会离职。在计算机视觉领域,把一张图片识别成众多物品类别中的某一类,例如猫、狗等。&/p&&figure&&img src=&http://pic3.zhimg.com/v2-97edaf65d364cdfb76dabde_b.jpg& data-rawwidth=&792& data-rawheight=&558& class=&origin_image zh-lightbox-thumb& width=&792& data-original=&http://pic3.zhimg.com/v2-97edaf65d364cdfb76dabde_r.jpg&&&/figure&&p&&i&动物的分类&/i&&/p&&p&给定一个实例被抽取出的若干特征作为输入,我们的分类模型可以输出实例为各个类别的概率,并将概率最大的类别作为分类的结果。&/p&&h2&标注&/h2&&p&事实上,有一些看似分类的问题在实际中却难以归于分类。例如,把下面这张图无论分类成猫还是狗看上去都有些问题。&/p&&figure&&img src=&http://pic4.zhimg.com/v2-39cddffe01bf_b.jpg& data-rawwidth=&640& data-rawheight=&479& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&http://pic4.zhimg.com/v2-39cddffe01bf_r.jpg&&&/figure&&p&&br&&/p&&p&正如你所见,上图里既有猫又有狗。其实还没完呢,里面还有草啊、轮胎啊、石头啊等等。与其将上图仅仅分类为其中一类,倒不如把这张图里面我们所关心的类别都标注出来。比如,给定一张图片,我们希望知道里面是否有猫、是否有狗、是否有草等。给定一个输入,输出不定量的类别,这个就叫做标注任务。&/p&&p&这类任务有时候也叫做多标签分类。想象一下,人们可能会把多个标签同时标注在自己的某篇技术类博客文章上,例如“机器学习”、“科技”、“编程语言”、“云计算”、“安全与隐私”和“AWS”。这里面的标签其实有时候相互关联,比如“云计算”和“安全与隐私”。当一篇文章可能被标注的数量很大时,人力标注就显得很吃力。这就需要使用机器学习了。&/p&&h2&搜索与排序&/h2&&p&搜索与排序关注的问题更多的是如何把一堆对象排序。例如在信息检索领域,我们常常关注如何把一堆文档按照与检索条目的相关性排序。在互联网时代,由于搜索引擎的流行,我们更加关注如何对网页进行排序。互联网时代早期有一个著名的网页排序算法叫做PageRank。该算法的排序结果并不取决于特定的用户检索条目。这些排序结果可以更好地为所包含检索条目的网页进行排序。&/p&&h2&推荐系统&/h2&&p&推荐系统与搜索排序关系紧密,并广泛应用于购物网站、搜索引擎、新闻门户网站等等。推荐系统的主要目标是把用户可能感兴趣的东西推荐给用户。推荐算法用到的信息多种多样,例如用户的自我描述、对过往推荐的反应、社交网络、喜好等等。下图展示了亚马逊网站对笔者之一有关深度学习类书籍的推荐结果。&/p&&figure&&img src=&http://pic2.zhimg.com/v2-cbf9601eded58dc53440eb5_b.png& data-rawwidth=&1770& data-rawheight=&1122& class=&origin_image zh-lightbox-thumb& width=&1770& data-original=&http://pic2.zhimg.com/v2-cbf9601eded58dc53440eb5_r.png&&&/figure&&p&&br&&/p&&p&搜索引擎的搜索条目自动补全系统也是个好例子。它可根据用户输入的前几个字符把用户可能搜索的条目实时推荐自动补全。在笔者之一的某项工作里,如果系统发现用户刚刚开启了体育类的手机应用,当用户在搜索框拼出”real”时,搜索条目自动补全系统会把”real madrid”(皇家马德里,足球球队)推荐在比通常更频繁被检索的”real estate”(房地产)更靠前的位置,而不是总像下图中这样。&/p&&figure&&img src=&http://pic2.zhimg.com/v2-3ccee12b056fe496ddb9_b.png& data-rawwidth=&490& data-rawheight=&412& class=&origin_image zh-lightbox-thumb& width=&490& data-original=&http://pic2.zhimg.com/v2-3ccee12b056fe496ddb9_r.png&&&/figure&&p&&br&&/p&&h2&序列学习&/h2&&p&序列学习也是一类近来备受关注的机器学习问题。在这类问题中,输入和输出不仅限于固定的数量。这类模型通常可以处理任意长度的输入序列,或者输出任意长度的序列。当输入和输出都是不定长的序列时,我们也把这类模型叫做seq2seq,例如语言翻译模型和语音转录文本模型。以下列举了一些常见的序列学习案例。&/p&&h2&语法分析&/h2&&p&一个常见语法分析的例子是,给定一个本文序列,如何找出其中的命名实体,例如人物姓名、城市名称等。以下是一个这样的例子。其中Tom、Washington和Sally都是命名实体。&/p&&p&&b&Tom&/b& &b&wants&/b& &b&to&/b& &b&have&/b& &b&dinner&/b& &b&in&/b& &b&Washington&/b& &b&with&/b& &b&Sally.&/b&&/p&&p&E
E&/p&&h2&语音识别&/h2&&p&在语音识别的问题里,输入序列通常都是麦克风的声音,而输出是对通过麦克风所说的话的文本转录。这类问题通常有一个难点,例如声音通常都在特定的采样率采样,因为声音和文本之间不存在一一对应。换言之,语音识别是一类序列转换问题。这里的输出往往比输入短很多。&/p&&p&&b&----D----e--e--e-----p-----------&/b& &b&L----ea-------r---------ni-----ng--&/b&&/p&&figure&&img src=&http://pic3.zhimg.com/v2-cffbad55ccacaf78da3b0da1fbaaa5ce_b.jpg& data-rawwidth=&397& data-rawheight=&77& class=&content_image& width=&397&&&/figure&&p&&br&&/p&&h2&文本转语音&/h2&&p&这是语音识别问题的逆问题。这里的输入是一个文本序列,而输出才是声音序列。因此,这类问题的输出比输入长。&/p&&h2&机器翻译&/h2&&p&机器翻译的目标是把一段话从一种语言翻译成另一种语言。目前,机器翻译时常会翻译出令人啼笑皆非的结果。主要来说,机器翻译的复杂程度非常高。同一个词在两种不同语言下的对应有时候是多对多。另外,符合语法或者语言习惯的语序调整也另问题更加复杂。&/p&&h2&非监督学习&/h2&&p&上述的机器学习问题和应用场景都是基于监督学习的。与监督学习不同,非监督学习不需要训练数据被标识。以图片分析为例,对监督学习来说,训练数据里的图片需要被标识为狗、猫或者别的动物,如此一来,一个分类模型被训练后就能把一张新图片识别为某种动物。而对非监督学习而言,例如聚类学习,可以把一堆无标识的图片自动聚合成若干类,其中每类分别对应一种动物。&/p&&p&以下我们简要介绍一些常见的非监督学习任务。&/p&&ul&&li&&b&聚类&/b&问题通常研究如何把一堆数据点分成若干类,从而使得同类数据点相似而非同类数据点不似。根据实际问题,我们需要定义相似性。&/li&&li&&b&子空间估计&/b&问题通常研究如何将原始数据向量在更低维度下表示。理想情况下,子空间的表示要具有代表性从而才能与原始数据接近。一个常用方法叫做主成分分析。&/li&&li&&b&表征学习&/b&希望在欧几里得空间中找到原始对象的表示方式,从而能在欧几里得空间里表示出原始对象的符号性质。例如我们希望找到城市的向量表示,从而使得我们可以进行这样的向量运算:罗马 - 意大利 + 法国 = 巴黎。&/li&&li&&b&生成对抗网络&/b&是最近一个很火的领域。这里描述数据的生成过程,并检查真实与生成的数据是否统计上相似。&/li&&/ul&&h2&小结&/h2&&p&机器学习是一个庞大的领域。我们在此无法也无需介绍有关它的全部。有了这些背景知识铺垫,你是否对接下来的学习更有兴趣了呢?&/p&&p&原文地址:&a href=&http://link.zhihu.com/?target=http%3A//zh.gluon.ai/introduction.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&机器学习简介 - 动手学深度学习 0.1 documentation&/a&&/p&&p&讨论欢迎来:&a href=&http://link.zhihu.com/?target=http%3A//discuss.gluon.ai/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&MXNet/Gluon&/a&&/p&&p&欢迎转载&/p&&p&&/p&
本书作者跟广大程序员一样,在开始写作前需要去来一杯咖啡。我们跳进车准备出发,Alex掏出他的安卓喊一声“OK Google”唤醒语言助手,Mu操着他的中式英语命令到“去蓝瓶咖啡店”。手机这时马上显示出识别的命令,并且知道我们需要导航。接着它调出地图应用…
&p&谈谈最近校招面试的感受(作为某厂面试官),最近一周多面了20多个(视频加现场)。&/p&&p&我们这个团队以AI应用为主,又是新项目,所以校招的目标不是ML Scientist,是需要有工程实践能力,能够在具体相关业务中应用机器学习算法,并能跟进较新科研成果,和专职的ML Scientist对接的类似RSDE(研发工程师,Research Software Development Engineer)这样的角色,实际点来说就是:&/p&&ul&&li&能动手写代码(首先是个工程师,再者来说以现在DNN越来越复杂的情况,代码能力不过关,很难想象具有潜力去修改优化调整这么复杂的网络结构)&/li&&li&真的理解机器学习原理,不是在背书;&/li&&li&能跟进较新科研成果的表现就是最好在相关领域发过paper,不要求顶级会议或journal,发过就行,起码证明你是经过这么个流程,总结过某种想法的;&/li&&/ul&&p&能达到这些标准的话就不错了,然后一般分四步这么考察:&/p&&ol&&li&&b&背景了解&/b&&/li&&/ol&&p&先讲讲最近项目,别瞎吹画饼,就说说上一周你都每天在干嘛。这样一般就把很多人简历上牛逼哄哄的做了什么国家部门的大数据挖掘项目啊,对啥算法做了什么什么巨大的优化啊,或者做了什么公司的某fancy project之类的简化到可能就是手工给数据分类,或者比较不同模型(别人给的)的performance,或者好一点把CNN相关的某个现有开源代码实现去掉某个层或者改了几个参数在尝试(当然不是说就不好,其实也可以),或者做A/B测试看效果。当然其实都行,不是说做哪个就比哪个差了,但是马上就会有这人到底做了些啥的具体形象。&/p&&p&这一步对硕士生很管用,对phd不能这么搞。个人对phd首先会看看他的paper,大部分时候对国内phd会发现大部分paper都是把一个东西翻来覆去到处发灌水,这没啥,理解,主要是搞清楚他读博期间主要在研究啥,然后会看一下summary,具体有个了解。比较有意思的是很多phd的简历上没写几篇paper,不知道是觉得工业界求职不需要呢还是咋回事,没写paper的话我觉得你这phd白读了啊。。。如果看到做的paper有意思,面试开始时个人主要去了解下对方对做应用开发为主的工作怎么看,如果不感兴趣就算了----一般来说,女生都会强调想做research,男的好一些。不过有几次遇到一些压根没发什么paper的phd学生说他们想做学术研究,尼玛,老子当时就想你这paper比老子还少,做个毛的research啊。。。&/p&&p&&br&&/p&&p&&b&2. 基本原理&/b&&/p&&p&经过上面第一步,差不多确认了两个人可以有在一起的意愿,然后就对方提到的近期工作内容中具体的一些细节让他讲一下。机器学习覆盖面太广,和具体业务结合也比较紧,所以尽量往自己知道的地方去靠拢。比如对方如果说主要做的是数据前期准备,就问问数据哪来的,怎么处理的,遇到什么问题,要不要做normalization啥的具体怎么做的;遇到说做优化的,就问问在优化什么东西,比如遇到过一个说在对比不同梯度下降算法并进行优化,就叫他讲讲对比了哪些梯度下降算法,然后在里面挑一两个让他解释原理,最好能画出来推导过程。反正就是一边听对方讲做的项目,一边看有啥可以深挖的(自己能判断正误的)&/p&&p&遇到那种讲说在优化(调参)CNN相关网络结构的比较麻烦,因为没有对方的实际数据,并不能确定他说得对不对,他说他去掉YOLO啥的某个层就怎么怎么了也不好判断,只有大概问问dropout啊maxout啊这些用没用或者改没改,结果如何是什么原因,这种我个人只是用来判断他的表达和逻辑能力。&/p&&p&&br&&/p&&p&&b&3. Show me the code&/b&&/p&&p&毕竟是RSDE面试,不是Research Scientist,所以对Scientist一般会有前沿技术或者更深入的理论讨论,再说也有专门做某个具体方向的同事在其他面试环节里去针对性了解。在我这里,前面花个15-20分钟口头交流下理论就可以了,后面重头戏是动手coding.&/p&&p&首先,既然到了这一步,说明对方是声称对神经网络和机器学习有实际经验和细节理解的,那就来动手实现个基本的神经网络吧。我会给一组训练数据,让对方不用什么tf/caffe/pytorch框架,就用基本的python+numpy写一个基本的,可运行的网络实现出来。这一步足可以刷掉目前约2/3的面试人员,其中硕士生大多写不出来,phd倒没啥问题,但是存在实现速度的差异,有几个虽然写出来了,但是面试时间也到了。&/p&&p&我觉得比较有趣的是很多面试者声称熟悉各种activation function并能合理选用,口头解释的时候倒背如流,到了具体实现的时候大多会卡住,说不记得sigmoid的导数结果或者relu或者什么的,不知道如果不用现成框架的话怎么去实现导数。反复给他们说这没关系,重点是先搞个可以跑的网络,activation后面我们再来讨论, 这帮子人就卡住了,不知道该怎么进行-----晕,不是自称能灵活选用么,选一个你知道怎么求导并实现的啊。&/p&&p&其他问题包括压根不知道怎么开头啊,有明显眼光在看书抄(大部分是视频面试共享桌面)写出来的根本不是我给的数据啊,或者写出来的思路正确但是是pseudo code啊(这种其实还可以忍受),各种问题吧。&/p&&p&当然好的也有,印象比较深的是一个phd写完后直接跑我给的数据(其实是我乱写的一堆数据,里面有些问题),发现gradient始终为0,现场debug分析并发现问题后,自己做了一些对数据的处理通过,我觉得还是蛮不错的,这么短时间内相当于把特征工程和网络实现及测试整个流程演示了一遍;另外一个acm亚洲奖牌得主10分钟实现并搞定,这尼玛让老子哑口无言,搞得只好直接进入常规刷题算法环节。&/p&&p&实现NN网络这步完成后看情况,有些直接实现SGD/mini batch的,就直接走后面环节了;不然的话会叫他改成mini batch形式;&/p&&p&&br&&/p&&p&&b&4. 常规算法&/b&&/p&&p&这步没啥好说,最开始有耐心的时候,如果上面的简单网络没有实现,还会耐心地让对方做个lc easy难度的题目,后来也不客气了,上面做不出来就谢谢对方然后bye bye。如果做出来了,时间还有,会给一个lc medium难度的看看。&/p&&p&不要觉得lc medium简单,现场面试没有跑了代码再改的机会,从实现速度到代码清晰程度都能看出问题,不管是acm奖牌得主还是noip选手,目前还没看到bug free写出来的。&/p&&p&&br&&/p&&p&基本上是这么个流程,当然不是这么死板,里面会根据对方的回答和代码实现过程引很多问题出来,这个就不能一概而论了。&/p&&p&另外这个流程可能适合团队人手不足没有足够面试人员,或者像对于校招这种面试环节不够难以全面深入考察的情况,所以在一次面试中覆盖内容较广,找到对方比较适合的方向,然后根据结果让具体负责该方向的同事再深入考察,这样基本在两轮之后可以有一个比较清晰的判断。&/p&&p&************************************************&/p&&p&btw,我们也社招,欢迎有三年以上实际项目的ml专家作为lead加入,私信联系。&/p&
谈谈最近校招面试的感受(作为某厂面试官),最近一周多面了20多个(视频加现场)。我们这个团队以AI应用为主,又是新项目,所以校招的目标不是ML Scientist,是需要有工程实践能力,能够在具体相关业务中应用机器学习算法,并能跟进较新科研成果,和专职的…
&figure&&img src=&https://pic4.zhimg.com/v2-ac7b9ee1a8cb_b.jpg& data-rawwidth=&900& data-rawheight=&500& class=&origin_image zh-lightbox-thumb& width=&900& data-original=&https://pic4.zhimg.com/v2-ac7b9ee1a8cb_r.jpg&&&/figure&&blockquote&&b&「PhD Talk」是 PaperWeekly 的学术直播间,旨在帮助更多的青年学者宣传其最新科研成果。我们一直认为,单向地输出知识并不是一个最好的方式,而有效地反馈和交流可能会让知识的传播更加有意义,从而产生更大的价值。&/b&&/blockquote&&p&&b&1. 嘉宾介绍&/b&&/p&&p&&b&李纪为&/b&&/p&&p&&b&斯坦福大学博士&/b&&/p&&p&李纪为近日从斯坦福大学计算机科学系获得了博士学位,导师为 Dan Jurafsky 教授。他的研究领域是自然语言处理,主要关注于深度学习在对话系统、语言生成和篇章上的应用。在 ACL、ICLR、EMNLP、WWW、CIKM、NAACL 等国际顶级会议发表论文 20 余篇,论文引用量 993 次,h-index 值达 19。李纪为曾获 2015 年 Facebook 奖学金,2016 年百度奖学金。&/p&&p&&b&2. 主题介绍&/b&&/p&&p&In this talk, I will be talking about ways to build interactive bots. I will first focus on two aspects: (1) how a bot can improve by asking users questions and (2) how a bot can improve through communication with humans, learning from both various forms of supervision signals from human and the mistakes it makes. &/p&&p&Next, I will be talking about a general pipeline for building an interactive dialogue system, accommodating various deep learning techniques to date.&/p&&p&&b&3. 活动时间&/b&&/p&&p&8 月 16 日 本周三 20:00 &/p&&p&&b&4. 活动地点&/b&&/p&&p&使用 &b&斗鱼App &/b&搜索房间号「1743775」或通过 &b&PC端 &/b&访问:&a href=&http://link.zhihu.com/?target=https%3A//www.douyu.com/paperweekly& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://www.&/span&&span class=&visible&&douyu.com/paperweekly&/span&&span class=&invisible&&&/span&&/a&&/p&&p&&b&关于PaperWeekly&/b&&/p&&p&PaperWeekly 是一个推荐、解读、讨论、报道人工智能前沿论文成果的学术平台。如果你研究或从事 AI 领域,欢迎在公众号后台点击&b&「交流群」&/b&,小助手将把你带入 PaperWeekly 的交流群里。&/p&&p&&b&微信公众号:PaperWeekly&/b&&/p&&p&&b&新浪微博:@PaperWeekly&/b&&/p&&p&&/p&
「PhD Talk」是 PaperWeekly 的学术直播间,旨在帮助更多的青年学者宣传其最新科研成果。我们一直认为,单向地输出知识并不是一个最好的方式,而有效地反馈和交流可能会让知识的传播更加有意义,从而产生更大的价值。1. 嘉宾介绍李纪为斯坦福大学博士李纪为…
&p&有天晚上,一个哥们来找我喝酒,在夜市摊两杯白酒下肚,他就开始诉苦。&/p&&p&首先他说了他的经济问题,工资一年多没涨了,还房贷越来越紧张,老婆脾气越来越大,隔三差五的和他妈展开对骂,三个月都没有性生活了。说着说着话锋一转,说起了当年一起读书的事情,我们翻墙上网,早饭两个人共吃一碗面,为了攒钱给女朋友买东西在寝室赌博,被班主任揪出去罚站,我穿的是运动裤他穿的是三角裤,让路过的女生流连忘返。&/p&&p&他又干了一杯抹抹眼睛:那时候是真穷啊,但比现在快乐多了。&/p&&p&我拍拍他的肩膀,结完账后走到街尾的取款机,取了两万块钱递给他。他像着火似得把钱推回来:你干嘛呢,我不是这个意思……&/p&&p&我说:你先拿着用,我这反正也是闲钱。&/p&&p&我们像打太极一样推攘了半天,他终究还是收下了钱,他眼眶红红的:你放心,年底发了钱我就还给你。&/p&&p&我递给他一支烟:不着急,你现在有家庭了也不容易,什么时候方便什么时候还吧。&/p&&p&过了一个月,他把钱还给了我,后来才知道他那时候老婆要做手术,家里到处都要用钱,实在没办法才找到我,但又不好意思开口。如果那天我置若罔闻,说不定十几年的朋友就这样完了。&/p&&p&还有一次,我和女朋友逛完街吃饭,本来吃的好好的,女朋友突然就发了火。&/p&&p&首先抨击了我的生活作风问题,比如吸烟酗酒不修边幅,在家里从来不主动做卫生。接着说我对她一点都不关心,好几次她感冒了都是自己买的药,更过分的是我还跟很多小妹妹玩暧昧,她越说越气,觉得我这种人在电影里绝对活不过三分钟。&/p&&p&我挣扎了一下:我微信里除了你妈和我妈,没有别的女性啊。&/p&&p&她哇一下哭了出来:你非要气死我啊……&/p&&p&我一下子慌了,不知道自己做错了什么,努力回想了发生的种种细节,突然灵光一现拍拍脑袋,跑去大洋百货把刚刚那件有点贵的裙子买了下来,当时她试了好几次,我嫌颜色和她皮肤不搭还有点贵,就拉着她走了。&/p&&p&果不其然,我把裙子递给她的时候她破涕为笑:我又不是要这个。&/p&&p&我笑着说:知道知道,在下不是负裙请罪么。&/p&&p&她笑着打打我肩膀,挽着我的手走回去,也不骂我在家里抽烟了。&/p&&p&出门在外,我和父母一个星期联系一次,打电话汇报下基本情况。有一周我妈给我打了三次电话,每次都说着差不多的话,问我身体怎么样这边天气好不好有没有按时吃饭,我说:您昨天不是才问了么,我每天吃的都差不多。&/p&&p&我妈愣了会儿,笑着说:对对对,就是无聊给你打个电话。&/p&&p&我觉得不大对劲,就请了假飞回去,才知道我妈高血压犯了住了院,我火急火燎的往医院赶,把的士师傅逼着玩极品飞车。在医院找到我妈后她有点诧异:你怎么回来了?&/p&&p&我一下子火了:您都住院了怎么不跟我说声?&/p&&p&我妈笑了笑:又不是什么大病,跟你说了你又担心影响工作,你在外面好好的就行了,我自己会照顾自己。&/p&&p&我还想咆哮,我妈递给我一个削好的苹果,我一下子哽住觉得眼眶发烫。&/p&&p&&b&你知道吗?有时候我们听人说话,不要听他们说了什么,要去听他们没说什么。&/b&&/p&&p&&b&那些东西就像电影里的留白,没讲出来不代表不重要,它的名字叫心里话。&/b&&/p&
有天晚上,一个哥们来找我喝酒,在夜市摊两杯白酒下肚,他就开始诉苦。首先他说了他的经济问题,工资一年多没涨了,还房贷越来越紧张,老婆脾气越来越大,隔三差五的和他妈展开对骂,三个月都没有性生活了。说着说着话锋一转,说起了当年一起读书的事情,我…
&figure&&img src=&https://pic3.zhimg.com/v2-da6e908fbff06e8e14c60d86d776d225_b.jpg& data-rawwidth=&768& data-rawheight=&576& class=&origin_image zh-lightbox-thumb& width=&768& data-original=&https://pic3.zhimg.com/v2-da6e908fbff06e8e14c60d86d776d225_r.jpg&&&/figure&&p&&/p&&figure&&img src=&https://pic1.zhimg.com/v2-abd42bbb61ee_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&558& data-rawheight=&315& class=&origin_image zh-lightbox-thumb& width=&558& data-original=&https://pic1.zhimg.com/v2-abd42bbb61ee_r.jpg&&&/figure&&p&作为一名久经片场的老司机,早就想写一些探讨驾驶技术的文章。这篇就介绍利用生成式对抗网络(GAN)的两个基本驾驶技能:&br&&/p&&p&1) 去除(爱情)动作片中的马赛克&/p&&p&2) 给(爱情)动作片中的女孩穿(tuo)衣服&/p&&p&&br&&/p&&h2&生成式模型&/h2&&p&上一篇《&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&用GAN生成二维样本的小例子&/a&》中已经简单介绍了GAN,这篇再简要回顾一下生成式模型,算是补全一个来龙去脉。&/p&&p&生成模型就是能够产生指定分布数据的模型,常见的生成式模型一般都会有一个用于产生样本的简单分布。例如一个均匀分布,根据要生成分布的概率密度函数,进行建模,让均匀分布中的样本经过变换得到指定分布的样本,这就可以算是最简单的生成式模型。比如下面例子:&/p&&figure&&img src=&https://pic1.zhimg.com/v2-d11b5fb26d3cc8e942f841bafe010cd8_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1021& data-rawheight=&443& class=&origin_image zh-lightbox-thumb& width=&1021& data-original=&https://pic1.zhimg.com/v2-d11b5fb26d3cc8e942f841bafe010cd8_r.jpg&&&/figure&&p&图中左边是一个自定义的概率密度函数,右边是相应的1w个样本的直方图,自定义分布和生成这些样本的代码如下:&br&&/p&&div class=&highlight&&&pre&&code class=&language-python&&&span&&/span&&span class=&kn&&from&/span& &span class=&nn&&functools&/span& &span class=&kn&&import&/span& &span class=&n&&partial&/span&
&span class=&kn&&import&/span& &span class=&nn&&numpy&/span&
&span class=&kn&&from&/span& &span class=&nn&&matplotlib&/span& &span class=&kn&&import&/span& &span class=&n&&pyplot&/span&
&span class=&c1&&# Define a PDF&/span&
&span class=&n&&x_samples&/span& &span class=&o&&=&/span& &span class=&n&&numpy&/span&&span class=&o&&.&/span&&span class=&n&&arange&/span&&span class=&p&&(&/span&&span class=&o&&-&/span&&span class=&mi&&3&/span&&span class=&p&&,&/span& &span class=&mf&&3.01&/span&&span class=&p&&,&/span& &span class=&mf&&0.01&/span&&span class=&p&&)&/span&
&span class=&n&&PDF&/span& &span class=&o&&=&/span& &span class=&n&&numpy&/span&&span class=&o&&.&/span&&span class=&n&&empty&/span&&span class=&p&&(&/span&&span class=&n&&x_samples&/span&&span class=&o&&.&/span&&span class=&n&&shape&/span&&span class=&p&&)&/span&
&span class=&n&&PDF&/span&&span class=&p&&[&/span&&span class=&n&&x_samples&/span& &span class=&o&&&&/span& &span class=&mi&&0&/span&&span class=&p&&]&/span& &span class=&o&&=&/span& &span class=&n&&numpy&/span&&span class=&o&&.&/span&&span class=&n&&round&/span&&span class=&p&&(&/span&&span class=&n&&x_samples&/span&&span class=&p&&[&/span&&span class=&n&&x_samples&/span& &span class=&o&&&&/span& &span class=&mi&&0&/span&&span class=&p&&]&/span& &span class=&o&&+&/span& &span class=&mf&&3.5&/span&&span class=&p&&)&/span& &span class=&o&&/&/span& &span class=&mi&&3&/span&
&span class=&n&&PDF&/span&&span class=&p&&[&/span&&span class=&n&&x_samples&/span& &span class=&o&&&=&/span& &span class=&mi&&0&/span&&span class=&p&&]&/span& &span class=&o&&=&/span& &span class=&mf&&0.5&/span& &span class=&o&&*&/span& &span class=&n&&numpy&/span&&span class=&o&&.&/span&&span class=&n&&cos&/span&&span class=&p&&(&/span&&span class=&n&&numpy&/span&&span class=&o&&.&/span&&span class=&n&&pi&/span& &span class=&o&&*&/span& &span class=&n&&x_samples&/span&&span class=&p&&[&/span&&span class=&n&&x_samples&/span& &span class=&o&&&=&/span& &span class=&mi&&0&/span&&span class=&p&&])&/span& &span class=&o&&+&/span& &span class=&mf&&0.5&/span&
&span class=&n&&PDF&/span& &span class=&o&&/=&/span& &span class=&n&&numpy&/span&&span class=&o&&.&/span&&span class=&n&&sum&/span&&span class=&p&&(&/span&&span class=&n&&PDF&/span&&span class=&p&&)&/span&
&span class=&c1&&# Calculate approximated CDF&/span&
&span class=&n&&CDF&/span& &span class=&o&&=&/span& &span class=&n&&numpy&/span&&span class=&o&&.&/span&&span class=&n&&empty&/span&&span class=&p&&(&/span&&span class=&n&&PDF&/span&&span class=&o&&.&/span&&span class=&n&&shape&/span&&span class=&p&&)&/span&
&span class=&n&&cumulated&/span& &span class=&o&&=&/span& &span class=&mi&&0&/span&
&span class=&k&&for&/span& &span class=&n&&i&/span& &span class=&ow&&in&/span& &span class=&nb&&range&/span&&span class=&p&&(&/span&&span class=&n&&CDF&/span&&span class=&o&&.&/span&&span class=&n&&shape&/span&&span class=&p&&[&/span&&span class=&mi&&0&/span&&span class=&p&&]):&/span&
&span class=&n&&cumulated&/span& &span class=&o&&+=&/span& &span class=&n&&PDF&/span&&span class=&p&&[&/span&&span class=&n&&i&/span&&span class=&p&&]&/span&
&span class=&n&&CDF&/span&&span class=&p&&[&/span&&span class=&n&&i&/span&&span class=&p&&]&/span& &span class=&o&&=&/span& &span class=&n&&cumulated&/span&
&span class=&c1&&# Generate samples&/span&
&span class=&n&&generate&/span& &span class=&o&&=&/span& &span class=&n&&partial&/span&&span class=&p&&(&/span&&span class=&n&&numpy&/span&&span class=&o&&.&/span&&span class=&n&&interp&/span&&span class=&p&&,&/span& &span class=&n&&xp&/span&&span class=&o&&=&/span&&span class=&n&&CDF&/span&&span class=&p&&,&/span& &span class=&n&&fp&/span&&span class=&o&&=&/span&&span class=&n&&x_samples&/span&&span class=&p&&)&/span&
&span class=&n&&u_rv&/span& &span class=&o&&=&/span& &span class=&n&&numpy&/span&&span class=&o&&.&/span&&span class=&n&&random&/span&&span class=&o&&.&/span&&span class=&n&&random&/span&&span class=&p&&(&/span&&span class=&mi&&10000&/span&&span class=&p&&)&/span&
&span class=&n&&x&/span& &span class=&o&&=&/span& &span class=&n&&generate&/span&&span class=&p&&(&/span&&span class=&n&&u_rv&/span&&span class=&p&&)&/span&
&span class=&c1&&# Visualization&/span&
&span class=&n&&fig&/span&&span class=&p&&,&/span& &span class=&p&&(&/span&&span class=&n&&ax0&/span&&span class=&p&&,&/span& &span class=&n&&ax1&/span&&span class=&p&&)&/span& &span class=&o&&=&/span& &span class=&n&&pyplot&/span&&span class=&o&&.&/span&&span class=&n&&subplots&/span&&span class=&p&&(&/span&&span class=&n&&ncols&/span&&span class=&o&&=&/span&&span class=&mi&&2&/span&&span class=&p&&,&/span& &span class=&n&&figsize&/span&&span class=&o&&=&/span&&span class=&p&&(&/span&&span class=&mi&&9&/span&&span class=&p&&,&/span& &span class=&mi&&4&/span&&span class=&p&&))&/span&
&span class=&n&&ax0&/span&&span class=&o&&.&/span&&span class=&n&&plot&/span&&span class=&p&&(&/span&&span class=&n&&x_samples&/span&&span class=&p&&,&/span& &span class=&n&&PDF&/span&&span class=&p&&)&/span&
&span class=&n&&ax0&/span&&span class=&o&&.&/span&&span class=&n&&axis&/span&&span class=&p&&([&/span&&span class=&o&&-&/span&&span class=&mf&&3.5&/span&&span class=&p&&,&/span& &span class=&mf&&3.5&/span&&span class=&p&&,&/span& &span class=&mi&&0&/span&&span class=&p&&,&/span& &span class=&n&&numpy&/span&&span class=&o&&.&/span&&span class=&n&&max&/span&&span class=&p&&(&/span&&span class=&n&&PDF&/span&&span class=&p&&)&/span&&span class=&o&&*&/span&&span class=&mf&&1.1&/span&&span class=&p&&])&/span&
&span class=&n&&ax1&/span&&span class=&o&&.&/span&&span class=&n&&hist&/span&&span class=&p&&(&/span&&span class=&n&&x&/span&&span class=&p&&,&/span& &span class=&mi&&100&/span&&span class=&p&&)&/span&
&span class=&n&&pyplot&/span&&span class=&o&&.&/span&&span class=&n&&show&/span&&span class=&p&&()&/span&
&/code&&/pre&&/div&&p&对于一些简单的情况,我们会假设已知有模型可以很好的对分布进行建模,缺少的只是合适的参数。这时候很自然只要根据观测到的样本,学习参数让当前观测到的样本下的似然函数最大,这就是最大似然估计(&b&M&/b&aximum &b&L&/b&ikelihood &b&E&/b&stimation):&br&&/p&&p&&img src=&https://www.zhihu.com/equation?tex=%5Chat%7B%5Ctheta%7D%3D%5Coperatorname%2A%7Bargmax%7D_%7B%5Ctheta%7D+P%28%5Cbm%7Bx%7D%7C%5Ctheta%29+%3D+%5Coperatorname%2A%7Bargmax%7D_%7B%5Ctheta%7D+%5Cprod_%7Bi%3D1%7D%5E%7Bn%7DP%28x_i%7C%5Ctheta%29+& alt=&\hat{\theta}=\operatorname*{argmax}_{\theta} P(\bm{x}|\theta) = \operatorname*{argmax}_{\theta} \prod_{i=1}^{n}P(x_i|\theta) & eeimg=&1&&&/p&&p&MLE是一个最基本的思路,实践中用得很多的还有KL散度(Kullback–Leibler divergence),假设真实分布是P,采样分布是Q,则KL散度为:&/p&&p&&img src=&https://www.zhihu.com/equation?tex=D_%7BKL%7D%28P%7C%7CQ%29%3D%5Csum_%7Bx+%5Cin+%5COmega%7DP%28%7Bx%7D%29%5Clog%5Cfrac%7BP%28x%29%7D%7BQ%28x%29%7D+& alt=&D_{KL}(P||Q)=\sum_{x \in \Omega}P({x})\log\frac{P(x)}{Q(x)} & eeimg=&1&&&/p&&p&从公式也能看出来,KL散度描述的是两个分布的差异程度。换个角度来看,让产生的样本和原始分布接近,也就是要让这俩的差异减小,所以最小化KL散度就等同于MLE。从公式上来看的话,我们考虑把公式具体展开一下:&/p&&p&&br&&/p&&p&&img src=&https://www.zhihu.com/equation?tex=%5Cbegin%7Balign%7D+D_%7BKL%7D%28P%7C%7CQ%29+%26%3D%5Csum_%7Bx+%5Cin+%5COmega%7DP%28%7Bx%7D%29%5Clog%5Cfrac%7BP%28x%29%7D%7BQ%28x%29%7D+%5C%5C+%26+%3D-%5Csum_%7Bx%5Cin%5COmega%7DP%28%7Bx%7D%29%5Clog%7BQ%28x%29%7D+%2B%5Csum_%7Bx%5Cin%5COmega%7DP%28%7Bx%7D%29%5Clog%7BP%28x%29%7D+%5C%5C+%26+%3D-%5Csum_%7Bx%5Cin%5COmega%7DP%28%7Bx%7D%29%5Clog%7BQ%28x%29%7D+%2BH%28P%29+%5Cend%7Balign%7D& alt=&\begin{align} D_{KL}(P||Q) &=\sum_{x \in \Omega}P({x})\log\frac{P(x)}{Q(x)} \\ & =-\sum_{x\in\Omega}P({x})\log{Q(x)} +\sum_{x\in\Omega}P({x})\log{P(x)} \\ & =-\sum_{x\in\Omega}P({x})\log{Q(x)} +H(P) \end{align}& eeimg=&1&&&/p&&p&公式的第二项就是熵,先不管这项,用H(P)表示。接下来考虑一个小trick:从Q中抽样n个样本&img src=&https://www.zhihu.com/equation?tex=%7Bx_1%2Cx_2%2C...%2Cx_n%7D& alt=&{x_1,x_2,...,x_n}& eeimg=&1&&,来估算P(x)的经验值(empirical density function):&br&&/p&&p&&img src=&https://www.zhihu.com/equation?tex=%5Chat%7BP%7D%28x%29%3D%5Cfrac+1+n+%5Csum_%7Bi%3D1%7D%5En+%5Cdelta%28x_i-x%29& alt=&\hat{P}(x)=\frac 1 n \sum_{i=1}^n \delta(x_i-x)& eeimg=&1&&&/p&&p&其中&img src=&https://www.zhihu.com/equation?tex=%5Cdelta%28%5Ccdot%29& alt=&\delta(\cdot)& eeimg=&1&&是狄拉克&img src=&https://www.zhihu.com/equation?tex=%5Cdelta& alt=&\delta& eeimg=&1&&函数,把这项替换到上面公式的P(x):&/p&&p&&br&&/p&&p&&img s

我要回帖

更多关于 r画马赛克拼图 的文章

 

随机推荐