在大一的暑假,我报名参加了学校组织的“第二课堂”AI实践,于7月11日正式开始了为期一个月的学习。
在第一节课中,学习的主要内容是Python环境配置及基础学习,在这节课中,对于所学习的东西,我总结了如下四个小点:1、在Python入门的学习课程中,学会了下载Vs code以及miniconda,以及在conda如何配置一个Python环境。2、学会了使用jupyter notebook来编写代码,以及在终端中打开jupyter的方法,需要做miniconda所创建的Python环境中打开。3、学习了如何在jupyter notebook中打开所需要的文件,即在进入环境后,jupyter notebook+文件所在的路径。4、在所给的链接中https://www.runoob.com/python3/python3-basic-syntax.html中学习了一些Python的基础知识,比如读取文件、在文件中写一些东西。
在第二大节课中,主要学习关于pandas的一些东西,分为两小节来讲:pandas入门和pandas作业讲解。我将所学习的东西总结为了以下13点:1.加载数据的两种方法:相对路径加载和绝对路径加载2.数据模块读取:例如:chunker=pd.read_csv('./train.csv',chunksize=100)
for i in chunker:
print(i)
3.改表头:中英文互改4.查看数据基本信息:info函数5.查看表格前几行:head(数字),查看表格后几行:tail(数字)6.判断数据是否为空:isnull7.隐藏元素:drop8.仅显示某一条件下的信息:文件名[文件名['条件名']条件限制]9.显示某几行或某几个数据:loc函数或iloc函数10.让某一列进行降序或升序排列:sort_values这个函数中by参数指向要排列的列,ascending参数指向排序的方式(升序还是降序)11.让行索引进行升序或降序排列:sort_index函数,若直接运用,默认为升序排列;若想要降序排列,括号里应该写ascending=False12.让列索引进行升序或降序排列:sort_index函数,括号里应写axis=1。若直接运用,默认为升序排列;若想要降序排列,括号里应该写ascending=False13.对某一列数据进行基本统计:describe函数,可以得到数据大小,平均值,标准差,方差,最大值,最小值等。
在第三节课中,对阿里云天池中的一个赛题“二手车价格预测”有关的代码进行了学习和讲解,我将所学习到的东西总结为以下六点:1.简单学习了梯度下降思想(导数与梯度是不一样的,一个是标量,一个是矢量):我们可以根据导数day/dx,对X进行迭代。则x=x-dy/ex,由于dy/dx的值比较大,每次迭代x跨的一步很长,则我们需要设定一个参数lr(也就是我们所说的学习率或步长)x=xlr×dy/dx2.损失函数:得出真实值与预测值之间的差距,即通过最小化损失函数求解和评估模型,通常在统计学和机器学习中被用于模型的参数估计3.认识了特征缩放(归一化):当某一特征值很大,会使预测值与真实值的差距很大,对损失函数影响很大。使用原因:使用单一指标对某事物进行评价井不合理,因此需要多指标综合评价方法。由于性质不同,不同评价指标通常具有不同的量钢和数量级。当备指标相差很大时,如果直接使用原始指标債计算综合指标,就会实出数值较大的指标在分析中的作用、削弱数值较小的指标在分析中的作用。为保证结果的可靠性,就要对各指标的原始数据进行特征缩放。 不使用特征缩放的缺点:知特征x1的数值是100左右,特征x2的数值是1左右,方程为y=w1x1+w2x2,则w1对y的影响就更大,对Loss的影响也更大,损失函数关于w1的梯度也更大,而损失函数关于w2的梯度却很小,因此两个特征就不能使用相同的学习率。不进行特征缩放的话,Emor Surface就是一个椭圆,梯度下降时不一定是朝着最优点(圆心),速度慢;如果进行了待征缩放,Error Surface会尽可能趋近于圆,因此梯度下降时会一直朝着最优点(圆心),所以速度快。4.对某一模型进行计算机训练时,数据集分为训练集、验证集和测试集。训练集:更新参数,对数据进行周期训练;验证集:选出合适的参数;测试集:测试这些参数或数据的性能5.认识了神经网络结构:分为①参数输入层:接收外部输入数据,通常是原始特征数据。②隐藏层:负责将输入数据进行变换,通过加权求和、激活函数等操作来提取更高层次的特征。网络中可以有一个或多个隐藏层,深层神经网络通常包含多个隐藏层。③输出层:将处理后的信息转换为最终输出,通常用于分类、回归等任务。通过这三个层可以得出我们想要的数据。6.Relu函数:非线性激活函数-f(x) = max(0, x),当输入的X值小于0时,输出为0;当输入X值大于0时,输出为X。这种特性使得ReLU函数能够增加神经网络的非线性,提高网络的表达能力。
在第四大节课中,我们学习了大语言模型,分为了两个小节课来学习,我同样对我所学习到的知识进行了总结,主要就是以下的3点:1.简单认识了大语言模型:①概念:transformer是构成所有大语言模型的最核心的模块,通过将输入序列分解为一个个独立的token(例如单词或字符),并分别对每个token应用注意力机制,从而能够并行处理整个序列。它的核心是注意力机制:通过注意力机制,transformer能够聚焦于输入序列中的重要部分。②发展历程③LLM的功能④LLM的特点2.streamlit:可以将深度学习(大语言模型等)进行一个可视化,做成一个交互式界面3.认识了Stable Diffusion(图像生成方法):是一种基于深度学习的文本到图像的生成模型。①主要组成部分:文本编码器、图像解码器和噪声预测器②优点:较高的稳定性、较快的速度、易于优化和多样性控制③缺点:样本多样性牺牲、生成样本速度慢。通过大语言模型的学习,我们可以通过代码来构建出一个可视化界面,然后输入自己所想要的图片内容,计算机就会自动生成一个有关于这个内容的图片。在最后一节课,我们学习了智能体开发,它是基于上节课所学习的大语言模型进行的,我将自己所学习到的东西总结成了以下8点:1.大模型工作原理 2.大模型的缺陷:①它对于不具备的知识(未经过训练)会出现幻觉②无法解决复杂的逻辑任务③不擅长数学运算3.对于大模型缺陷所对应的解决方法:①使用外接知识库给LLM提供知识②多个LLM协同,各自完成自己的任务③使用外接工具,计算器等4.对于Python代码如何调用OpenAI GPT3模型API:①使用openai库调用②request请求5.主流prompt工程:①Few-shot:使用少量例子给LLM提示②Zero-shot:不使用例子输入,仅使用指令③Cut:思维链,让LLM有一个思考的过程④可控生成:是用promot控制LLM生成我们想要的格式,方便后面对其进行解析6.增强检索生成:大模型将检索到的文本(非结构化数据,不可计算)转化为向量(结构化数据,可计算)7.如何将文本变为向量:①one-hot编码 缺点:①当文本较长时,向量会很长②无法计算出两个向量之间的相似度 ②整数编码:缺点:无法计算出两个向量之间的相似度③embedding:可以将词语或者句子映射到坐标中,可以是二维也可以是高维,当两个词语或句子相近时,在空间上也是相近的8.有时检索到的文本是很长的,大模型可以将检索到的文本进行剪切,比如将200字或300字作为一块,然后将剪切为一块的那些文字进行embedding并进行存储(向量和所对应的文本存储在一起)。通过这节课的学习,我可以创建出一个自己想要智能体,让它去帮助我解决一些问题,比如:告知我近十日的天气状况以及如何穿衣,或者是给出我所适合的护肤品等。
在这近一个月的暑期实践中,我学习到了很多我不会的东西并提升了自己的编程能力与计算机知识,度过了一个充实而美好的暑假。