关于本文

 业余玩家的一些学习笔记(哈哈~ 浪起来吧~~~)

 微积分、线性代数、概率论 等知识可以参阅另一篇文章《人工智能

函数

函数正交

 正交是线性代数的概念,是垂直这一直观概念的推广。作为一个形容词,只有在一个确定的内积空间中才有意义。若内积空间中两向量的内积为 0,则称它们是正交的。如果能够定义向量间的夹角,则正交可以直观的理解为垂直。物理中:运动的独立性,也可以用正交来解释

(图片来源:wikipedia.org™,已确认版权为 CC BY 3.0 协议)

级数

级数

 在数学中,一个有穷或无穷的序列 $u_1, u_2, u_3, u_4 \ldots$ 的和 $s=u_1 + u_2 + u_3 + \ldots$ 称为级数。如果序列是有穷序列,其和称为有穷级数;反之,称为无穷级数(一般简称为级数)

格兰迪级数

 格兰迪级数(Grandi´s series),即 $1 − 1 + 1 − 1 + \cdots$,记做 $\sum_{n=0}^{+\infty}{(-1)^n}$。这是一种发散级数。在 1703 年由意大利数学家格兰迪发表,后来荷兰数学家丹尼尔·伯努利和瑞士数学家莱昂哈德·欧拉等人也都曾研究过它。格兰迪级数的欧拉和切萨罗和均为 $\frac{1}2$

 比较简单的一种证法如下(下文 $p$ 进数中也有一段印证):

$S = 1 - 1 + 1 - 1 + \cdots$
$1 - S = 1 - (1 - 1 + 1 - 1 + \cdots) = 1 - 1 + 1 - 1 + \cdots) = S$
$2S = 1$
$S = \frac{1}2$

傅里叶级数

 在数学中,傅里叶级数是把类似波的函数表示成简单正弦波的方式。更正式地说,它能将任何周期函数或周期信号分解成一个(可能由无穷个元素组成的)简单振荡函数的集合,即正弦函数和余弦函数(或者,等价地使用复指数

(图片来源:wikipedia.org™,已确认版权为 CC BY 3.0 协议)

 按照傅里叶的理论,任何周期性变化的信号量,都可以分解成对应的直流分量和许多交流分量的叠加。直流分量:幅值不随时间变化的量(也可以看作信号的时间均值);交流分量,幅值随时间做周期性变化的量

阅读全文 »

什么是人工智能

 人工智能Artificial Intelligence, AI)亦称机器智能,是指由人工制造出来的系统所表现出来的智能。 — wikipedia.org

 从 深蓝到 AlphaZero,人工智能的智力水平、普适性、学习能力 正在以爆炸式地速度快速发展;
 从 棋类到 医学,人工智能开始在各类应用领域,都在大展身手;
 从 CPU / GPU 到 TPU,人工智能的计算能力正向着无法穷举的极限不断逼近 …

 但是,我们并不浮躁,踏踏实实地点亮 AI 知识树的每个枝叶,才是我们每位富有科学精神的人所应该做的

关于本文

 我们将分为三块对 AI 进行诠释

 首先,将介绍人工智能的主流思想实用技巧,通过一些耳熟能详的有趣定理,我们可以对人工智能有些直观、初步的认识;随后,言归正传,我们将开始接触 AI 领域的几大理论支柱,由浅入深地学习 统计学微积分线性代数概率论 等知识体系;最后,落地到实践,我们需要紧跟人工智能的技术发展前沿,对重大的突破性项目进行了解、学习,以及运用。如此,对人工智能领域进行横向分层,可以很方便地找到我们学习的突破点

 不过,出于文章编排的考虑,可能部分编码就要放在其他博文中了,如有不便,还望见谅(Python、Prolog、R、Java)。本文持续更新中,若有不妥之处,还请不吝赐教哈 (^o^)/

主流思想

演绎法 & 溯因法 & 归纳法

(利用 Axure™ 绘制而成)

实用技巧

Occam 剃刀原理

 奥卡姆剃刀(Occam´s Razor),意为简约之法,是由 14 世纪逻辑学家、圣方济各会修士奥卡姆的威廉提出的一个解决问题的法则,即"切勿浪费较多资源,去做'用较少的资源,同样可以做好'的事情",相同思想见于郑板桥的删繁就简三秋树

阅读全文 »

什么是 JVM?

 A Java Virtual Machine(JVM)is an abstract computing machine that enables a computer to run a Java program.

为什么要有 JVM?

跨平台性

 JVM 的存在,使得 Java 程序 能够轻易地在多平台上移植,基本上脱离了对硬件的依赖性(这也满足了 David Parnas 的 “信息隐藏” 准则)

多语言性

 因为底层 JIT 编译优化、高效 GC、JUC 对多线程并发编程的支持,以及社区中海量成熟的库 等优点,使得很多语言都开发出可运行在 JVM 上的版本

 同时,多语言混合编程成为一种趋势,在需要快速开发、灵活部署 和 针对特定问题的 DSL 等场景下,选择恰当的 JVM-hosted language,可以最大化原有代码的价值

 那么,在日常的开发过程中,究竟应该如何运用 JVM 的知识,来逐步提高实际编程水平呢? 上下而求索后,找到了以下几个层面作为出发点

阅读全文 »

ElasticSearch 是什么?

 ElasticSearch™ 是一款基于 Lucene 的搜索引擎,不但稳定、可靠、快速,同时具备良好的水平扩展能力

特性

  • 功能丰富,且开箱即用
  • 横向可扩展性
  • 分片机制更好地解决热点问题
  • 多副本有效保证了高可用
  • 精确的熔断器机制
  • 社区庞大,生态完善

主要概念

Cluster 集群

 在一个分布式系统里面,可以通过多个 ElasticSearch 节点组成一个集群。集群中会动态选举出一个主节点,保证了 ElasticSearch 集群不存在单点故障
 在同一子网内,只需要将进程设置为相同的集群名,ElasticSearch 就会把这些集群名相同的进程自动组成一个集群。集群中各节点间的通讯和数据负载均衡,全部都由 ElasticSearch 自动管理

Node 节点

 每一个 ElasticSearch 进程称为一个 Node 节点。在测试环境中,可以在一台服务器上运行多个 ElasticSearch 进程;但生产环境中,则建议每台服务器只运行一个 ElasticSearch 进程

Index 索引

 ElasticSearch 中的索引是文档数据存储的地方,相当于是传统关系数据库中的 DataBase 概念。更多逻辑上的对应关系,如下表所示:

Relational DB HBase ElasticSearch 说明
Database NameSpace Template 一组索引的模板配置
Table Table Index 索引
Row RowKey Document 文档,和 Lucene 概念一致
Column + Value Cell Field 如果将文档理解为 JSON,那么 Field 就是字段和值
- - Term 检索的基本单位,相当于是文本中的一个词
- - Token Term 内容、类型,以及 Term 在文本中的起始及偏移
目前最新的 ElasticSearch 7.x 版本里面已经废弃了 Type 的概念
阅读全文 »

关于本文

 本文主要是为了,记录给 Apache Druid / Apache Eagle / Apache Flink / Apache HBase / Apache Kafka / Apache Superset / Apache Zookeeper & Apache Curator / TensorFlow / Alibaba DataX 开源项目贡献代码,尽自己一点绵薄之力的过程

 文章最后,总结了一些经验之谈,期冀能帮助到同样热爱开源、也想成为 PMC 的小伙伴们

阅读全文 »