显示标签为“人工智能”的博文。显示所有博文
显示标签为“人工智能”的博文。显示所有博文

2020年9月27日星期日

不要小看树模型

选自towardsdatascience
作者:Andre Ye
机器之心编译

编辑:陈萍
树模型和神经网络,像一枚硬币的两面。在某些情况下,树模型的性能甚至优于神经网络。
由于神经网络的复杂性,它们常常被认为是解决所有机器学习问题的「圣杯」。而另一方面,基于树的方法并未得到同等重视,主要原因在于这类算法看起来很简单。然而,这两种算法看似不同,却像一枚硬币的正反面,都很重要。
树模型 VS 神经网络
基于树的方法通常优于神经网络。本质上,将基于树的方法和基于神经网络的方法放在同一个类别中是因为,它们都通过逐步解构来处理问题,而不是像支持向量机或 Logistic 回归那样通过复杂边界来分割整个数据集。
很明显,基于树的方法沿着不同的特征逐步分割特征空间,以优化信息增益。不那么明显的是,神经网络也以类似的方式处理任务。每个神经元监视特征空间的一个特定部分(存在多种重叠)。当输入进入该空间时,某些神经元就会被激活。
神经网络以概率的视角看待这种逐段模型拟合 (piece-by-piece model fitting),而基于树的方法则采用确定性的视角。不管怎样,这两者的性能都依赖于模型的深度,因为它们的组件与特征空间的各个部分存在关联。
包含太多组件的模型(对于树模型而言是节点,对于神经网络则是神经元)会过拟合,而组件太少的模型根本无法给出有意义的预测。(二者最开始都是记忆数据点,而不是学习泛化。)
要想更直观地了解神经网络是如何分割特征空间的,可阅读这篇介绍通用近似定理的文章:https://medium.com/analytics-vidhya/you-dont-understand-neural-networks-until-you-understand-the-universal-approximation-theory-85b3e7677126。
虽然决策树有许多强大的变体,如随机森林、梯度提升、AdaBoost 和深度森林,但一般来说,基于树的方法本质上是神经网络的简化版本。
  • 基于树的方法通过垂直线和水平线逐段解决问题,以最小化熵(优化器和损失)。神经网络通过激活函数来逐段解决问题。
  • 基于树的方法是确定性的,而不是概率性的。这带来了一些不错的简化,如自动特征选择。
  • 决策树中被激活的条件节点类似于神经网络中被激活的神经元(信息流)。
  • 神经网络通过拟合参数对输入进行变换,间接指导后续神经元的激活。决策树则显式地拟合参数来指导信息流。(这是确定性与概率性相对应的结果。)
信息在两个模型中的流动相似,只是在树模型中的流动方式更简单。
树模型的 1 和 0 选择 VS 神经网络的概率选择
当然,这是一个抽象的结论,甚至可能是有争议的。诚然,建立这种联系有许多障碍。不管怎样,这是理解基于树的方法何时以及为什么优于神经网络的重要部分。
对于决策树而言,处理表格或表格形式的结构化数据是很自然的。大多数人都同意用神经网络执行表格数据的回归和预测属于大材小用,所以这里做了一些简化。选择 1 和 0,而不是概率,是这两种算法之间差异的主要根源。因此,基于树的方法可成功应用于不需要概率的情况,如结构化数据。
例如,基于树的方法在 MNIST 数据集上表现出很好的性能,因为每个数字都有几个基本特征。不需要计算概率,这个问题也不是很复杂,这就是为什么设计良好的树集成模型性能可以媲美现代卷积神经网络,甚至更好。
通常,人们倾向于说「基于树的方法只是记住了规则」,这种说法是对的。神经网络也是一样,只不过它能记住更复杂的、基于概率的规则。神经网络并非显式地对 x>3 这样的条件给出真 / 假的预测,而是将输入放大到一个很高的值,从而得到 sigmoid 值 1 或生成连续表达式。
另一方面,由于神经网络非常复杂,因此使用它们可以做很多事情。卷积层和循环层都是神经网络的杰出变体,因为它们处理的数据往往需要概率计算的细微差别。
很少有图像可以用 1 和 0 建模。决策树值不能处理具有许多中间值(例如 0.5)的数据集,这就是它在 MNIST 数据集上表现很好的原因,在 MNIST 中,像素值几乎都是黑色或白色,但其他数据集的像素值不是(例如 ImageNet)。类似地,文本有太多的信息和太多的异常,无法用确定性的术语来表达。
这也是神经网络主要用于这些领域的原因,也是神经网络研究在早期(21 世纪初之前)停滞不前的原因,当时无法获得大量图像和文本数据。神经网络的其他常见用途仅限于大规模预测,比如 YouTube 视频推荐算法,其规模非常大,必须用到概率。
任何公司的数据科学团队可能都会使用基于树的模型,而不是神经网络,除非他们正在建造一个重型应用,比如模糊 Zoom 视频的背景。但在日常业务分类任务上,基于树的方法因其确定性特质,使这些任务变得轻量级,其方法与神经网络相同。
在许多实际情况下,确定性建模比概率建模更自然。例如,预测用户是否从某电商网站购买一样商品,这时树模型是很好的选择,因为用户天然地遵循基于规则的决策过程。用户的决策过程可能看起来像这样:
  1. 我以前在这个平台上有过愉快的购物经历吗?如果有,继续。
  2. 我现在需要这件商品吗?(例如,冬天我应该买太阳镜和泳裤吗?)如果是,继续。
  3. 根据我的用户统计信息,这是我有兴趣购买的产品吗?如果是,继续。
  4. 这个东西太贵吗?如果没有,继续。
  5. 其他顾客对这个产品的评价是否足够高,让我可以放心地购买它?如果是,继续。
一般来说,人类遵循基于规则和结构化的决策过程。在这些情况下,概率建模是不必要的。
结论
  • 最好将基于树的方法视为神经网络的缩小版本,以更简单的方式进行特征分类、优化、信息流传递等。
  • 基于树的方法和神经网络方法在用途的主要区别在于确定性(0/1)与概率性数据结构。使用确定性模型可以更好地对结构化(表格)数据进行建模。
  • 不要低估树方法的威力。
