精华内容
下载资源
问答
  • 让我们看一下现代NLP的兴起和可解释性的需求! Modern NLP is at the forefront of computational linguistics, which is concerned with computational modelling of natural language. 现代自然语言处理处于计算...

    At Embibe (AI platform for learning outcomes), we are leveraging modern NLP to solve problems like content ingestion, knowledge graph completion, smart meta tagging, question generation, question answering, concepts summarisation, conversational assistants for students, vernacular academic translation, evaluation of descriptive answers, etc. Applying modern NLP for real world applications demands interpretability, to make the system more transparent, explainable and robust. Let’s look into Rise of Modern NLP and the Need of Interpretability!

    Embibe (学习成果的A​​I平台)上,我们正在利用现代NLP解决诸如内容摄取,知识图完成,智能元标记,问题生成,问题回答,概念总结,学生的对话助手,白话学术翻译,语言能力评估等问题在现实世界中应用现代NLP要求具有可解释性,以使系统更加透明,可解释和更强大。 让我们看一下现代NLP的兴起和可解释性的需求!

    Modern NLP is at the forefront of computational linguistics, which is concerned with computational modelling of natural language.

    现代自然语言处理处于计算语言学的最前沿,它与自然语言的计算建模有关。

    Chomsky’s apprehension on the potential of Computational Linguistics during the 1950s, specifically on the theoretical foundation of those statistical models, was something analogous to Einstein’s reaction to Quantum Physics, God does not play dice”. These are pivotal moments when the world witnessed the rise of alternative theories. However, by all means, the foundation laid by Chomsky for linguistics theory still remains relevant and aid in progress, analysis, and understanding of the computational linguistics.

    乔姆斯基对1950年代计算语言学的潜力的担忧,特别是在那些统计模型的理论基础上,与爱因斯坦对量子物理学的React类似, 上帝不玩骰子”。 这些是世界目睹替代理论兴起的关键时刻。 但是,无论如何,乔姆斯基为语言学理论奠定的基础仍然具有现实意义,并有助于进步,分析和理解计算语言学。

    Image for post
    Public Domain)公共领域 )

    “It’s true there’s been a lot of work on trying to apply statistical models to various linguistic problems. I think there have been some successes, but a lot of failures. There is a notion of success … which I think is novel in the history of science. It interprets success as approximating unanalyzed data.” — Noam Chomsky

    “的确,在尝试将统计模型应用于各种语言问题方面,有很多工作要做。 我认为已经取得了一些成功,但有很多失败。 有一个成功的概念……我认为这在科学史上是新颖的。 它将成功解释为近似于未分析的数据。” —诺姆·乔姆斯基

    He mentioned, the notion of success is not a success. Well, the lacunae could be the theoretical foundations, but empirically, it could be thought of as the “Interpretability”, which accounts for analysability, transparency, accountability, and explainability of these computational models.

    他提到,成功的概念不是成功。 好吧,这个空缺可能是理论基础,但是从经验上讲,它可以被认为是“可解释性”,它解释了这些计算模型的可分析性,透明性,可解释性和可解释性。

    The major advancement of Computational linguistics is attributed to three subsequent phases: statistical modeling, classical machine learning, and deep learning. These phases are increasingly complex for interpretability.

    计算语言学的主要进步归功于三个随后的阶段:统计建模,经典机器学习和深度学习。 这些阶段对于可解释性而言越来越复杂。

    Statistical modeling dealt with statistical analysis and inference from data, and it got predictive power in the form of machine learning. There are three important aspects of solving problems using Machine Learning,

    统计建模处理统计分析和从数据推断,并以机器学习的形式获得了预测能力。 使用机器学习解决问题有三个重要方面,

    • Designing Input Features.

      设计输入功能。
    • Deriving Features Representation.

      派生特征表示。
    • Architecting Model Internals.

      架构内部模型。

    Classic ML techniques have always given a sense of control as features were explicitly specified, and mostly, driven from human intuition. Features representation that used to be aggregative and statistical in nature, was also under the realm of interpretability, i.e. Tf-Idf based vector representation, etc. ML models like decision trees, logistic regression, support vector machines, or other parametric models were also easy to reason with. Extensions of these models became complex with the use of techniques like non-linear kernels, ensembles, boosting, etc to further improve performance. However, it was still possible to understand model internals.

    由于已明确指定功能,并且大多数情况下是受人类直觉驱动的,因此经典ML技术始终具有控制感。 过去本质上是聚合和统计的特征表示也处于可解释性的范围内,即基于Tf-Idf的向量表示等。决策树,逻辑回归,支持向量机或其他参数模型等ML模型也很容易进行推理。 这些模型的扩展由于使用非线性内核,合奏,增强等技术来进一步提高性能而变得复杂。 但是,仍然有可能了解模型内部。

    Continuous efforts to improve performance on classic NLP tasks like named entity recognition, sentiment analysis, classification, etc and the constant push of adding increasingly complex tasks such as question answering, summarization, machine translation, etc have attracted increasing attention from the research community.

    不断努力提高经典NLP任务(例如命名实体识别,情感分析,分类等)的性能,并不断推动添加日益复杂的任务(例如问题解答,摘要,机器翻译等),这引起了研究界的越来越多的关注。

    The rise of modern NLP is attributed to the evolution of a simple model, perceptrons. Extension of perceptrons was not just a second order with techniques like ensembles or boosting, but rather exponential if not asymptotic, with the advent of deep neural networks.

    现代自然语言处理的兴起归因于简单模型感知器的发展。 随着深度神经网络的出现,感知器的扩展不仅仅是诸如合奏或增强之类的技术的二阶,而且如果不是渐近的,还具有指数性。

    “I am convinced that machines can and will think in our lifetime.” — Oliver Selfridge (The Thinking Machines — 1961).

    “我坚信机器可以并且将在我们的一生中思考。” —奥利弗·塞尔弗里奇(《思维机器》,1961年)。

    A look back into the journey of the tiny perceptron turning into the deep learning tsunami would mark a few important milestones. To mention a few, the birth of Perceptron in 1958 coupled with research foresight of “Thinking Machines” in the 1960s, followed by the invention of backpropagation in the 1980s, and empowered by proliferation of data coupled with super compute capabilities in early 2010s. All of these have compounded the chemistry of millions of perceptrons interacting with each other, and hence the rise of Deep Learning, and Modern NLP.

    回顾一下小型感知器转变为深度学习海啸的旅程,将标志着几个重要的里程碑。 仅举几例,Perceptron于1958年诞生,再加上1960年代对“ Thinking Machines”的研究远见,随后在1980年代发明了反向传播技术,并在2010年代初借助数据的扩散和超级计算功能实现了这种技术。 所有这些都使数百万个彼此相互作用的感知器的化学React更加复杂,因此,深度学习和现代NLP的兴起。

    Naturally, deep learning has revitalized computational linguistics; latent statistical patterns learned using neural mechanisms gave an incredible performance. Only to reinforce, human baselines are outperformed by deep learning models on certain well defined NLP tasks with increasing complexity year after year. Compositional nature of images made Convolution Neural Networks a huge success, whereas natural language differs from images as it not only has compositional dependencies but as well the sequential state. Recurrent Neural Networks and Long Short Term Memory (LSTM) networks outperformed the state of the art, and recently, the attention mechanism gave unprecedented success with novel Transformers.

    自然,深度学习使计算语言学得到了复兴。 使用神经机制学习的潜在统计模式提供了令人难以置信的性能。 只是为了加强,在某些定义明确的NLP任务上,深度学习模型的性能要优于人工基准,而且复杂度逐年增加。 图像的组成性质使卷积神经网络取得了巨大的成功,而自然语言则与图像不同,因为它不仅具有组成依赖性,而且还具有顺序状态。 递归神经网络和长期短期记忆(LSTM)网络的性能超越了现有技术,最近,注意力机制在新型《变形金刚》中获得了空前的成功。

    The key success of Modern NLP is also attributed to self-supervised pre-training objectives to learn contextual embeddings and the ability to transfer learning to downstream task-specific models. Self-supervised pre-training objectives have relinquished the need for massive labeled data. On the other hand, transfer learning has relinquished the need for huge computational costs. As a result, we can see the exponential growth of complex models.

    Modern NLP的关键成功还归功于自我监督的预训练目标,以学习上下文嵌入以及将学习转移到下游任务特定模型的能力。 自我监督的预训练目标已不再需要大量的标记数据。 另一方面,转移学习已不再需要大量的计算成本。 结果,我们可以看到复杂模型的指数增长。

    Image for post
    Fig 1. The exponential growth of NLP models complexity (Image: Turning-NLG [8])
    图1. NLP模型复杂度的指数增长(图片:Turning-NLG [8])

    So what?

    所以呢?

    • Deep Learning has made feature engineering redundant and hence extinct!

      深度学习使功能工程变得多余,因此已经绝种!
    • Underlying representations of tokens became dense and complex

      代币的基本表示变得密集而复杂
    • Internals of complex architectures of deep neural networks became difficult to understand.

      深度神经网络的复杂架构的内部结构变得难以理解。

    As a result, we can not directly emphasize on how the decision is made, what features are important, or where the causation comes from? The success of modern NLP amplifies the challenges of interpretability.

    结果,我们不能直接强调决策的制定方式,重要的特征或因果关系的来源? 现代自然语言处理的成功放大了可解释性的挑战。

    Interpretability plays a key role in domain adoption as well as it builds confidence for real-world applications. We can cluster on-going research effort to interpret neural NLP models in the following questions:

    可解释性在域采用中起着关键作用,并建立了对实际应用程序的信心。 我们可以集中进行中的研究工作来解释以下问题中的神经NLP模型:

    1. Is linguistic knowledge learned or ignored?

      语言知识是否被学习或忽略?
    2. Why does the model work the way it works?

      模型为何以其工作方式运作?
    3. Can we explain model predictions?

      我们可以解释模型预测吗?
    4. What makes NLP models vulnerable?

      是什么使NLP模型容易受到攻击?
    5. How can Knowledge Graph advance modern NLP and its interpretability?

      知识图谱如何促进现代NLP及其可解释性?

    Let’s dive deep to understand what do we mean by each of these questions.

    让我们深入了解这些问题的含义。

    • Linguistic Knowledge: Ignored or Learnt?

      语言知识:被忽略还是被学习?

    Image for post
    Fig 2. Linguistic Knowledge In a Sentence
    图2.句子中的语言知识

    Linguistics, the study of language and its structure, including the study of grammar, syntax, and phonetics, etc. It is intuitive to humans that the ability to understand, reason, and generate natural language would not be possible unless the system is able to learn linguistic components. In classical NLP, linguistic features like part-of-speech tagging (POS), named-entity-recognition, dependency tree, subject-verb agreements, coreference resolution, etc were derived using rule-driven or statistical learning approaches. Deep Neural Network models like RNNs, LSTMs, Transformers, etc do not need these hand-crafted features but are still able to outperform on certain well defined real-world tasks like classification, semantic analysis, question answering, summarization, text generation, etc. So, the question to be answered is “What (If at all) Linguistic Knowledge is Learned by Modern NLP Models”. (coming soon)

    语言学,语言及其结构的研究,包括语法,语法和语音等方面的研究。对人类而言,直觉的是,除非系统能够做到,否则无法理解,推理和生成自然语言的能力学习语言成分。 在经典的NLP中,使用规则驱动或统计学习方法来衍生语言特征,例如词性标记(POS),命名实体识别,依赖树,主谓词一致,共指解析等。 像RNN,LSTM,Transformers等的深度神经网络模型不需要这些手工制作的功能,但仍能够在某些明确定义的现实世界任务中胜过表现,例如分类,语义分析,问题解答,摘要,文本生成等。因此,要回答的问题是“ 现代NLP模型可以学习什么(如果有的话)语言知识”。 (快来了)

    • Why Does the Model Work the Way It Works?

      模型为何以其工作方式起作用?

    Black box systems are good for modularity and integration, but the system needs to be transparent to analyze and improve. Transparency is a key pillar of Interpretability. “Model Understanding” is a niche area which deals with the internals of models. This requires a detailed analysis of what each layer of blocks in given DNNs learns, how they interact with each other, and hence contribute to the model decision.

    黑匣子系统有利于模块化和集成,但系统必须透明以进行分析和改进。 透明度是可解释性的关键Struts。 “模型理解”是一个专门研究模型内部的利基领域。 这需要对给定DNN中每个块的层学习什么,它们如何相互作用以及对模型决策做出贡献的详细分析。

    Image for post
    Fig 3. How attention heads in different layers of the BERT model attend other tokens while processing a particular token.
    图3.在处理特定令牌时,BERT模型不同层中的关注头如何参与其他令牌。

    Basically, how learning of a model can be attributed to its building blocks or underlying mechanisms? A deeper understanding of how the model works would facilitate interpretability, and open up opportunities to improve the system further. For instance, attention mechanism is a key idea to drive success home for state of the art LSTMs, or Transformers models. “How Attention Enables Learning in NLP Models?” (coming soon) would be interesting to study deeper.

    基本上,如何将模型的学习归因于其构建基块或基础机制? 对模型如何工作的更深入了解将有助于解释性,并为进一步改进系统提供机会。 例如,注意力机制是将最先进的LSTM或Transformers模型推向成功的关键思想。 “注意力如何在NLP模型中实现学习?” (即将推出) ,对其进行深入研究将很有趣。

    • Prediction may be Okay, Can we Explain It?

      预测可能还可以,我们可以解释一下吗?

    Image for post
    Ribeiro et al [11])Ribeiro等人[11])

    Well, knowing what linguistic knowledge is learned by model, and how the underlying mechanism enables learning for these NLP models are building blocks towards NLP interpretability. It is of utmost importance to move “Towards Plausible and Faithful Explanations for NLP Models?(coming soon) This requires an in-depth study of how input tokens impact model decisions, so to attribute prediction back to tokens, and deriving token importance. And, how can we generate explanations from these important tokens? Are these generated explanations faithful? or, what’s the best way to generate a faithful explanation? Can these explanations play an active role in understanding the underlying robustness of a model? This is one of the active lines of research, where a lot of progress has been made recently.

    好了,知道模型学习了哪些语言知识,以及底层机制如何使这些NLP模型的学习成为构建NLP可解释性的基础。 至关重要的是“迈向NLP模型的合理可信的解释?(即将推出),这需要对输入令牌如何影响模型决策进行深入研究,以便将预测归因于令牌,并得出令牌的重要性。 而且,我们如何从这些重要的标记中生成解释? 这些产生的解释是否忠实? 或者,产生忠实解释的最佳方法是什么? 这些解释是否可以在理解模型的基本稳健性方面发挥积极作用? 这是活跃的研究领域之一,最近已经取得了很多进展。

    • On the Backdrop of Success, What makes Modern NLP models Vulnerable?

      在成功的背景下,是什么使现代NLP模型易受攻击?

    Modern NLP has made modest progress into real-world applications, i.e. conversational chatbots, real-time translations, automated question answering, hate speech, or fake news detection. Is it possible to hack these models for malicious intent, like legitimizing fake news, or stealing models without access to training data?

    现代NLP已在实际应用中取得了适度的进步,例如会话聊天机器人,实时翻译,自动问答,仇恨言论或虚假新闻检测。 是否有可能出于恶意意图破解这些模型,例如使假新闻合法化,或者在不访问训练数据的情况下窃取模型?

    Image for post
    Fig 5: Adversarial Attack Example
    图5:对抗攻击示例

    A Transparent, Interpretable, and Explainable system would be better prepared to understand “The Challenges and Mitigations of Modern NLP Vulnerabilities” (coming soon). Where in, risks of adversarial attacks, underlying bias, unreliable evaluation criteria, and the possibility of extracting learned state of models can be understood and steps can be taken to mitigate such risks.

    透明,可解释和可解释的系统将更好地准备理解“现代NLP漏洞的挑战和缓解”(即将推出)。 在其中,可以理解对抗攻击的风险,潜在的偏见,不可靠的评估标准以及提取模型学习状态的可能性,并且可以采取措施来减轻此类风险。

    • What about the Knowledge Graph? Can It Advance Modern NLP and Interpretability Further?

      知识图呢? 它可以进一步提高现代NLP和可解释性吗?

    Traditionally, Knowledge Graph, structured information represented in the form of a graph, is at the heart of information retrieval based systems for domain-specific use cases. Mainly because Knowledge Graphs can be built deterministically by experts, easier to understand, seamless to integrate, effective for specific use cases, and straightforward to interpret. Hence, systems relying on knowledge graphs are easily adopted in different domains. Retrieval systems before the dawn of Modern NLP were mainly developed on top of Knowledge Graphs.

    传统上,知识图(以图的形式表示的结构化信息)是针对特定领域用例的基于信息检索的系统的核心。 主要是因为知识图可以由专家确定性地构建,易于理解,无缝集成,对特定用例有效并且易于解释。 因此,依赖知识图的系统很容易在不同领域中采用。 现代NLP诞生之前的检索系统主要是在知识图的基础上开发的。

    Image for post
    Kurşuncu et al [5])Kurşuncu等人[5])

    Self-supervised learning enables modern NLP to learn statistical patterns without worrying about experts’ intervention. These systems become scalable and powerful across varied and complex use-cases but may fail on very naive tasks, as simple facts are ignored because of a lack of statistical significance in the data. That’s where, if Knowledge Graphs can be integrated with modern NLP systems, it would bring the best of both the worlds to make systems comprehensive. Knowledge graphs can also align internal representations of features to make it more meaningful. “Knowledge Inception for Advanced and Interpretable NLP” (coming soon) would be an active area of research in the coming times.

    自我监督学习使现代NLP可以学习统计模式,而不必担心专家的干预。 这些系统在各种复杂的用例中变得可伸缩且功能强大,但由于缺乏数据的统计意义而被忽略了简单的事实,因此可能无法在非常幼稚的任务上失败。 在那里,如果知识图谱可以与现代NLP系统集成,它将带来两全其美的优势,以使系统全面。 知识图还可以使要素的内部表示对齐以使其更有意义。 “高级和可解释性NLP的知识入门”(即将推出)将是未来时代的一个活跃研究领域。

    Exploring limits of the modern NLP on the above dimensions gives a good understanding of why interpretability matters, what are the challenges, what is the progress made on them, and what questions still remain open? Although we have tried to be as broad as possible, by no means this is an exhaustive survey of the current state of NLP. It is intriguing to know how a modern NLP would become analyzable, transparent, robust, faithful, explainable, and secure in the coming times. On the other hand, it is equally fascinating to integrate KG and NLP, and which would not only help NLP interpretable but improve adoption into various domains such as education, healthcare, agriculture, etc.

    在上述维度上探索现代NLP的局限性,可以很好地理解为什么可解释性很重要,面临哪些挑战,在这些挑战上取得了什么进展以及仍然存在哪些问题? 尽管我们已经尝试了尽可能广泛的内容,但这绝不是NLP当前状态的详尽调查。 令人着迷的是,现代NLP在未来的时代将如何变得可分析,透明,强大,忠实,可解释和安全。 另一方面,将KG和NLP集成在一起同样令人着迷,这不仅可以帮助NLP解释,而且可以提高在教育,医疗保健,农业等各个领域的采用率。

    I would like to acknowledge the efforts of all collaborators for publishing this article, specifically, reviews and feedback given by Prof. Amit Sheth, and the support of Aditi Avasthi.

    我要感谢所有合作者为发布本文所做的努力,特别是 Amit Sheth教授的 评论和反馈 以及 Aditi Avasthi 的支持

    [1] Manning CD. Computational Linguistics and Deep Learning, MIT Press 2015

    [1]曼宁CD。 计算语言学和深度学习,麻省理工学院出版社,2015年

    [2] Norvig P. On Chomsky and the two cultures of statistical learning, Springer 2017

    [2] Norvig P. 关于Chomsky和统计学习的两种文化 ,Springer,2017年

    [3] Belkinov and Glass. Analysis Methods in Neural Language Processing: A Survey, MIT Press 2019

    [3]贝尔金诺夫和格拉斯。 《神经语言处理中的分析方法:调查》,麻省理工学院出版社2019年

    [4] Manning and Schutze. Foundations of statistical natural language processing, 1999

    [4]曼宁和舒兹。 统计自然语言处理基础 ,1999年

    [5] Kurşuncu, Gaur, Sheth, Wickramarachchi and Yadav. Knowledge-infused Deep Learning, ACM 2020

    [5] KurşuncuGaurSheth ,Wickramarachchi和Yadav。 知识注入式深度学习,ACM 2020

    [6] Arrieta et al. Explainable Artificial Intelligence (XAI): Concepts, taxonomies, opportunities and challenges toward responsible AI, Elsevier, 2020

    [6] Arrieta等。 可解释的人工智能(XAI):概念,分类法,负责任AI的机遇与挑战,Elsevier,2020年

    [7] Rumelhart, Hinton and Williams. Learning representations by back-propagating errors, Nature 1986

    [7]鲁梅尔哈特,欣顿和威廉姆斯。 通过反向传播错误学习表示,Nature 1986

    [8] Turing-nlg: A 17-billion-parameter language model by microsoft, Microsoft Research Blog, 2020

    [8] Turing-nlg:微软提供的170亿参数语言模型,微软研究博客,2020年

    [9] Zhang, Sheng, Alhazmi and Li. Adversarial Attacks on Deep-learning Models in Natural Language Processing: A Survey, ACM 2020

    [9] ZhangShengAlhazmiLi 。 自然语言处理中深度学习模型的对抗性攻击:一项调查,ACM 2020

    [10] Clark, Khandelwal, Levy and Manning. What Does BERT Look At? An Analysis of BERT’s Attention, ACL Workshop BlackboxNLP 2019

    [10] ClarkKhandelwalLev y和Manning 。 BERT看什么? BERT的注意力分析,ACL Workshop BlackboxNLP 2019

    [11] Ribeiro, Singh and Guestrin. “Why should I trust you?” Explaining the predictions of any classifier, ACM 2016

    [11] RibeiroSinghGuestrin 。 “ 我为什么要相信你?” 解释任何分类的预测 ,ACM 2016

    [12] Bender, Koller. “Climbing towards NLU: On Meaning, Form, and Understanding in the Age of Data”, ACL 2020

    [12]本德尔,科勒。 “迈向NLU:关于数据时代的意义,形式和理解”,ACL 2020

    翻译自: https://towardsdatascience.com/rise-of-modern-nlp-and-the-need-of-interpretability-97dd4a655ac3

    展开全文
  • 兴起聊Java

    2020-10-17 16:19:40
    这里可以举个比较例子,解释面向对象编程。 比如我要开车去XX: 面向过程设计思想:我开车、挂挡、踩油门、过xx省,xx路; 面向对象设计思想:我命令车这个对象带我去,我不管怎么去,只要能到。 概念: 不

    浅聊Java

    从面向对象设计思想开始,一路高歌。

    众所周知,Java是一门面向对象的编程语言,是站在C语言的肩膀上发展起来的。

    C语言为什么难以理解?正是因为它具有多继承、指针,内存回收等复杂操作才使得C语言相比Java而言更加臃肿,而Java就显得更加强大简单。

    面向对象相比于面向过程到底强在哪里?

    这里可以举个比较例子,解释面向对象编程。

    比如我要开车去XX:
    
    面向过程设计思想:我开车、挂挡、踩油门、过xx省,xx路;
    
    面向对象设计思想:我命令车这个对象带我去,我不管怎么去,只要能到。
    
    概念: 不要记概念。 面向对象更加贴近人的思维方式,因为我人类眼睛看到的就是一个个对象,比如一个茶壶,而且这个茶壶能够做很多事情。
    

    面向过程是对汇编的抽象。

    面向对象是对现实问题的抽象。-------更加符合人类行为。

    对象都有对外服务的接口-----通过继承可以复用,对象隐藏内部服务的实现----通过聚合可以复用。

    既然聊到这里,为何不将目光转至继承? 这里要明白一点,继承虽然是面向对象编程语言的特点,但是它不仅仅属于面向对象编程语言。

    官腔:继承是子类自动共享父类数据和方法的机制,这是类之间的关系,提高了软件的可重用性与可扩展性。

    一谈是什么什么机制,就会显得你读书多,呵呵哒。

    你只知道子类继承父类,就可以共享父类数据,实现功能复用,再深一些的话,不如从内存结构来说明。

    举个例子:

    父类Person(有name,age),子类Student(有school)。 子类继承父类。

    java代码可以表示为

    Person student = new Student();
    

    众所周知,变量会分布在栈中的变量表中,对象会被开辟在堆内存中。画结构分布图:

    在这里插入图片描述

    student首先拥有person所有信息,然后还有属于自己的信息;这里就体现了继承的可重用性,name,age我只需要在父类中写一遍。

    事实上讲,student大于person;

    当new一个student时,其实student对象内部还有一个父类对象person。

    所以,子类对象包含父类对象。

    需要说明的两点:

    1. 子类的构造方法必须调用父类的构造方法,而且super()要放在子类构造方法里的第一行。(有父才有子)
    2. 如果子类没有显示调用父类super()(创建出父类),系统默认子类调用父类无参构造方法。(有父才有子)

    既然聊到这里,不如再说说多态?为什么能引出多态?在上述的一段java代码示例中,我创建的student对象是以Person类型接收的。

    多态实际也叫做动态绑定,很多人不理解在Java中为什么会有动态与静态之说,比如静态链接动态链接。

    其实所谓动态与静态的区分只在于一点:代码的编译期(静态)与执行期(动态)。

    一句话概括多态:在执行期间(非编译期)判断所引用对象的实际类型,根据其实际类型调用相应方法。

    多态的重点在于:子类继承父类,重写父类方法来实现多态。 所以说,多态实际是在子与父之间诞生的。

    如果觉得还不够,我们可以举一个在Java开发中常用的例子:开发中的三层架构。

    建立dao层接口: MyDao ,在接口中定义一个方法print();

    建立业务层实现类: MySqlService、OracleService、 分别实现myDao接口。

    在子类mysqlService与OracleService中分别重写父接口myDao方法中的print()。

    抽象出来一个公用方法

    public void comeIn(MyDao mydao){
        myDao.print();
    }
    

    可以发现,如果调用comeIn方法,它的类型是MyDao,在编译期间是无法确定具体类型的,在程序员调用comeIn() 时,可以传mysqlService 也可以传OracleService进去。

    这个方法comeIn()起初是不知道你传的到底是什么类型的,它只认识Mydao类型。但是当程序一运行起来,comeIn方法才能知道程序员到底传进来的是谁,又该调用谁的print()方法。

    这里可以再解释一下向上转型与向下转型,当你明白一个多态例子在内存中的分布结构时,这个就不难理解。

    Student student = new Person();   向下转型: 我拥有你的全部信息,new出一个你很难吗?
    Person person = (Student)new Student();  向上转型: 很难,这里需要强转了。
    

    写着写着就不想写了,想接着说指针的。算了,唉年轻就是这样,总是多愁善感,突发奇想。

    展开全文
  • 为什么可穿戴设备会在此时兴起? 其中一个原因是Bluetooth Smart准备好了 2013-10-18 09:58    到目前为止,当我们谈到可穿戴设备时都要提到一个参数:支持蓝牙还是用无线网络与智能手机相连。...

    为什么可穿戴设备会在此时兴起?

    其中一个原因是Bluetooth Smart准备好了

    2013-10-18 09:58

      为什么可穿戴设备会在此时兴起?其中一个原因是Bluetooth Smart准备好了

      到目前为止,当我们谈到可穿戴设备时都要提到一个参数:支持蓝牙还是用无线网络与智能手机相连。这是衡量可穿戴设备是否能与智能手机上的软件顺利“对话”的主要依据,那么你有没有想过,支持蓝牙究竟对可穿戴设备意味着什么?

      首先要解释清楚这里提到的蓝牙技术是什么。过去我们习惯了“Bluetooth X.0版”的说法,其实从Bluetooth 4.0开始,这项技术被Bluetooth SIG(Special Interest Group,负责推动蓝牙技术标准的开发和将其授权给制造商的非营利组织)改名为Bluetooth Smart或Bluetooth Smart Ready。Bluetooth SIG首席营销官Suke Jawanda对PingWest说,未来Bluetooth SIG也将继续淡化X.0的概念、强调Bluetooth Smart,原因是“X.0是说给极客听的,Bluetooth SIG希望普通消费者也能听懂。”

      其次,可穿戴设备与智能手机之间的数据传输方式对蓝牙技术的要求也与以往不同。Suke Jawanda用自己手腕上的Fitbit Flex举例,“过去当我们谈到蓝牙技术和数据传输,主要考虑的是类似Spotify这种在一个较长的时间段里输送数据的需求,现在像Fitbit Flex是先收集数据,再断续的在某些‘时刻’里将数据传送到用户的手机上,两种数据传输方式不同。Bluetooth Smart的低耗能技术就可以满足这一需求了。”Suke Jawanda说。

      Suke Jawanda向PingWest解释,现在不少设备制造商都在强调自己支持蓝牙低耗能技术(Bluetooth Low Energy),其实它只是Bluetooth Smart其中的一个功能。支持Bluetooth Smart的设备都支持蓝牙低耗能技术。

      那么为什么制造商要强调这一点呢?当然强调低耗能技术是给消费者造成一种“省电省流量”的印象,但换个角度来看,每个产品说明自己支持Bluetooth Smart的背后就是可穿戴设备为什么在此时流行的重要原因之一——Bluetooth Smart对操作系统和硬件设备的支持情况,决定了可穿戴设备能否以较低的成本与软件进行数据传输,接下来才是解决软件获得数据之后怎么处理的问题。

      根据Suke Jawanda的介绍,Bluetooth Smart对可穿戴设备的支持分成硬件和软件。以Fitbit为例,如果Fitbit开发一款新的产品,支持Bluetooth Smart,同时要求软件,也就是从iOS或者Android——操作系统层面要支持Bluetooth Smart,苹果是从iOS 5(iPhone 4S以及以上版本的手机)开始支持Bluetooth Smart,而Google直到Android 4.3 才开始支持。这就是为什么在三星发布智能手表Galaxy Gear时说,它只能和部分Galaxy手机“相连”。

      “我们很早就和苹果、Google谈过。和苹果是在2010年,当时Steve Jobs还在世,他们听到Bluetooth Smart的第一反应是如果苹果宣布这个消息,‘这个东西要怎么体现在Steve Jobs的PPT里?’我告诉他们这就好像他们的App Store,刚开始应用也不多,未来会吸引越来越多的开发者。好在合作很快就谈成了,从iOS 5之后苹果的设备支持Bluetooth Smart,让后来的可穿戴设备与iPhone、iPad里的App配合使用成为了可能。”

      Suke Jawanda透露Google则接受的较晚,他们是在Andy Rubin还执掌Android时就和Google接触,但是由于Google迟迟没有同意合作,造成部分硬件制造商只能自己单方面找Bluetooth SIG,“据我所知,三星都已经开始自己做了,这样造成的结果就是硬件制造商只能给自己品牌的手机逐个添加Bluetooth Smart,如果你的手环和某一款Android手机相连,可能换一个Android手机就不行了。可穿戴设备的制造商也不敢做Android的软件,要一个个的适配。Android的碎片化问题在这里被凸显出来,Google在Android 4.3中添加了Bluetooth Smart,就是从操作系统层面建立一个统一标准。升级到Android 4.3以上的手机不再面对这些问题。”

      所以,从此以后,可穿戴设备和智能手机之间的数据传输问题才算是被解决了 。

      当然Bluetooth Smart并不是唯一的原因,也有可穿戴设备可以用其他方式传输数据,例如无线网络,但是你知道,人不可能一直在无线网络环境下。

      那除了可穿戴设备,汽车呢?除了用蓝牙接打电话,还能做些什么?

      “现在我们知道汽车能做到的是通过蓝牙进行语音操作、接打电话,未来我们想象是用蓝牙技术可以不再用钥匙,你的手机就可以作为车钥匙;另一个是利用更多的传感器收集数据,让车与车之间‘对话’,例如你的车可以知道前后三辆车的时速,当他们减速时你的车能提醒你前方的车在减速可能是遇到什么什么情况等。”

      “但这里最大的问题是汽车行业技术滞后,比如你现在看到的一个汽车领域的新技术,真正应用到生产、被推广恐怕是2-3年后的事情,而且人买一辆车的期待是要用10-15年的,也就是你买了一辆车之后10年内可能都体验不到汽车领域的新技术了,这个问题现在还没有很好的解决方案。”Suke Jawanda说。

    转自:http://news.zol.com.cn/article/179109.html

    展开全文
  • :金融科技创新或称Fintech,泛指技术进步驱动的金融创新。...因此,对任何与金融有关的新名词、新现象的理论解释要回归本 源,遵守基本金融理论,才能正确指导实践创新。 关键词:金融科技创新;金融功能;金融中介;
  • 深度非线性ML模型的兴起,在预测方面取得了巨大的进展。然而,我们不希望如此高的准确性以牺牲可解释性为代价。结果,可解释AI (XAI)领域出现了,并产生了一系列能够解释复杂和多样化的ML模型的方法。
  • 关于机器学习和AI的区别最经典的解释   互联网和移动互联网兴起后,各种经典段子满天飞。很多段字反映出段子手很有才。这不,关于机器学习与人工智能(AI)的区别,最近有一个段字红爆业界:   翻译成中文就是...

    关于机器学习和AI的区别最经典的解释

     

    互联网和移动互联网兴起后,各种经典段子满天飞。很多段字反映出段子手很有才。这不,关于机器学习与人工智能(AI)的区别,最近有一个段字红爆业界:

     

    翻译成中文就是,机器学习和AI的区别:
    如果使用Python写的,那可能是机器学习
    如果使用PPT写的,那可能是AI

     

    上面这个段子来自微软工程师Mat Velloso。

     

    他发在Twitter上之后,引发大量用户转发和评论。评论都很精彩,不过还是Velloso自己的评论最有机器学习色彩,他说,这个笑话过拟合了。

     

    在次,笔者不能不承认,该工程师真的很专业!

     

    2018-11-27 整理于杭州市.

     

    展开全文
  • 详细解释RESTful

    2018-08-08 14:01:17
    越来越多的人开始意识到,网站即软件,而且是一种新型的软件。 这种"互联网软件"采用客户端/服务器模式,建立在分布式体系上,通过互联网...互联网的兴起,使得这两个领域开始融合,现在我们必须考虑,...
  • 不得不说Ajax确实是一个好东西,由它的出现使得WEB端新技术不断产生,Comet...先看一下维基的解释: "Comet是一种用于web的推送技术,能使服务器实时地将更新的信息传送到客户端,而无须客户端发出请求,目前有两种...
  • 东盟的成立与发展:区域合作的理性结构主义解释,姚志峰,,关于东盟的兴起与发展主要有三种理论做出解释:现实主义认为东盟作为东南亚的一种区域合作主要是因为东南亚国家处于前苏联、美国
  • 东盟的成立与发展--区域合作的理性结构主义解释,姚志峰,,关于东盟的兴起与发展主要有三种理论做出解释:现实主义认为东盟作为东南亚的一种区域合作主要是因为东南亚国家处于前苏联、美国
  • 本节以电商平台的数据分析为例,来解释大数据处理平台如何支持企业在线服务。电商平台会将用户在APP或网页的搜索、点击和购买行为以日志的形式记录下来,用户的各类行为形成了一个实时数据流,我们称之为用户行为...
  • 刚刚看到编译原理与实践第二章,一时兴起,想写个以前就想写的scheme的解释器。昨天晚上开始写,到刚才为止,接近一天的时间。把一时的激情几乎耗尽了,懒得再改了。就放到网上了,求bug 支持字符串,布尔值...
  • 专业名词解释

    2008-02-15 14:18:00
     SaaS是Software-as-a-service(软件即服务)的简称,是随着互联网技术的发展和应用软件的成熟,而在21世纪开始兴起的一种完全创新的软件应用模式;它与“on-demand software”(按需软件),the application ...
  • saas相关说明解释

    2014-10-10 16:26:29
    SaaS是Software-as-a-Service(软件即服务)的简称,随着互联网技术的发展和应用软件的成熟, 在21世纪开始兴起的一种完全创新的软件应用模式。它与“on-demand software”(按需软件),the application service ...
  • 深度学习黑盒的解释性的理论工具

    千次阅读 2019-08-12 00:08:32
    深度学习是目前人工智能最受关注的领域,也是这一轮人工智能兴起的原因。与此同时,这一技术具有不可解释等特性也使得一些观点认为深度学习已经面临瓶颈。 7 月 25 日,美国四大国家学院 (国家科学院、国家医学院、...
  • 在上一篇文章中我们不厌其烦的解释了程序运行的基本原理。接下来我们要说下编程语言本身。在上一篇教程中,我们说明了程序是如何运行了。而编程语言是我们用来生成程序的工具。我们有介绍过,直接写0101代码的方式,...
  • 说到文件压缩大家很容易想到的就是 rar,zip 等我们常见的压缩格式。然而,还有一种就是大家在学习数据结构最常见到的哈夫曼树的数据结构,以前还...随着网络与多媒体技术的兴起,人们需要存储和传输的数据越来越多,
  • 区块链未来十大发展趋势及六大变化 在第三届国国际大数据产业博览会(以下简称...何宝宏透露一项数据,目前全球有8万多个区块链项目,但只有8%的项目有人在维护,平均寿命为1.22年,“兴起快、死得也快,缺乏统一的标准。...
  • 刚刚看到编译原理与实践第二章,一时兴起,想写个以前就想写的scheme的解释器。昨天晚上开始写,到刚才为止,接近一天的时间。把一时的激情几乎耗尽了,懒得再改了。就放到网上了,求bug 支持字符串,布尔值(true...
  • 对图像分割方法Fast-SCNN的解释以及实现的代码分析。 Fast Segmentation Convolutional Neural Network (Fast- scnn)是一种针对高分辨率图像数据的实时语义分割模型,适用于低内存嵌入式设备上的高效计算。原...
  • 现代印刷技术解释

    2009-07-16 18:56:46
    现代印刷技术我把它分为以下几...5.快速印刷,最近刚刚兴起的印刷技术 我先来介绍一下以上印刷技术的大概定义 1.喷绘:喷绘,这个好像不用我多说,大家一看都会明白~这里值得说的就有几点就是对我们做设计时的要...
  • 随着深度学习的兴起,其在许多领域都能够取得远胜于传统方法的表现,如今许多行业都已经用到了深度学习以及神经网络来进行分析或者预测,解决实际的一些问题。但其可解释性差也一直是令人所诟病的一点,也就是我们常...
  • 在阿里云云栖社区举办的在线培训中,来自阿里云数据库技术组的白宸为听众带来了题为《Redis实践...分享中他重点介绍了Redis在直播行业的应用场景,并对云数据Redis设计的原理给出了精确的解释。 以下为直播整理内容...
  • 名称解释&技术分类

    2018-03-03 21:43:44
    简单来说,Spring是2003 年兴起的一个分层的JavaSE/EE full-stack(一站式) 轻量级开源框架。二、前端1、Bootstrap前端框架来自 Twitter,是目前很受欢迎的前端框架。Bootstrap 是基于 HTML、CSS、Jav...
  • 2011年,国内比特币交易所还没有兴起,那时候想买比特币,只能通过万能的淘宝,大概几十块钱一个,购买流程非常复杂,首先要付款并确认收货,而且还要给卖家一个大大的好评。   然后卖家才会指导你下载一个比特币...
  • 随着区块链的兴起,智能合约这一技术正越来越走进现实生活。过年回家,和圈外人谈起智能合约,该如何向他们解释? 1. 什么是智能合约 智能合约的理念可以追溯到1994年,几乎与互联网同时出现。密码学家尼克·萨博...
  • 早期scala刚出现的时候,并没有怎么引起重视,随着Spark和Kafka这样基于scala的大数据框架的兴起,scala逐步进入大数据开发者的眼帘。scala的主要优势是它的表达性。 官网地址:http://www.scala-lang.org 2:scala...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 389
精华内容 155
关键字:

兴起解释