「01」机器学习,到底在学些什么?
这是参加原力计划单独投稿的,是我专栏文章的part 2
2. 机器学习,到底在学些什么?
2.1 什么是学习?
根据理论框架,在理解的基础上,理解 是通过实例揭示事物内部本质属性与外在特征关联关系的过程,这些关联关系被称作知识,而在认知层面,它被称为认知,但在数学领域,它则被称为模型。

2.2 什么是机器学习?
经历了数千万年的进化历程后
基于这些信息,大脑会预设出下一个类似的情况和应对措施。其中有些是天生具备的,在遇到情况时可能会触发本能反射。例如面对狮子时,这种本能恐惧促使大脑发出逃跑指令

也有后天形成的,比如一朝被蛇咬,十年怕井绳

而对机器而言,则跳过了进化的这一阶段。目前的技术水平仍然无法还原基因层面的学习模式。因此后天的学习途径,则是机器知识形成的唯一选择。具体而言,在数据科学的支持下,并基于基于图灵机架构的计算机系统(具有类似人脑的记忆和计算功能),我们可以通过构建相应的模型结构,并将其应用于同一领域的新问题中去。此外,在特定条件下还可以拓展至不同领域的问题场景。我们常说学习要举一反三,在严格意义上来说只有做到举一反三才算真正意义上的学习。
唯一区别在于,在人类的认知过程中学习具有高度的抽象性和不确定性;输入通常以原始图像或文本数据的形式呈现;相比之下,在计算机系统中则将其所有的信息处理过程转化为数字化表示方式
2.3 和编程算法有什么不同?
该研究者在知乎平台提出了两个相关观点。比如在计算机程序领域中,请先明确以下概念:即是指输入与输出的可能性不仅限于单一情形,而是包含无数种可能性。这有助于我们更深入地理解两者之间的差异。
我们通常所说的算法本质上是一个抽象概念,在计算机科学和数学领域中代表了解决一类问题的方法论基础。例如二元一次方程组属于这类算法之一而快速排序也是一种典型的算法在编程领域中常被称作编程算法它通常用于解决计算机科学或数学领域中的特定问题这些方法具有明确的前提条件和严格的输入范围基本的排序算法主要用于对数字进行排序处理如果要对字母或集合进行排序则需要对其基本原理进行相应的修改与优化正如莱布尼茨所言
“没有两片树叶是一模一样的,但我们却可以认识所有的树叶。”