参考链接:https://ift.tt/3hgESBl
如何根据任务需求搭配恰当类型的数据库?
在AWS推出的白皮书《进入专用数据库时代》中,介绍了8种数据库类型:关系、键值、文档、内存中、关系图、时间序列、分类账、领域宽列,并逐一分析了每种类型的优势、挑战与主要使用案例。
点击阅读原文识别二维码,申请免费获取白皮书。
© THE END 
转载请联系本公众号获得授权
投稿或寻求报道:content@jiqizhixin.com
继续阅读


source http://posts.careerengine.us/p/5f716e10e8df4952422eea7d

JetBrains 2020 Java调查报告:中国开发者使用比例最高,Java 8最受欢迎

选自JetBrains Blog
作者Valeriia Karpenko
机器之心编译
编辑:杜伟、陈萍
Java 自推出以来,一直深受专业开发者的喜爱,成为一种不可或缺的编程语言。在即将结束的 2020 年里,Java 语言处于一种怎样的发展状态呢?近日,JetBrains 撰文从 Java 开发者地域分布、行业分布以及 Java 工具分析等几个视角全方位地分析了 Java 语言的开发现状。
Java 语言于 1995 年由 Oracle 公司开发,距今已有 25 年的时间了。Java 是一种广泛使用的计算机编程语言,拥有跨平台、面向对象、泛型编程等特性,广泛应用于企业级 Web 应用开发和移动应用开发。在众多编程语言中,Java 语言始终保持了强劲的发展势头。
今年 7 月份,IEEE 发布了 2020 年度编程语言排行榜,Java 位列整体榜单第二。此外,在开源项目最受欢迎和工作环境中需求最大的编程语言分榜单中,Java 也分列二、三名。
目前,Java 已经于 9 月 15 日更新了 15 版本。用户或许想要深入了解 Java 当前的开发状况,所以捷克软件开发公司、Java 编程语言开发撰写时所用集成开发环境 IntelliJ IDEA 的创建者 JetBrains 撰文详细介绍了 Java 的发展现状,包括 Java 使用地域分布、Java 行业分布、Java 工具分析等。
需要指出的是,本文中 Java 语言各项指标的调研结果基于 JetBrains 更早之前发布的《The State of Developer Ecosystem Survey 2018/2020》,想要了解详情的读者可以查阅原始链接。
  • 2018 年开发者生态系统调查报告地址:https://ift.tt/2lyDfED
  • 2020 年开发者生态系统调查报告地址:https://ift.tt/37gTrBu
接下来详细解读 2020 年 Java 语言的发展现状。
Java 开发者地域分布:集中在亚洲,中韩比例最高
很多人会问:「Java 开发者最多的地区在哪里,又有多少人呢?」。JetBrains 数据分析显示, 当前全世界大约有 520 万名专业开发者使用 Java 作为主要语言。但如果把主要使用其他编程语言但同时也会使用 Java 的专业开发者计算在内,这个数字可能会接近 680 万。
Java 开发者最集中的区域是亚洲,大约有 250 万开发者使用 Java 作为他们的主要语言。北美和欧洲的数字远不及亚洲。你可能会问:「这是为什么呢?」。所以,为了更进一步弄清楚这些数据产生的原因,JetBrains 研究了 Java 开发者最多的各个国家,然后调查了为什么这些国家在专业编程开发中特别喜欢 Java 而不是其他语言。
下图显示了每个国家使用 Java 作为主要语言的开发者百分比(用于收集此数据的受访者最多可以选择 3 种主要语言)。其中,中国和韩国使用 Java 的比例最高,分别为 51% 和 50%。数据主要来自 2020 年的调查报告。
Java 在专业开发者中的使用情况
2020 年的数据显示,超过三分之一的专业开发者使用 Java 作为他们的主要语言,并且 Java 在专业开发者心目中仍然是仅次于 JavaScript 的第二种主要语言。
使用 Java 语言开发的软件类型
下图展示了使用 Java 语言开发的软件类型,包括 web 服务、实用工具(Utility )、数据库等,其中在 web 服务中最流行使用 Java 语言,占比 52%。数据主要来自 2020 年调查报告。
使用 Java 语言最多的行业
现在清楚了为何这么多专业开发者使用 Java,Java 语言又在哪些行业中广泛使用呢?
2020 年的数据显示,Java 程序员主要分布在 IT 行业(42%)、金融以及金融科技(44%),但这并不意味着 Java 在其他行业没有使用。
Java 工具
Java 版本受欢迎程度
2020 年的数据显示,Java 8 仍然是最流行的版本。75% 的专业开发人员使用 Java 8 作为其主要编程语言。下图显示了 2020 年 Java 各个版本的受欢迎程度。可以清楚地看到,Java 8 的受欢迎程度远远领先于其他版本。
Java 流行的应用服务器
根据 2018 和 2020 年的数据显示,在过去的 3 年里,Apache Tomcat 一直是最受欢迎的应用服务器,而 JBoss EAP 和 WildFly 的使用量则减少了一半。
Top 5 web 框架
2018 年的数据显示,Spring Boot 和 Spring MVC 一样流行,而 2020 年的数据显示 Spring Boot 更加流行。数据来自所有使用 Java 作为主要语言的开发者。由下图可知,2020 年 Top 5 的 web 框架依次为 Spring Boot、Spring MVC、JSF、Struts 2 和 Strut 1。
Top-5 JVM Profiler
2020 年的数据显示, 24% 的用户使用 VisualVM ,其他用户使用 JProfiler、Java Mission Control、NetBeans profiler 和 YourKit。数据来自所有使用 Java 作为主要语言的开发者。
Top-5 IDE / 编辑器
根据 2018 年和 2020 年的数据显示,IntelliJ IDEA 的使用量从 2018 年的 55% 增加到 2020 年的 72%,而 Eclipse or Eclipse-based、Android Studio、VS Code 以及 NetBeans 使用量相应减少了。
与 Java 相关的其他主题
讨论最多的 Java 工具和其他语言
在 Stack Overflow 等 IT 社区中常常谈到 Java。JetBrains 从 stack overflow 社区的问答版本中提取数据,从而找出出现最多的「Java」标签。结果如下图所示,纵轴表示提及 Java 的标签,横轴表示标签出现的总数。
Java 社区的热门话题
以下是 Java 用户在 Reddit 上讨论最多的主题,排名第一的问题是:现在学习 Java 语言是一个好的选择吗?(Is Java a good language to learn today?)
原文链接:https://ift.tt/2RNA2Bf
如何根据任务需求搭配恰当类型的数据库?
在AWS推出的白皮书《进入专用数据库时代》中,介绍了8种数据库类型:关系、键值、文档、内存中、关系图、时间序列、分类账、领域宽列,并逐一分析了每种类型的优势、挑战与主要使用案例。
点击阅读原文识别二维码,申请免费获取白皮书。
© THE END 
转载请联系本公众号获得授权
投稿或寻求报道:content@jiqizhixin.com
继续阅读


