最近人工智能火的一塌糊涂,和很多想入门或者想转行的小伙伴聊了一下,发现大家对于怎么学习人工智能,怎么学习相关算法,都是一脸蒙圈,不知道该从哪里抓起。这里根据个人的学习经历,总结了一个大概的经验,希望能帮助到大家。本人是非计算机相关专业,也非人工智能和算法的相关专业出身,从一个一点代码都不会的选手,到了现在的人工智能算法工程师,也是通过一步步学习才进入到这个行业的。(总结内容均为个人理解,如有错误,欢迎指正)
下面所列内容,按照标题顺序,就是一个大概的学习路线。
一、python基础
老话说得好,工欲善其事必先利其器,Python 是人工智能领域中最常用的语言之一,这得益于其简洁的语法和强大的库支持。
对于想入门的童鞋来讲,这个是重中之重,如果你想入门人工智能,就必须学习python。但是python广义来讲,包括的内容太多了,对于一个人工智能的算法工程师来说,我们只去针对性的学习我们需要的那些就够了。下面列举了一部分算法工程师常用的python工具库。
- NumPy - 一个用于进行大规模数值计算的基础库,提供了高效的多维数组对象。
- Pandas - 提供了高性能的数据结构和数据分析工具,特别适合数据清洗和准备。
- Matplotlib/Seaborn - 用于绘制图表和可视化数据,帮助理解数据分布和模型表现。
- Scikit-learn - 一个简单而有效的数据挖掘和数据分析库,内置了大量的经典机器学习算法,如回归、分类、聚类等,机器学习相关岗位最常用的模型库之一。
- TensorFlow - 由 Google 开发的开源框架,支持广泛的机器学习和深度学习应用,包括神经网络的构建、训练和部署。
- Keras - 高级神经网络API,可以运行在TensorFlow之上,简化了深度学习模型的创建过程。
- PyTorch - 由 Facebook 的 AI 研究小组开发的一个基于 Torch 的 Python 优先库,提供动态计算图和自动求导功能,非常适合研究工作,和tensorflow可对比着看,tensorflow是对各种功能封装的比较好,方便调用。pytorch相对来说更灵活,可以做到细节的自由定制化操作,目前相关学习网站中,pytorch模型也是比较多的。
- Theano - 一个定义、优化并评估数学表达式的库,尤其适用于需要大量计算的场景,比如深度学习中的梯度下降。
- Caffe/Caffe2 - 专注于速度的卷积神经网络(CNN)框架,特别适合图像识别任务。
- OpenCV - 一个开源计算机视觉库,包含数百种计算机视觉算法。
- NLTK (Natural Language Toolkit) - 为 NLP 提供易于使用的接口,涵盖了文本处理的标准任务,如分词、词干提取、语料库管理等。
- spaCy - 一个工业级别的自然语言处理库,以其高效性和易用性著称,支持多种语言。
- Gensim - 用于处理文本数据,特别是主题建模和文档相似度分析。
- Statsmodels - 用于统计建模和测试,提供了一系列经典的统计模型,如线性回归、时间序列分析等。
- XGBoost/LightGBM/CatBoost - 这些是针对梯度提升树的优化实现,能够非常快速地训练出高性能的模型,实际上就是一些模型的快速应用。
二、机器学习
机器学习主要分为有监督学习、无监督学习,还有半监督学习,有些地方把强化学习也算进机器学习里面了,但是个人认为当下的强化学习不太适合归到机器学习类别里面了。
主要用到的工具是前面介绍的sklearn库。
下面列举监督学习、无监督学习,还有半监督学习包括的部分内容。
监督学习
监督学习是指使用带有标签的数据集来训练模型,目的是让模型能够对未知数据进行准确的预测或分类。
- 线性回归 (Linear Regression) 用于连续值的预测,如房价预测等。
- 逻辑回归 (Logistic Regression) 用于二分类问题,也可以通过多类逻辑回归解决多分类问题。
- 决策树 (Decision Trees) 通过一系列规则(节点)来进行分类或回归。
- 随机森林 (Random Forests) 由多个决策树组成,通过投票机制提高预测准确性,并减少过拟合风险。
- 支持向量机 (Support Vector Machines, SVM) 通过找到一个超平面来区分不同类别的数据点,最大化类别之间的间隔。
- K-近邻算法 (K-Nearest Neighbors, KNN) 依据最近的k个邻居的多数类别来决定新的样本属于哪一类。
- 朴素贝叶斯 (Naive Bayes) 基于贝叶斯定理和特征条件独立假设的简单概率分类器。
- 梯度提升机 (Gradient Boosting Machines, GBM) 通过迭代地添加新模型来纠正已有模型的错误,以逐步提高整体性能。
- XGBoost/LightGBM/CatBoost 这些是高效的梯度提升库,特别适合处理大规模数据集。
无监督学习
无监督学习是指在没有标签的情况下让模型自行发现数据中的结构。
- 聚类 (Clustering) 如K均值聚类 (K-Means Clustering) 和层次聚类 (Hierarchical Clustering),用来将数据分成不同的组别。
- 主成分分析 (Principal Component Analysis, PCA) 一种降维技术,用于提取最重要的特征并降低数据维度。
- 自编码器 (Autoencoders) 一种神经网络,用于学习高效的数据编码,常用于降维或生成模型。
- t-SNE (t-Distributed Stochastic Neighbor Embedding) 用于可视化高维数据,将数据点映射到二维或三维空间中。
半监督学习
结合了少量有标签数据和大量无标签数据进行学习。
- 自训练 (Self-Training) 使用已有的有标签数据训练初始模型,然后用该模型为无标签数据打标签,再用新标记的数据重新训练模型。
- 协同训练 (Co-Training) 利用多个视图或多组特征,每个视图都训练一个模型,模型之间相互提供标签信息。
三、深度学习
深度学习,可以说是算法工程师的真正正文东西,作为一个算法工程师,日常应用最多的就是深度学习。在面试找工作的时候,被问的最多的也是这部分内容。下面列举一下面试常用的深度学习算法。
- 卷积神经网络 (Convolutional Neural Networks, CNN)- 主要用于图像识别和处理任务。CNN通过使用卷积层来自动检测输入数据中的局部特征,非常适合处理视觉数据。- 应用:图像分类、目标检测、人脸识别、医学影像分析等。
- 循环神经网络 (Recurrent Neural Networks, RNN)- 适用于序列数据,如文本或时间序列。RNN可以记住之前的输入信息,这使得它们适合处理上下文相关的数据。- 应用:语言建模、文本生成、语音识别、情感分析等。
- 长短期记忆网络 (Long Short-Term Memory, LSTM)- 是一种特殊的RNN,设计用来解决普通RNN在长期依赖问题上的不足。LSTM通过门控机制有效地保持长期信息。- 应用:机器翻译、语音识别、手写识别等。
- 门控循环单元 (Gated Recurrent Unit, GRU)- 另一种改进版的RNN,与LSTM类似但结构更简单。GRU也具有门控机制,能够更好地处理序列数据中的长期依赖。- 应用:类似于LSTM的应用场景,但在某些情况下可能更加高效。
- 自编码器 (Autoencoders)- 一种无监督学习方法,用于学习数据的有效编码。自编码器由编码器和解码器两部分组成,编码器将输入数据压缩为低维表示,解码器则尝试从该表示重构原始数据。- 应用:降维、去噪、异常检测、特征学习等。
- 变分自编码器 (Variational Autoencoders, VAE)- 自编码器的一种变体,不仅能够学习数据的紧凑表示,还能够在潜在空间中引入统计特性,允许生成新的样本。- 应用:数据生成、图像合成、推荐系统等。
- 生成对抗网络 (Generative Adversarial Networks, GAN)- 包含两个网络:生成器和判别器。生成器试图生成看起来像真实数据的新数据,而判别器则试图区分真实数据和生成的数据。两者相互竞争,从而提高生成质量。- 应用:图像合成、风格转换、数据增强等。
- Transformer- 一种主要用于自然语言处理的架构,它利用了自注意力机制来处理输入序列,相比RNN,Transformer能并行处理序列数据,大大提高了训练效率。- 应用:机器翻译、文本摘要、问答系统等。
- 深度信念网络 (Deep Belief Networks, DBN)- 由多层受限玻尔兹曼机(RBM)堆叠而成,是一种用于无监督学习的深度神经网络。- 应用:预训练深层神经网络、特征提取等。
四、强化学习
强化学习这里不做介绍,属于有能力的同学进一步学习的内容,对于像入门的同学来讲,这部分可以作为了解,当作面试的加分项,但是不建议一开始就学这部分。
五、大模型(LLM)
大模型,严格来讲是属于深度学习和强化学习的产品,在当下的算法面试中,这是一个很重要的加分项,目前算法方面的面试,基本都会涉及到大模型,会问了不了解大模型,或者有没有做过大模型相关的项目等等。所以这里单独列出来。
“大模型”通常指的是具有大量参数的深度学习模型。这些模型因其规模庞大而得名,它们可以包含数十亿甚至数千亿个参数。
目前常见的大模型包括GPT,通义千问,千帆,智谱,deepseek等等,相信有一些大家都用过。
对于大模型的研发,不建议入门童鞋朝着这个方向学习,大模型研发,目前大部分在大厂或者各类研究院有岗位,要求也很高。
目前市面上的人工智能算法岗位,大部分是在做结合大模型和业务的落地项目,以大模型的应用为主。所以这部分,我们主要学的是怎么用大模型,在有限的条件下,把大模型发挥到及至,完成复杂的项目,达到业务要求。
我们主要学习的知识点如下:
- Prompt Engineering (提示工程)- 描述:设计有效的输入提示(prompt)来引导大模型生成期望的输出。这在文本生成、问答等任务中尤为重要。- 应用:通过精心设计的提示,可以提高生成内容的相关性和质量。
- Fine-tuning (微调)- 描述:在预训练的大模型基础上,使用特定领域的数据进行进一步训练,以使模型适应特定任务或领域。- 应用:在少量标注数据上快速获得高性能模型,适用于各种NLP任务。
- Model Quantization (模型量化)- 描述:将模型中的浮点数权重转换为低精度的整数表示,减少模型大小和计算量,同时保持性能。- 应用:加速推理过程,减少内存占用,特别适合移动设备和边缘计算场景。
- Knowledge Distillation (知识蒸馏)- 描述:用一个大模型(教师模型)去训练一个小模型(学生模型),让学生模型学习到教师模型的知识。- 应用:在保持性能的同时减小模型尺寸,便于部署在资源受限的环境中。
- Transfer Learning (迁移学习)- 描述:利用预训练模型的知识迁移到新任务上,通常只需要在新任务上进行少量的微调。- 应用:快速构建高性能模型,特别是在数据稀缺的情况下。
- Zero-shot and Few-shot Learning (零样本/少样本学习)- 描述:零样本学习是指模型能够在没有见过任何示例的情况下执行任务;少样本学习则是在仅有少量示例的情况下学习。- 应用:解决新出现的任务或处理数据稀疏的问题。
- Reinforcement Learning from Human Feedback (基于人类反馈的强化学习)- 描述:通过人类提供的反馈来指导模型的学习过程,从而优化模型的行为。- 应用:改进对话系统、游戏AI等,使其更加符合人类偏好。
- Efficient Inference (高效推理)- 描述:优化模型的推理过程,以减少延迟和计算成本,包括硬件加速、批处理等技术。- 应用:实时应用、大规模用户服务、在线推荐系统等。
- Model Pruning (模型剪枝)- 描述:移除模型中不重要的权重或神经元,减少模型复杂度而不显著影响性能。- 应用:压缩模型大小,加快推理速度,降低能耗。
六、总结
上面内容只是列举了一个大框架,让大家对大模型的学习有一个宏观的了解,不是所有知识点都要滚瓜烂熟,实际工作中,都是用到什么学什么。了解这些后,方便大家针对自己要走的算法方向,安排合理的学习计划,不至于浪费太多时间在盲目学习上。
同时,对于想入行的同学,要注意了,这个行业是一个需要终身学习的行业,想着入行后就混到退休的童鞋,就不建议往这个方向走了,不太适合摸鱼。不要只看行业收入水平,还要了解行业门槛和实际的工作内容。
如果有想深入了解,进行学习或者需要辅导帮助,包括知识点梳理,答疑,就业辅导,面试辅导,简历辅导等等,都可以过来扫码添加过来交流,备注:CSDN
版权归原作者 豆子AI 所有, 如有侵权,请联系我们删除。