从数学角度来看, 将所有这些实例归入一个特定的集合中, 用该集合来代表一种类别中的对象, 输入即为该类别的任何一个实例. 因为具有这样的通用性属性而被称作变量, 输出也同样具备这样的属性特征并被称作变量.
当我们聚焦于编程算法时,在每幅图像中记录下其是否为树叶的状态。通过以下程序:
if 符合树叶的特征
then
又认识一个新的树叶
else
这不是树叶
即使是最先进的分布式集群和超级计算机也无法在可接受的时间内检索并存储这些大量信息。而更不要说将其推广到相应的知识(模型)。这正是传统程序所做不到的:因为它们无法仅仅通过展示几个实例就使计算机理解未展示的情况,并且具备学习能力。
又例如,在编程算法基础上构建的自动驾驶系统能够指示车辆:当红灯亮起时则需立即停止;当车辆在转弯过程中遇到直行路段时应采取避让措施。该系统通过预先编纂的一系列程序来实现无人驾驶功能。由此你或许会想到人类难以穷尽所有可能的道路状况与情境;而这种专家系统面对复杂情况则完全无法应对因为缺乏针对性指导信息。
在历史上, 计算机运行的所有指令都依赖于人类积累的知识. 现代人工智能的发展并未表现出具有自我意识的能力; 反而, 它是通过不断学习和积累, 在有限数量的例子基础上掌握相关知识, 并将其应用到未来的推断与预测中.
可以说机器学习属于人工智能领域;其中人工智能源自数学与逻辑学两大基础学科。借助数学形式化的方法进行推演分析后可知:程序不再局限于单一功能型逻辑系统;而能够发展出类似人类大脑的学习能力;从而能够有效应对以往未曾处理过的难题。
这,就是机器学习。
3. 为什么要学习算法?
有人可能认为仅限于或仅是那些具备算法工程师身份的人需要学习机器学习算法,这只是一种片面的说法。
21世纪正经历着人工智能重塑未来的重要变革。在未来的许多职业领域中,即使完全不依赖AI技术也难以完成全部工作。例如医生的工作职责、驾驶教师的教学任务以及警察执行公共安全职责时所需的技术支持等,这些新兴职业领域都与人工智能有着密切关联。对于有意转向算法工程师方向的人而言,在这条道路上深入学习并掌握相关技能是再自然不过的选择。
针对那些未系统接触过专业知识的人,
如果具备前文所述的六个关键学习要素中的任意一项,
那么通过一定时间的学习和实践积累,
也是完全可以通过一定时间的学习和实践积累
完成这一目标。
在互联网领域中与人工智能相关的岗位种类繁多,
并不仅限于算法工程师这一单一职位,
同时还需要进行人工智能系统的开发工作,
还需掌握人工智能产品的设计方法,
以及进行人工智能运维管理。
不可预测的事情可能会发生,
因此提前做好准备,
以最佳状态迎接这样的机会是最理想的方式~
这一问题看似常见,在机构宣传方面也存在诸多夸大。同样地,在机构宣传方面也存在诸多夸大。
尽管如此,在实际学习过程中我也部分认同他们的观点。
值得注意的是,在某些情况下我也认同他们的观点。
这一现象在很多地方都有体现。
然而在某些情况下过度强调短期效果的做法值得商榷。
对于具备一定理科基础的大学生而言,
这类填鸭式教育培训的效果未必显著,
甚至可能达到更深程度的学习效果,
而这类课程的价格通常都在几千到一万之间,
退费条款通常较为严格,
因此风险投入相对较高。
回到我们本来的话题上来:我们为什么要学习算法?答案其实很简单
- 目的不同:待遇方面的要求主要集中在薪酬水平上。根据现有数据统计显示, 算法工程师的人均薪资普遍较高, 大多数情况下不低于与其相当的技术岗位(如开发岗)的人均收入, 而部分顶尖的大公司则提供高于该岗位标准的人均薪酬。
- 目的不同:兴趣方面的追求是一个持续不断的过程。这一方向与其他方面的追求并不矛盾, 有人认为谈论个人兴趣可能会显得不够实际或过于理想化, 但这种观点并不成立。真正有价值的兴趣应当是在长期接触中能始终保持持续的热情状态, 这意味着你需要相应的能力支撑和经济回报来维持这种状态。
4. 学习准备
在机器学习方法的学习中,提供了大量且丰富的工具和语言选项。以便于讲解与学习,我们推荐大家安装这些工具。
4.1 Python
如今备受称道的编程语言Python以其卓越的优势赢得广泛赞誉。它融合了解释性编程、编译优化、交互性和面向对象特性作为一门功能强大的脚本式编程语言。其设计以极高的可读性著称,在众多编程方言中脱颖而出;相较于多数其他编程语言倾向于使用英文关键字和特定标点符号;然而与另一些编程方言不同的是Python独树一帜地采用了丰富多样的语法结构;这种独特的语法特征使得Python能够实现高效的代码编写;这种特性使其成为现代软件开发中不可或缺的重要工具;
将 Python 视为一种交互式语言:这表明,在任何 Python 提示符下都可以直接进行程序编写。
作为一种面向对象的语言:这表明该方法不仅支持基于对象的编程方法而且能够按物体实现代码封装。
鉴于其诸多优势最终我也选择了这一语言
关于python版本的选择,我以前的一篇博客提到过,大家可以参考:
此外,在上也有一些优质的Python入门教程同样值得学习。尤其是那些缺乏编程经验或技能的新手特别适合学习
通过“风云卫星”数据工程师掌握Python
PS. 在安装过程中建议选择Anaconda集成环境, 其内部环境会自动生成配置, 同时提供Jupyter Notebook和Spyder开发环境, 这款软件在数据科学领域应用广泛, 被广泛认为是数据科学的理想工具
4.2 python库、包
4.2.1 Scikit-learn
网上拥有丰富的sklearn学习资源。大部分只注重基础概念:大多数学习教程只专注于基础概念的讲解。其实官方文档是最优的选择。
机器学习算法Python编程——scikit-learn 1.1.2文档
自2007年以来, scikit-learn在Python领域中被视为非常重要的机器学习库.该库采用sklearn作为其常用别名,并广泛应用于分类、回归、降维与聚类等主要机器学习算法.此外,它还提供特征提取与数据预处理等关键功能,帮助构建高效的数据分析与模型评估体系.
sklearn是Scipy的扩展,建立在Numpy和matplolib库的基础上。利用这几大模块的优势,可以大大的提高机器学习的效率。
sklearn拥有着完善的文档,上手容易,具有着丰富的API,在学术界颇受欢迎。
sklearn已经封装了大量的机器学习算法,包括LIBSVM和LIBINEAR。同时sklearn内置了大量数据集,节省了获取和整理数据集的时间。
4.2.2 Numpy
NumPy(Numerical Python)是Python语言中的一个扩展程序库,在科学计算领域具有重要地位。它不仅提供了多维数组与矩阵操作的支持能力,还为这些操作提供了大量数学函数库以满足复杂计算需求。
NumPy 的前身 Numeric 最初由 Jim Hugunin 等协作者共同开发,在1990年代末发布后逐渐得到认可与推广。随后于2005年 Travis Oliphant 在 Numeric 基础上融合了具有相似功能的库 Numarray 之特色,并引入其他扩展技术而推出了 NumPy 软件包。该软件包采用开放源代码模式,并获得大量协作者的支持与参与维护其发展工作。值得指出的是 Numerical Python(NumPy)不仅是一个高效运行的数学计算工具而且主要功能集中在数组运算操作上
- 以的强大著称的多维数组对象 ndarray
- 支持广播操作的功能模块
- 提供与C/C++及Fortran代码交互的支持工具
- 覆盖线性代数运算、快速傅里叶变换以及随机数生成等功能
4.2.3 Tensorflow
任何曾经试图在 Python 中仅依赖 NumPy 编写神经网络代码的人都会感受到巨大的挑战。开发一个基本的一层前馈神经网络程序通常需要编写超过40行代码,在增加层数后,开发程序所需的时间和复杂度也会显著上升,并且运行时间会相应延长。TensorFlow 则显著简化了这一过程,并大幅缩短了从概念到实际部署的时间框架。作为谷歌于2015年开源的一个高性能计算库,在最初主要是为了提供高效的人工神经网络(NNs)API支持之后,在机器学习(ML)社区的发展推动下逐渐演变为一个完整的机器学习生态系统。

TensorFlow 是一个开放源代码且以Python为基础的机器学习框架。它是由Google公司开发,并广泛应用于图形分类、音频处理以及推荐系统等多个领域,在自然语言处理中也展现出强大的应用潜力。这是一个广泛应用在多个领域的机器学习框架,并非仅限于Python环境的支持。
[谷歌 research 博客]报道了全球一些精选使用 TensorFlow 的精彩案例
- Google 翻译采用了先进的 TensorFlow 技术以及 TPU 加速器技术。
- Project Magenta 采用了强化学习模型生成音乐,并依赖于 TensorFlow 的技术支持。
- 澳大利亚海洋生物学家依靠 TensorFlow 技术发现了并深入研究了濒临灭绝的海牛物种。
- 一位日本农民设计了一个基于机器学习的应用程序,并利用大小与形状等关键特征对黄瓜进行精准分类。
参考材料
1. YJango, 知乎, 这一原则表明:如果从零开始学习一门外语时, 遵循这一方法能够最大化认知效率." - 知乎
2. 在Python编程中探索机器学习知识时, 《sklearn库的学习》是一个值得深入研究的主题.
3. 《统计学习方法》由李航编写, 并作为清华大学出版社的经典教材之一出版.