source http://posts.careerengine.us/p/5f716dfe256d7951f59b8c49

毕业一年多被裁,没有计算机文凭,我在两个月内搞定4份Offer,且收入翻倍

选自towardsdatascience
作者Emma Ding
机器之心编译
机器之心编辑部
裁员往往来得猝不及防,被重新丢回求职市场才发现自己还不具备竞争优势,这是很多人近期面临的窘境。但两个月拿到四份数据科学 Offer 的 Emma Ding 告诉我们,只要有针对性地认真准备,逆风翻盘也不是不可能。
遭上家公司辞退,花两个月拿到四个 offer,还实现收入翻倍,这很难吗?现任 Airbnb 软件工程师的 Emma Ding 介绍了她的经验,说不定可以帮助到近期正在找工作的人。
如果你在疫情期间被裁员或者你是数据科学领域的求职者,你一定能从这篇文章的某些部分找到共鸣。以下是 Emma Ding 的自述:
被解雇
2018 年 12 月,我被告知自己将在 2019 年 1 月被解雇。而就在三个月前,公司的工程副总裁在给 People Success 主管的信中表示,我是公司表现最好的人之一,并主张给我涨薪。这使得我的工资提高了 33%。正因如此,我在工作方面变得更有动力,渴望在新的项目上获得更大的进步。
我以为:「公司的未来以及我自己的前途一片光明」。
但就在这时,一个消息如晴天霹雳:「受公司缩减成本计划的影响,我将在 1 月 15 日被辞退。」
被迫寻找新工作是一件很艰难的事情。浏览了市场上的数据科学岗之后,我很快意识到我与别人在知识方面的差距。我之前在 B2B 初创公司所做的工作仅涉及入门水平的数据工程和机器学习。这与许多工作要求毫无关联,如产品嗅觉(product sense)、SQL、统计等。我具备一些基础知识,但不知道如何补充更高级的技能。
但是,还有比这更严峻的问题:我去哪儿找面试机会?我在初创公司只有一年半的工作经验,还没有统计学或计算机科学相关的学位。
随之而来的是一系列问题:失去签证身份之前找不到工作怎么办?找到新工作之前出现经济下行怎么办?尽管有那么多忧虑,但除了找到一份新工作,我别无选择。
准备搜索职位
面对艰巨的求职任务,我需要一些信息来决定下一步做什么。经过研究,我发现市场上一半以上的数据科学职位是产品驱动职位(「产品分析」),其余的与建模或数据工程有关。我还注意到,非产品分析的职位往往要求更高。例如,大多数建模职位需要博士学位,工程职位需要计算机科学背景。显然,不同职位的需求差异很大,因此要有针对性地进行准备。
了解到这些之后,我做出了一个重要的决定:为所有类型的职位做准备任务量太大,而且很可能效率不高,我需要专注于一类职位
我选择了产品分析,因为根据我的背景和经验,我更有可能获得这类职位的面试机会。当然,并不是每个数据科学领域的人都和我有一样的背景和经验,因此我总结了在大公司中这三类数据科学职位的通用要求。这些信息为我节省了大量时间,我认为它对正在寻找数据科学工作的其他人也有用处。但在此我要补充说明一点,对于小型初创公司而言,面试的情况可能有所不同,或许需要将三类职位所需的知识结合起来。
产品分析(约占市场职位的 70%)
  • 要求:具备产品上线的实践经验、敏锐的商业头脑、优秀的 SQL 技能。
  • 示例:Airbnb 数据科学家(分析师方向)、Lyft 数据科学家、Facebook 数据科学家、Google 产品分析师。
建模(约占市场职位的 20%)
  • 要求:掌握机器学习知识(不仅包括如何使用机器学习,还包括基础数学和理论)、强大的编程能力。
  • 示例:Lyft 数据科学家(算法方向)、Airbnb 数据科学家(算法方向)、亚马逊应用科学家、Facebook 研究科学家。
数据工程(约占市场职位的 10%)
  • 要求:掌握数据工程技能的端到端数据科学家、了解分布式系统、会使用 MapReduce 和 Spark、有 Spark 的实践操作经验、强大的编程能力。
  • 示例:Airbnb 数据科学家(基础研究)、初创公司的数据科学家。
开始求职
在知道自己要被解雇时,我做的第一件事就是广泛并积极地寻找新职位。我用到了我所知道的所有求职平台,包括 GlassDoor、Indeed 和领英,还向认识的每个人寻求工作推荐机会。但是,当时正是年底,一直到 2019 年 1 月我都没有收到任何回应。
事实证明,被人举荐要比自己寻找职位效率高得多。在大约 50 个面试申请中,我只得到了 3 个面试机会,而在 18 个工作推荐中,我获得了 7 个面试机会。显然,总体来讲,我在求职市场上没有什么竞争力。
面试:概况
尽管每个公司的面试结构不同,但是大多数公司遵循以下流程:
  • 招聘人员首先会给你打个电话;
  • 1-2 轮电话面试(TPS)或 take-home assignment;
  • 4-5 小时的现场面试(onsite interview),通常包括 3-4 轮技术面和招聘经理进行的行为面试。
在我面试过的公司中,大约有一半(4/10)公司在 TPS 前给了一个 take-home assignment 或者用 take-home assignment 代替 TPS。实际上,take-home assignment 会花费很多精力。做完一个 8 小时的 take-home assignment,我至少要休息半天。因此,我需要尽力安排好面试时间。我做完一项 take-home assignment 后,第二天上午不会安排面试。
了解面试的基本结构能够帮求职者放松,并熟悉找工作的流程。
面试前
对于我来说,每一个面试机会都是非常重要的。我知道有些人可能会把面试看作一种学习的方式,比如通过刷面试经历来获取经验,然后通常是拿最后面的那几家公司的 Offer,但我认为不应该采取这种方法。
2017 年毕业时,我在 500 份求职申请后只得到了 4 份面试通知,2019 年我也不期望会有更多。因此我更加注重每一次面试准备,不会浪费任何机会。
被解雇的好处之一就是我能用全部精力来准备面试,每天我都会整理学习的内容。根据之前的面试经验,我感觉到更加深入的了解才能让自己在面试中给出更深刻的答案。尤其是,当你比平时更紧张更焦虑的时候,充分的知识储备才能让你收放自如。
在我描述自己经历的时候,不禁想到之前常听到的一个误解:没有真正的经验就不可能获得产品或实验的相关知识。这一点我是不同意的,我认为通过阅读、聆听、思考、总结也可以习得这些技能。毕竟这和学校的教学方式相同,而且随着我认识越来越多的数据科学家,我验证了这种方法是通用的,即便对于拥有多年深厚从业经验的人也是如此。面试的内容可能与你所做的事情无关,但你可以通过工作经验以外的方式来获得所需的知识。
那么你需要具备哪些基本知识呢?通常,在 TPS 期间会询问产品和 SQL 的问题。现场面试期间考察的问题包括产品嗅觉、SQL、数据统计、建模、行为,可能还有 presentation。
接下来的几小节总结了我在准备面试的过程中用到的资源。一般来说,GlassDoor 是了解公司特定问题的好资源。看到其中的问题之后,我既了解了公司的要求,也了解了自己和这些要求的差距。这样一来,我就能够制定计划来填补这些空白。
「六大科目」,各个击破
以下六个部分是我针对产品分析职位总结的面试准备要求。
产品嗅觉
作为一家创业公司的数据科学家,我主要负责开发和部署机器学习模型,同时写写 spark job。因此,我几乎没有任何产品相关的知识。GlassDoor 上有一些这方面的问题,比如「如何度量成功?」「如何通过当前用户的行为验证新特性?」看到这些抽象、开放的问题时,我感觉毫无头绪。
为了学习产品相关的知识,我采用了最基本的阅读、总结策略,使用了下面列出的资源。这些阅读材料帮我构建起了自己的产品知识体系。最后,我总结出了一个回答所有类型产品问题的结构化方法。
为了测试和练习,我写下了有关产品嗅觉问题的答案,然后大声说出这些答案并录音,最后自己听录音改进答案。
以下是一些参考资源:
  • Stellar Peers:https://ift.tt/33aR3Mh
  • Gayle Laakmann McDowell 和 Jackie Bavaro 写的《Cracking the PM Interview: How to Land a Product Manager Job in Technology》
  • Lewis C. Lin 写的《Decode and Conquer》
  • Victoria Cheng 写的《Case Interview Secrets》
SQL
我第一次做 SQL TPS 的时候失败了,那还是一家我感兴趣的公司。之后,我研究了一下 SQL 问题,并在一天之内完成了我原来要花一周才能完成的问题,真是熟能生巧。
以下是参考资料:
  • Leetcode 数据库问题:https://ift.tt/3czGCF5
  • HackRank SQL 问题:https://ift.tt/2Gd0b9Z
统计学和概率论 
为了回答这类问题,我温习了基本的统计学和概率论知识,还做了一些编程练习。虽然这两个方面内容都很多,但产品数据科学的面试不会太难。以下资源可供参考:
  • 可汗学院的《统计学和概率论》入门课程:https://ift.tt/2dRZ4yh
  • 一本统计学方面的电子书:https://ift.tt/1tblibu
  • 哈佛的《Statistics 110: Probability》课程,介绍了现实中的概率问题:https://www.youtube.com/playlist?list=PL2SOU6wwxB0uwwH80KTQ6ht66KWxbzTIo
  • 如果你不喜欢听课,但喜欢阅读,可以看一下 PennState 对于概率论的系统介绍,里面有很多例子:https://ift.tt/2S1zrMk
  • 我还通过「10 Days of Statistics」在 HackRank 上练习编程,以此来巩固自己的理解:https://ift.tt/2E6b0Wa
  • 有时候, 统计学面试中会问到 A/B 测试问题。优达学城有一门课(https://www.udacity.com/course/ab-testing--ud257)覆盖了 A/B 测试的基本问题,Exp Platform 有一个关于这个主题的更简明的课程:https://ift.tt/36pNdRx
机器学习
由于没有计算机科学专业的学位,我在找工作的时候对机器学习的了解非常有限。我在上一份工作中上过一些课程,面试之前我复习了一下自己的笔记。然而,在建模问题越来越多的今天,产品数据科学家岗位面试中遇到的问题还是集中于如何应用这些模型,而不是模型背后的数学和理论。这里还有一些有用的资源帮你提升机器学习技能:
  • Andreas Mueller 的免费应用机器学习课程:https://www.youtube.com/watch?v=d79mzijMAw0
  • 吴恩达在 Coursera 上的机器学习课:https://ift.tt/2HDsFdR
  • 优达学城《机器学习工程纳米学位》:https://ift.tt/2ru3VZP
Presentation
一些公司要求应聘者展示一个 take-home assignment 或你最引以为豪的一个项目,在这一环节中,你要让自己的展示有趣且具有挑战性。
那要怎么做到这一点呢?我的建议是考虑所有细节,如高级目标和成功的度量标准,从 ETL 到建模实现细节,再到部署、监控和改进。这些小事加起来要比一个大的 idea 更有说服力。下面有几个值得反复思考的问题,有助于你做一个理想的 presentation:
  • 你这个项目的目标是什么?用什么指标来衡量成功与否?
  • 开始这个项目的时候,你是怎么做决定的?
  • 你如何知道用户能否从项目中受益?
  • 你是如何做测试的?你的 A/B 测试是怎么设计的?
  • 项目中最大的挑战是什么?
为了让我的 presentation 更加有趣,我通常会分享项目中一些有趣的发现以及其中最大的挑战。但要想做一个真正吸引人的 presentation,你需要练习,一遍又一遍地大声练习。我在家人面前练了一下,以确保自己掌握了材料。如果你能吸引到你认识的人,那个必须坐下来听你说的面试官也逃不过你的手掌心。
行为性问题
虽然准备技术面试问题很容易,但不要忘了,行为性问题也同样重要。我面过的所有公司至少都有一轮现场的行为面试,其中的问题通常可以分为三大类:
  • 你为什么选择我们?你认为一份工作中最重要的是什么?
  • 介绍你自己 / 你为什么要放弃当前的工作?
  • 你的职业生涯中最成功 / 失败或最具挑战性的事是什么?或者,请说出一个你解决冲突的例子或者你说服你的经理或 PM 的经历。
对于数据科学家岗位来说,行为性问题非常重要,所以一定要好好准备!了解一家公司的使命和核心价值观有助于你回答第一类问题。第二和第三类问题可以通过讲故事来回答——三个故事就足以回答所有的行为性问题。在进去面试之前,一定要确保你脑子里存了一些好故事。与产品性问题类似,我通过大声练习的方式进行准备,还自己录音自己听并不断调整答案。
现场面试百发百中的秘诀
现场面试的前一天通常是忙碌且压力山大的,我总是试图掌握更多的技术知识,同时还要查看统计学笔记,并思考回答产品问题时的框架。当然,和学校里一样,这样的突击准备并不总是有效,罗马也不是一天建成的。所以说,准备是很重要的,但这里还有一些规则需要特别注意:
  1. 在回答问题之前,先弄明白问题。听完提问后,用自己的语言重复一次问题,以确保你正确地理解了问题。这一点非常重要。
  2. 组织所有问题的答案。写下你思考过程中的要点,向面试官展示你在解决问题时有系统性思维,也有助于面试官对你进行评价。
  3. 即使不知道答案,也不要慌。如果你不熟悉这个领域也没关系,可以先做一些假设,然后询问这种假设是否合理。如果实在想不出任何答案,大脑一片空白,那也可以谈论一些与该类型问题相关的经验。
  4. 态度很重要。企业想要找的是愿意倾听并接受不同意见的人,如果想证明自己易于合作,就要保持谦逊、尊重他人,倾听并表达,为面试现场带来积极能量,并尽力舒畅地进行沟通。
  5. 提前调查该公司。熟悉它的产品,再设想如何改进其产品,以及用哪些指标来衡量这些产品的成功。阅读公司数据科学家的博客,了解其工作内容。提前调查有助于在面试中进行更加深入、顺畅的对话。
遵循以上规则之后,我得到了如下评价:
  • 用结构化的方式回答产品问题;
  • 谈吐有条理,深思熟虑;
  • 对公司产品表现出浓厚的兴趣,并提供了有价值的改进建议。
最后的谈判
收到口头 Offer 后,下一步就是和招聘方确定薪酬等条件,我的原则是「友好协商」。但是怎么做呢?
我推荐一份指南,Haseeb Qureshi 在这方面的经验给了我很重要的启示。薪酬的平均涨幅达到了 15%,最高时还达到了 25%。
在求职经历中,我总结出了以下几点:
  • 实践出真知;
  • 失败是生活的一部分,也是求职的一部分,别太在意;
  • 寻找一种有效的解压方法。
结语
在掉了 5 公斤体重和无数次流泪后,被解雇后两个月内我拿到了 4 个 Offer,其中三个来自我想都不敢想的公司:推特、Lyft 和 Airbnb(我最终加入的公司),另外一家是医疗领域初创公司。
在这两个月中,我共收到了 10 个面试邀请、4 个现场面试机会和 4 个工作 offer,现场面试的 Offer 概率达到了 100%。
Emma Ding 的求职时间线
我很幸运,在被解雇后得到了家人和朋友的大力支持,这对于寻找理想工作至关重要。
找工作本身也像是一份工作,好在一切都值得。
参考链接:
https://ift.tt/2RFdxhz
https://ift.tt/2irS4dw
AIWIN世界人工智能创新大赛——2021赛季「抗新冠助科研AI大赛」全球招募啦!
开放新冠开放研究数据集(Corvid-19 Open Research Dataset,简称 CORD-19)包含近 20 万篇有关冠状病毒学术论文的数据集。
如果你是个人,这里有高额的奖金、世界500强合作企业的实习和就业机会、个人技术的世界级展示和交流平台;
如果你是企业,这里有AI+医疗全生态对接资源、有面向全球的线上线下展示机会、有真实的AI场景需求对接通道。
识别图片二维码或者点击阅读原文,立刻报名参赛吧!

© THE END 
转载请联系本公众号获得授权
投稿或寻求报道:content@jiqizhixin.com
继续阅读


source http://posts.careerengine.us/p/5f716df596efc451d9dc7e29

2020年9月26日星期六

7 Papers & Radios | 华为诺亚端到端车道线检测新方法;网络表示学习综述

机器之心 & ArXiv Weekly Radiostation
参与:杜伟、楚航、罗若天
本周的重要论文包括华为诺亚方舟实验室联合中山大学提出的新型车道线检测方法,以及发表在《计算机科学》杂志上的网络表示学习综述。
  1. High-Resolution Deep Image Matting
  2. Equilibrium Finding for Large Adversarial Imperfect-Information Games
  3. Table2Charts: Learning Shared Representations for Recommending Charts on Multi-dimensional Data
  4. CurveLane-NAS: Unifying Lane-Sensitive Architecture Search and Adaptive Point Blending
  5. Transfer Learning in Deep Reinforcement Learning: A Survey
  6. Survey of Network Representation Learning
  7. Multi-Similarity Loss with General Pair Weighting for Deep Metric Learning
  8. ArXiv Weekly Radiostation:NLP、CV、ML 更多精选论文(附音频)
论文 1:High-Resolution Deep Image Matting
  • 作者:Haichao Yu、Ning Xu、Zilong Huang 等
  • 论文链接:https://ift.tt/2EBxK58
摘要:抠图是图像和视频编辑与合成的关键技术。通常,深度学习方法会以整个输入图像和相关的 trimap 作为输入,使用卷积神经网络来推断前景蒙版(alpha matte)。这种方法在图像抠图领域实现了 SOTA 结果。但是,由于硬件限制,这些方法在实际的抠图应用中可能会失败,因为现实世界中需要抠图的输入图像大多具备很高的分辨率。
近日,来自伊利诺伊大学香槟分校(UIUC)、Adobe 研究院和俄勒冈大学的研究者提出了一种名为 HDMatt 的新方法,这是首个处理高分辨率输入图像的深度学习抠图方法。大量实验表明了该方法的有效性及其对于高分辨率输入图像的必要性。
HDMatt 方法的整体框架。
CPC 模块的工作流程。
这些方法(包括 IndexNet 和 ContextNet)的实际效果对比。
推荐:HDMatt 方法在 Adobe Image Matting 和 AlphaMatting 基准上均实现了新的 SOTA 性能,并且在更真实的高分辨率图像上获得了优秀的效果。
论文 2:Equilibrium Finding for Large Adversarial Imperfect-Information Games
  • 作者:Noam Brown
  • 论文链接:https://ift.tt/2HDY9k9
摘要:本文作者 Noam Brown 现为 Facebook 人工智能实验室的研究科学家。这篇博士论文详述了大型对抗性不完美信息博弈中均衡计算的一系列进展。这些新技术使得 AI 智能体首次有可能在无限注扑克游戏中击败顶级职业玩家,而这正是几十年来 AI 和博弈论领域一直存在的重大挑战性难题。
推荐:这位大神曾创建了冷扑大师和 Pluribus,如今要博士毕业了!
论文 3:Table2Charts: Learning Shared Representations for Recommending Charts on Multi-dimensional Data
  • 作者:Mengyu Zhou、Qingtao Li、Yuejiang Li 等
  • 论文链接:https://ift.tt/3mNaZfG
摘要:为多维数据集创建图表(表格)是销售、人力资源、投资、工程、科研、教育等许多领域的常见应用。为了执行常规分析和发现见解,人们花费大量时间构建不同类型的图表来展示不同的观点。这个过程通常需要数据分析方面的专业知识和广泛的知识储备来创建适当的图表。有没有可能通过智能的方式来创建图表呢?
近日,由微软研究院、北京大学和清华大学共同发表了一篇论文,文中提出的新型图表推荐框架 Table2Charts 可以高效地解决创建图表问题。在具有 196000 个表和 306000 个图表的大型电子表格语料库中,该研究展示了 Table2Charts 可以学习表字段的共享表示,这样不同图表类型的任务就可以相互增强。
DQN 的模型架构。
评价结果。混合和迁移范式(Transfer)通常比单独训练(Lone)和仅混合模式(Mixed)效果更好。Transfer 的评价标准 R@1 超过了其他两种方法。
每个点代表一个字段,颜色代表其字段类型。图中可以清楚地看到通过嵌入学得的字段类型信息。

推荐:面对数据表时,很多人通常不清楚应该创建什么样的图表分析。在这种场景中,你需要一个智能助手,可以帮你更好的生成图表分析。
论文 4:CurveLane-NAS: Unifying Lane-Sensitive Architecture Search and Adaptive Point Blending
  • 作者:Hang Xu、Shaoju Wang、Xinyue Cai 等
  • 论文链接:https://ift.tt/36eKdXR
摘要:在本文中,来自华为诺亚方舟实验室和中山大学的研究者提出了一种端到端的车道线架构搜索框架,CurveLane-NAS 该框架旨在解决现阶段车道线检测模型计算量大且不大适宜落地的难题。
不同方法下的车道检测实测比较。
模型架构图。
网络架构搜索流程图。
推荐:实验表明,该框架在 CULane 等公开数据集上实现了新的 SOTA。
论文 5:Transfer Learning in Deep Reinforcement Learning: A Survey
  • 作者:Zhuangdi Zhu、Kaixiang Lin、Jiayu Zhou
  • 论文链接:https://ift.tt/30c1ttc
摘要:在本文中,来自密歇根州立大学的研究者对强化学习(RL)问题设置中的迁移学习进行了综述

他们回顾了强化学习领域中迁移学习的焦点问题,提供了当前最优技术的系统分类。研究者分析了这些方法的目标、方法论和应用,还从强化学习的角度探讨了迁移学习与其他相关主题的关系。最后探讨了强化学习中迁移学习的潜在挑战和未来发展方向。
本研究涵盖的主题。
策略迁移方法的比较。
任务之间(inter-task)映射方法的比较。
推荐:一作 Zhuangdi Zhu 为密歇根州立大学计算机科学与工程系博士生。
论文 6:Survey of Network Representation Learning
  • 作者:Ding Yu、Wei Hao、Pan Zhi-Song、Liu Xin
  • 论文链接:https://ift.tt/338H8Xz
摘要:网络是一系列节点和边的集合,通常表示成一个包含节点和边的图。许多复杂系统都以网络的形式来表示,如社交网络、生物网络和信息网络。为了使网络数据的处理变得简单有效,针对网络中节点的表示学习成为了近年来的研究热点。网络表示学习旨在为网络中的每个节点学习一个低维稠密的表示向量,进而可将得到的向量表示运用到常见的网络分析任务中,如节点聚类、节点分类和链路预测等。
然而,绝大多数真实网络节点都有丰富的属性信息,如社交网络中的用户资料和引文网络中的文本内容。网络的属性信息对网络表示具有重要的作用,当网络高度稀疏时,网络的属性信息是网络表示重要的辅助信息,有助于更好地学习网络表示。传统的邻接矩阵仅仅表示了边的信息,而无法加入节点的属性信息。网络表示不仅要保存网络的结构信息,还要保存网络的属性信息。此外,大多数真实世界网络都是动态变化的,这种变化包括网络节点的增加和减少,以及网络边的新建和消失。同时,与网络结构变化相似,网络中的属性也会随着时间的推移发生变化。
随着机器学习技术的发展,针对网络表示学习问题的研究成果层出不穷,文中将针对近年来的网络表示学习方法进行系统性的介绍和总结
DRNE 的框架。
DANE 框架图解。
DynGem 动态图嵌入模型。
推荐:本文在《计算机科学》(Computer Science)杂志上发表。
论文 7:Multi-Similarity Loss with General Pair Weighting for Deep Metric Learning
  • 作者:Xun Wang、Xintong Han、Weiling Huang 等
  • 论文链接:https://ift.tt/3kRZFgA
摘要:度量学习旨在学习一个嵌入空间,在这个空间中,相似样本的嵌入向量被拉近,不同样本的嵌入向量被推远。
在这篇论文中,来自码隆科技的研究者提出利用多相似度损失(Multi Similarity Loss)实现这一目标,并在公共基准数据集上得到了验证
多相似度损失的目标。
不同方法在 Cars-196 数据集上的结果比较。
嵌入大小(embedding size)对多相似度损失的影响。
推荐:该方法充分考虑了 batch 中整体距离分布的对比损失函数。
ArXiv Weekly Radiostation
机器之心联合由楚航、罗若天发起的ArXiv Weekly Radiostation,在 7 Papers 的基础上,精选本周更多重要论文,包括NLP、CV、ML领域各10篇精选,并提供音频形式的论文摘要简介,详情如下:
本周 10 篇 NLP 精选论文是:
1. Generation-Augmented Retrieval for Open-domain Question Answering.  (from Jianfeng Gao, Jiawei Han)
2. Hierarchical GPT with Congruent Transformers for Multi-Sentence Language Models.  (from Soo-Young Lee)
3. Lifelong Learning Dialogue Systems: Chatbots that Self-Learn On the Job.  (from Bing Liu)
4. SSMBA: Self-Supervised Manifold Based Data Augmentation for Improving Out-of-Domain Robustness.  (from Kyunghyun Cho)
5. Unsupervised Parallel Corpus Mining on Web Data.  (from Yiming Yang)
6. Language Generation with Multi-Hop Reasoning on Commonsense Knowledge Graph.  (from Minlie Huang)
7. Generating Commonsense Explanation by Extracting Bridge Concepts from Reasoning Paths.  (from Minlie Huang)
8. Task-Oriented Dialogue as Dataflow Synthesis.  (from Jason Eisner, Dan Roth)
9. Structured Attention for Unsupervised Dialogue Structure Induction.  (from Song-Chun Zhu)
10. RealToxicityPrompts: Evaluating Neural Toxic Degeneration in Language Models.  (from Noah A. Smith)
本周 10 篇 CV 精选论文是:
1. Synthetic Convolutional Features for Improved Semantic Segmentation.  (from Bernt Schiele)
2. PennSyn2Real: Training Object Recognition Models without Human Labeling.  (from Camillo J. Taylor, Vijay Kumar)
3. Progressive Semantic-Aware Style Transformation for Blind Face Restoration.  (from Lei Zhang)
4. 6-DoF Grasp Planning using Fast 3D Reconstruction and Grasp Quality CNN.  (from Harry Zhang)
5. Searching for Low-Bit Weights in Quantized Neural Networks.  (from Dacheng Tao)
6. Reinforcement Learning for Weakly Supervised Temporal Grounding of Natural Language in Untrimmed Videos.  (from Jie Wu)
7. Scene Graph to Image Generation with Contextualized Object Layout Refinement.  (from Lior Wolf)
8. Smartphone Camera De-identification while Preserving Biometric Utility.  (from Arun Ross)
9. Self-Supervised Learning of Non-Rigid Residual Flow and Ego-Motion.  (from Marc Pollefeys)
10. Dense Forecasting of Wildfire Smoke Particulate Matter Using Sparsity Invariant Convolutional Neural Networks.  (from Raymond Ng)
本周 10 篇 ML 精选论文是:
1. A Unifying Review of Deep and Shallow Anomaly Detection.  (from Thomas G. Dietterich, Klaus-Robert Müller)
2. Text Classification with Novelty Detection.  (from Bing Liu)
3. Uncertainty-aware Attention Graph Neural Network for Defending Adversarial Attacks.  (from Zheng Wang)
4. Tailoring: encoding inductive biases by optimizing unsupervised objectives at prediction time.  (from Tomas Lozano-Perez, Leslie Pack Kaelbling)
5. Federated Learning with Nesterov Accelerated Gradient Momentum Method.  (from Albert Y. Zomaya)
6. Improving Medical Annotation Quality to Decrease Labeling Burden Using Stratified Noisy Cross-Validation.  (from Jonathan Krause)
7. Online AUC Optimization for Sparse High-Dimensional Datasets.  (from Steven Skiena)
8. Neurocoder: Learning General-Purpose Computation Using Stored Neural Programs.  (from Svetha Venkatesh)
9. A Contraction Approach to Model-based Reinforcement Learning.  (from Peter J. Ramadge)
10. Revisiting Graph Convolutional Network on Semi-Supervised Node Classification from an Optimization Perspective.  (from Yuanqing Xia)
继续阅读


source http://posts.careerengine.us/p/5f701a119f30e771aa0eaaf8

20种小技巧,玩转Google Colab

选自amitness.com
作者:Amit Chaudhary
机器之心编译

编辑:陈萍
Google Colab 给广大的 AI 开发者提供了免费的 GPU,你可以在上面轻松地跑 Tensorflow、Pytorch 等深度学习框架。但关于 Colab 的使用技巧你又掌握了多少呢?这篇文章将介绍 20 种 Colab 使用技巧,帮你提高使用效率。
1. 便签本 Notebook
当我们在 colab 上尝试一些临时的东西时,我们会创建一堆杂乱、没有标题的 Notebook。
为了解决这个问题,你可以把以下链接加入书签:https://ift.tt/3j64nqA
这将打开一个特殊的 scratch notebook,并且你对该 notebook 所做的任何更改都不会保存到你的主目录中。
2. 单元计时
通常,我们手动计算一段代码的开始时间和结束时间之间的差值来衡量所花费的时间。Colab 提供了内置功能来执行此操作。在执行了一个单元(cell)之后,将鼠标悬停在单元运行图标上,你将获得代码执行时间的估计值。
3. 运行某个单元的一部分
你也可以运行某个单元的一部分,通过选择单元格并点击 Runtime 索引到 Run Selection 按钮或使用键盘快捷键 Ctrl + Shift + Enter。
4. Jupyter Notebook 快捷键
快捷键为编程带来了便利,但 Jupyter Notebook 中的快捷键不能直接在 Colab 中使用。不过,这里有一个关系映射表来解决这一问题。从中可以看出,你只需要在 Jupyter 的快捷键前面加上「Ctrl +M」就能在 Colab 中使用。此规则适用于大多数快捷键。
以下是一些特例,其快捷方式已完全更改或保持不变。
5. 跳转到类定义
与 IDE 相似,你可以通过按 Ctrl 键,然后单击一个类名来跳转到类定义。例如,在这里我们通过按 Ctrl 并单击 Dense 类名来查看 Keras 中 Dense 层的类定义。
6. 在 GitHub 中打开 Notebooks
Google Colab 团队提供了官方的 Chrome 扩展程序。使用 colab 时,可以直接在 GitHub 上打开 notebooks。
扩展程序下载地址:https://ift.tt/2FlZdrl
安装后,单击 GitHub notebook 的 colab 图标直接将其打开。
或者,你也可以手动打开 GitHub notebook,将 github.com 替换为 colab.research.google.com/github 即可。
https://github.com/fastai/course-v3/blob/master/nbs/dl1/00_notebook_tutorial.ipynb 
替换为
https://ift.tt/3695nqf
甚至更简单的方法是用 githubtocolab.com 替换 github.com。
https://github.com/fastai/course-v3/blob/master/nbs/dl1/00_notebook_tutorial.ipynb 
替换为
https://ift.tt/3i8xNmA
7. 从 Colab 运行 Flask 应用
使用 flask-ngrok 库(https://github.com/gstaff/flask-ngrok),你可以轻松地将运行在 colab 上的 Flask Web 应用程序转换为一个 demo 原型。
首先,你需要安装 flask 和 flask-ngrok。
!pip install flask-ngrok flask==0.12.2
然后,你只需要将「flask app」对象传递给「run_with_ngrok」函数,它将在启动服务器时公开 ngrok 端点。
from flask import Flaskfrom flask_ngrok import run_with_ngrokapp = Flask(__name__)run_with_ngrok(app)@app.route('/')def hello():return'Hello World!'if __name__ == '__main__': app.run()
8. 在 Tensorflow 版本之间切换
你可以很容易地在 Tensorflow 1 和 Tensorflow 2 之间切换。
要切换到 Tensorflow 1.15.2,请使用以下命令:
%tensorflow_version 1.x
要切换到 Tensorflow 2.2,请运行以下命令:
%tensorflow_version 2.x
你需要重新启动才能生效。出于性能考虑,Colab 建议使用预安装的 Tensorflow 版本,而不是用 pip 命令安装它。
9. Tensorboard 集成
Colab 还提供了一个命令,可以直接从 notebook 使用 Tensorboard。你只需要使用 --logdir 设置日志目录位置。
你可以从官方 notebook 学到它的使用方法:https://colab.research.google.com/github/tensorflow/tensorboard/blob/master/docs/tensorboard_in_notebooks.ipynb。
%load_ext tensorboard%tensorboard --logdir logs
10. 查看资源限制
Colab 为他们的免费版本和专业版本提供了以下规格。根据自己的情况,如果你需要更好的运行时间、GPU 和内存,你可以以每月 10 美元的价格切换到专业版本。
可以通过运行以下命令查看你已经被分配到的 GPU:
!nvidia-smi
有关 CPU 的信息,可以运行此命令:
!cat /proc/cpuinfo
此外,你还可以通过运行以下命令查看 RAM 容量
import psutilram_gb = psutil.virtual_memory().total / 1e9print(ram_gb)
11. 使用交互式 shell
Colab 中没有内置的交互终端。但是可以使用 bash 命令以交互方式试用 shell 命令。只需运行此命令,你将获得交互式输入。
!bash
现在,你可以在给定的输入框中运行任何 shell 命令。
要退出 shell,只需在输入框中键入 exit。
12. 当前的内存和存储使用情况
Colab 提供了 RAM 和磁盘使用情况的指示器。如果将鼠标悬停在指示器上,将弹出一个窗口,其中包含当前内存和存储使用情况和总容量。
13.「Open in Colab」 标志
你可以使用如下 markdown 代码在 README.md 或 jupyter notebooks 中添加「Open in Colab 」标志。
在这段代码中,我们正在加载 SVG 图片,然后将其链接到 colab notebook。
[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/notebooks/basic_features_overview.ipynb)
14. Pandas 交互表
Colab 提供了一个 notebook 扩展,用于向 pandas dataframes 添加交互式排序和过滤功能。要使用它,请运行以下代码。
%load_extgoogle.colab.data_table
在加载下面的扩展之后,你可以看到常规的 pandas dataframe 和交互式 dataframe。
15. 设置 Conda 环境
如果将 miniconda 用作 python 环境管理器,你可以通过在 notebook 顶部运行以下命令,在 colab 上对其进行设置。
# Download Miniconda installation script!wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh# Make it executable!chmod +x Miniconda3-latest-Linux-x86_64.sh# Start installation in silent mode!bash ./Miniconda3-latest-Linux-x86_64.sh -b -f -p /usr/local# Make conda packages available in current environmentimport syssys.path.append('/usr/local/lib/python3.7/site-packages/')
执行完单元后,你可以照常使用 conda 安装软件包。
!conda install -y flask
16. 从命令行管理 Colab Notebooks
你可以使用名为 colab-cli 的库轻松创建 colab notebooks 并将其与本地 notebooks 同步:https://ift.tt/2HtqKs4
17. 运行后台任务
在某些情况下,我们需要先启动一些 Web 服务器或后台任务,然后才能执行常规程序。
要运行后台任务,请使用「nohup」命令,然后使用常规的 shell 命令,并在末尾添加「&」使其在后台运行。这样确保可以在之后的 notebook 中运行单元,而不会被后台任务终止。
!nohupbashping.sh &
18. 提醒训练完成
如果你要执行耗时较长的任务(例如训练模型),你可以将 Colab 设置为在完成后发送桌面通知。
要启用此功能,请转到「Tools ⮕ Settings ⮕ Site」,然后启用「Show desktop notifications」复选框。
这时将弹出一个窗口,以启用浏览器通知。只要接受它,即使你在另一个选项卡、窗口或应用程序上,colab 也会在任务完成时通知你。
19. 运行 javascript 代码
使用 %%javascript 命令运行 javascript 代码。
20. 在 Colab 上运行 VSCode
你可以在 Colab 上运行完整的 VSCode。请参考文档:https://amitness.com/vscode-on-colab/。
原文链接:https://ift.tt/2ZaPpae
如何根据任务需求搭配恰当类型的数据库?
在AWS推出的白皮书《进入专用数据库时代》中,介绍了8种数据库类型:关系、键值、文档、内存中、关系图、时间序列、分类账、领域宽列,并逐一分析了每种类型的优势、挑战与主要使用案例。
点击阅读原文识别二维码,申请免费获取白皮书。
© THE END 
转载请联系本公众号获得授权
投稿或寻求报道:content@jiqizhixin.com
继续阅读


source http://posts.careerengine.us/p/5f701a04f0770571146ba548

JavaScript 之父联手近万名开发者集体讨伐 Oracle:给 JavaScript 一条活路吧!- InfoQ 每周精要848期

「每周精要」 NO. 848 2024/09/21 头条 HEADLINE JavaScript 之父联手近万名开发者集体讨伐 Oracle:给 JavaScript 一条活路吧! 精选 SELECTED C++ 发布革命性提案 "借鉴"Rust...