【9.16-9.22学习周报】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


目录

摘要

这周主要学习了逻辑回归模型,已经出现过度拟合问题时如何对代价函数正则化以解决过度拟合。学习Pytorch框架中各种Transform的使用。此外这周还对我的导师的研究方向人工智能情感模型进行了调研,了解人工智能情感模型的研究背景和意义。

Abstract

This week, I mainly learned about logistic regression models, and how to regularize the cost function to solve overfitting when overfitting problems have occurred. Learn how to use the various Transforms in the Pytorch framework. In addition, this week, I also conducted a survey on my supervisor’s research direction, AI emotion model, to understand the research background and significance of AI emotion model.

一、逻辑回归

由于之前学习的很多模型,例如恶性肿瘤的判断,是否交易等问题都属于二元模型,即他们的选项只有yes or no,这些就是我们常见的分类问题。我们将因变量(dependent variable)可能属于的两个类分别称为负向类(negative class)和正向类(positive class),则因变量 y ∈ { 0 , 1 } y\in { \{0,1\} \\} y{0,1} ,其中 0 表示负向类,1 表示正向类。
根据线性回归模型我们只能预测连续的值,然而对于分类问题,我们需要输出0或1,我们可以预测:

h θ ( x ) > = 0.5 {h_\theta}\left( x \right)>=0.5 hθ(x)>=0.5时,预测 y = 1 y=1 y=1

h θ ( x ) < 0.5 {h_\theta}\left( x \right)<0.5 hθ(x)<0.5时,预测 y = 0 y=0 y=0
在这里插入图片描述
假设此时我们观测到一个特殊的恶性肿瘤:
在这里插入图片描述
这时,再使用 0.5 0.5 0.5作为阀值来预测肿瘤是良性还是恶性便不合适了。可以看出,线性回归模型,因为其预测的值可以超越 [ 0 , 1 ] [0,1] [0,1]的范围,所以并不适合解决这个分类问题。

对此情况我们可以采用sigmoid函数来表示:在这里插入图片描述

在这里插入图片描述

1.决策边界

决策边界(decision boundary)的概念能更好地帮助我们理解逻辑回归的假设函数在计算什么。上述肿瘤的案例我们可以知道:f w,b(x)=g(z)=sigmoid(z),z=wx+b。根据sigmoid的图像我们可以知道,当f w,b(x)>=0.5时我们预测的是y=1(恶性肿瘤)的概率,f w,b(x)<0.5时预测的是y=0(良性肿瘤)的概率。由等式f w,b(x)=g(z)=sigmoid(z),z=wx+b我们可以进一步地推算出,当wx+b>=0时预测y=1,wx+b<0时预测y=0.在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
从上面两个例子可以看出,决策边界可以是直线也可以是圆等多种形状,具体取决于样本结果的分布。事实上我们可以用非常复杂的模型来适应非常复杂形状的判定边界。

2.逻辑回归中的代价函数

对于逻辑回归使用平方误差成本函数会使得代价函数出现多个局部最小值。很显然平方误差成本函数不太适合用于逻辑回归模型。在这里插入图片描述
我们重新定义逻辑回归的代价函数为: J ( θ ) = 1 m ∑ i = 1 m C o s t ( h θ ( x ( i ) ) , y ( i ) ) \bold{J\left( \theta \right)=\frac{1}{m}\sum\limits_{i=1}^{m}{{Cost}\left( {h_\theta}\left( {x}^{\left( i \right)} \right),{y}^{\left( i \right)} \right)}} J(θ)=m1i=1mCost(hθ(x(i)),y(i)),其中

C o s t ( h θ ( x ) , y ) = { − l o g ( h θ ( x ) ) , y = 1 − l o g ( 1 − h θ ( x ) ) , y = 0 Cost(h_{\theta}(x),y)=\left\{\begin{array}{ll} -log(h_{\theta }(x))&,y=1\\ -log(1-h_{\theta }(x))&,y=0 \end{array}\right. Cost(hθ(x),y)={log(hθ(x))log(1hθ(x))y=1y=0

C o s t ( h θ ( x ) , y ) Cost\left( {h_\theta}\left( x \right),y \right) Cost(hθ(x),y)函数的特点是:
● 当实际的 y = 1 y=1 y=1 h θ ( x ) {h_\theta}\left( x \right) hθ(x)也为 1 时误差为 0,当 y = 1 y=1 y=1 h θ ( x ) {h_\theta}\left( x \right) hθ(x)不为1时误差随着 h θ ( x ) {h_\theta}\left( x \right) hθ(x)变小而变大;
● 当实际的 y = 0 y=0 y=0 h θ ( x ) {h_\theta}\left( x \right) hθ(x)也为 0 时代价为 0,当 y = 0 y=0 y=0 h θ ( x ) {h_\theta}\left( x \right) hθ(x)不为 0时误差随着 h θ ( x ) {h_\theta}\left( x \right) hθ(x)的变大而变大。

可将 C o s t ( h θ ( x ) , y ) Cost\left( {h_\theta}\left( x \right),y \right) Cost(hθ(x),y)简化为: C o s t ( h θ ( x ) , y ) = − y × l o g ( h θ ( x ) ) − ( 1 − y ) × l o g ( 1 − h θ ( x ) ) Cost\left( {h_\theta}\left( x \right),y \right)=-y\times log\left( {h_\theta}\left( x \right) \right)-(1-y)\times log\left( 1-{h_\theta}\left( x \right) \right) Cost(hθ(x),y)=y×log(hθ(x))(1y)×log(1hθ(x))

带入代价函数得到:
J ( θ ) = 1 m ∑ i = 1 m [ − y ( i ) log ⁡ ( h θ ( x ( i ) ) ) − ( 1 − y ( i ) ) log ⁡ ( 1 − h θ ( x ( i ) ) ) ] J\left( \theta \right)=\frac{1}{m}\sum\limits_{i=1}^{m}{[-{{y}^{(i)}}\log \left( {h_\theta}\left( {{x}^{(i)}} \right) \right)-\left( 1-{{y}^{(i)}} \right)\log \left( 1-{h_\theta}\left( {{x}^{(i)}} \right) \right)]} J(θ)=m1i=1m[y(i)log(hθ(x(i)))(1y(i))log(1hθ(x(i)))]即:

J ( θ ) = − 1 m ∑ i = 1 m [ y ( i ) log ⁡ ( h θ ( x ( i ) ) ) + ( 1 − y ( i ) ) log ⁡ ( 1 − h θ ( x ( i ) ) ) ] \bold{J\left( \theta \right)=-\frac{1}{m}\sum\limits_{i=1}^{m}{[{{y}^{(i)}}\log \left( {h_\theta}\left( {{x}^{(i)}} \right) \right)+\left( 1-{{y}^{(i)}} \right)\log \left( 1-{h_\theta}\left( {{x}^{(i)}} \right) \right)]}} J(θ)=m1i=1m[y(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i)))]

在这里插入图片描述
对逻辑回归模型我们同样可以采用梯度下降法,运算过程可能比较复杂这里展示笔算的主要步骤:
在这里插入图片描述

二、Transforms

transforms的作用就跟他的翻译一样,“转换”。我们可以将transforms看作一个工具箱,我们可以用这个工具箱将我们特定格式中的图片,通过使用工具箱中的工具来转化为我们想要的结果。
在这里插入图片描述
下面我们来列举几个平时常用的transforms。

1.Tensor数据类型

Tensor 作为一种多维数组,提供了表示和操作复杂数据的能力,是深度学习和科学计算中的核心数据结构。它在数据表示、计算图构建、高效运算、自动微分、数据流动等方面发挥着重要作用。在神经网络中经常要将数据类型转变为tensor类型来进行训练。

我们首先要创建一个ToTensor类的实例,再将我们的输入传入到该实例中即可转化为Tensor类型:

from torchvision import transforms
from PIL import Image

img_path="dataset/train/ants/0013035.jpg"
img=Image.open(img_path)

tensor_trains=transforms.ToTensor()
tensor_img=tensor_trains(img)
print(tensor_img)



在这里插入图片描述
可以看到我们将输入进来的PIL image类型转变为tensor类型。接着我们就可以访问我们转化为tensor数据类型的图片:

from torch.utils.tensorboard import SummaryWriter
from torchvision import transforms
from PIL import Image

writer=SummaryWriter("log")

img=Image.open("dataset/train/bees/16838648_415acd9e3f.jpg")

train_tensor=transforms.ToTensor()
img_tensor=train_tensor(img)
writer.add_image("ToTensor",img_tensor)
writer.close()

在这里插入图片描述

2.Normalize

将图片标准化,图片3个维度的值在[0,1]之间,通过标准化图片可以将值转化为想要的区间内.
输入:实例化对象时__init__输入:均值(mean),标准差(std)

自动调用内置函数输入:tensor类型的图片

标准化:(img-mean)/std。此时图片将进行改变

#Normalize
train_normalize=transforms.Normalize([0.5,0.6,0.5],[0.5,0.8,0.5])
img_norm=train_normalize(img_tensor)
print(img_norm[0][0][0])
writer.add_image("Normalize",img_norm)

writer.close()

在这里插入图片描述

3. Resize

将PIL类型的图片重新变换尺寸,如200200的图片尺寸,变为512512。

#Resize
train_resize=transforms.Resize((200,300))
img_resize=train_resize(img)#Resize需要的是PIL类型的,不是Tensor
#将调整好大小的图片转为tensor,否则add_image()会报错
img_resize=train_tensor(img_resize)
writer.add_image("Resize",img_resize)
writer.close()

可以明显看到经过Resize处理后的图片同原来的图片大小有明显的变化。
在这里插入图片描述
在此多提一句,当使用transforms时不知道方法所使用的数据类型时可以按住ctrl键再用鼠标点击对应方法查看官方文档。

4.tensorvision

tensorvision是pytorch官网中为了方便我们对数据进行训练给我们提供的数据集,我们可以点进官方文档查看有哪些数据集以及如何使用。在这里插入图片描述

import torchvision

from torch.utils.tensorboard import SummaryWriter

dataset_transform=torchvision.transforms.Compose([
    torchvision.transforms.ToTensor()
])

train_set=torchvision.datasets.CIFAR10(root="./dataset",train=True,transform=dataset_transform,download=True)
test_set=torchvision.datasets.CIFAR10(root="./dataset",train=False,transform=dataset_transform,download=True)


# img,target=test_set[5]
# img.show()

writer=SummaryWriter("tensorvision")

for i in range(10):
    img,target=train_set[i]
    writer.add_image("train_set",img,i)

writer.close()




创建好tensorvision实例对象后,我们选择要训练的数据集,按住ctrl+p查看要填写的参数然后就可以开始下载数据集,可能下载过程会有点慢。然后我们就可以创建SummaryWriter的实例,用for循环遍历数据集中的每个数据打印在tensorboard上。在这里插入图片描述

三、拟合问题

拟合通俗来讲就是我们设置的模型的预测结果与实际结果的合适程度,我们来看之前预测房价的例子:
在这里插入图片描述
在第一个模型中该线性模型我们所预测的结果与实际结果的偏差较大,这种现象叫做欠拟合,说明该模型不能很好地适应我们的训练集。第二个模型基本上很好地预测了我们的实际结果,虽然存在一定地偏差,但是该模型已经很好地适应了我们的训练集。第三个模型的实际结果和预测结果完全相同,但这不见得是一件好事,这就是过拟合现象。

过拟合虽然可以让我们的模型很好地去适应我们的训练集,但是"为了拟合而拟合”脱离了我们算法的本质,并且当出现新的结果要预测时该模型的结果会变得很差。

总得来说过拟合有如下几个缺点:
泛化能力差:过度拟合的模型在训练数据上表现良好,但在测试数据或新数据上表现较差,无法有效预测未见数据。

模型复杂性增加:为了达到过度拟合,模型通常会变得非常复杂,导致计算成本和训练时间增加。

不必要的复杂性:过度拟合可能使模型学习到数据中的噪声,而不是潜在的、有用的模式,从而降低模型的实际应用价值。

误导性评估:在训练数据上获得的高准确率可能会误导决策者,使他们相信模型具有良好的性能,而实际情况却并非如此。

维护困难:复杂的模型更难以理解、调试和维护,这可能在后续的模型更新或改进中带来困难。

对新数据的脆弱性:过度拟合的模型对新数据的变化非常敏感,可能导致性能急剧下降。

1.解决过拟合

第一种方法:丢弃一些不能帮助我们正确预测的特征。可以是手工选择保留哪些特征,或者使用一些模型选择的算法来帮忙。但是该方法可能会让我们失去一些真正影响实际结果的特征导致我们预测的结果可能会不准确。

第二种方法:正则化。

2.正则化

● 结构风险最小化 (Cstructural risk minimization, SRM) 是为了防止过拟合而提出来的策略。结构风险最小化等价于正则化 (regularization) 。结构风险是在经验风险上加上表示模型复杂度的正则化项(regularizer )或罚项 (Cpenalty term) 。
● 正则化是结构风险最小化策略的实现。正则化项一般是模型复杂度的单调递增函数,模型越复杂,正则化值就越大。

我们知道过拟合是由于有太多的高次项x,虽然这些高次项能够让数据更好地拟合,但是同时也导致了预测新结果的困难。根据上面第三个模型我们可以设置一个非常小的w3和w4让他俩接近0以达到降低过度拟合的效果,可是实际问题中,我们并不知道哪些特征w对模型的影响大哪些对模型预测的结果小,因此在常规的代价函数中我们可以引入一个带参数λ的正则项,λ称为正则化参数。
正则化一般具有如下形式:
在这里插入图片描述
在这里插入图片描述
引入该正则项以后,我们不需要去特定的缩小某个特征,而是雨露均沾地把所有特征w给减小,这样就很好地保证了我们的模型不会出现过度拟合化。但是此时要面对一个新问题,就是对正则化参数λ的选择。
正则化参数λ的作用就是负责调节我们的特征项w的大小假设λ=0,我们的模型可能就会出现过度拟合的现象因为此时我们没有正则项。若λ特别特别大,就会导致正则项的权重过高,根据梯度下降公式会让我们的特征w减小为0,此时我们的代价函数就是直线会出现欠拟合的现象。所以对于正则化,我们要取一个合理的 λ \lambda λ 的值,这样才能更好的应用正则化。

3.用于线性回归的正则化

线性回归正则化就是在原来将梯度下降法用于线性回归模型时,将以前的线性回归模型加了一个正则项:在这里插入图片描述
可以看出,正则化线性回归的梯度下降算法的变化在于,每次都在原有算法更新规则的基础上令w值减少了一个额外的值。

4.用于逻辑回归的正则化

在这里插入图片描述

四、关于情感人工智能的理解

基于需求的人工智能情感生成模型

  1. 引言
    随着人工智能技术的不断发展,其所产生的影响已经覆盖到了我们的生活。我们日常中的喜怒哀乐等情感,目前来看已经能够被不断进化的人工智能所识别,甚至已经演化出了与情感有关的人工智能模型。不过现有的人工智能情感模型,大多都是基于收集互联网数据进行训练而的来的情感模型,在现实中这些基于互联网数据所训练出来的模型太机械化,缺乏灵动性。缺乏对人们更深层次情感内容的分析和感知。并且在不同文化中的不同情感认知存在偏差,现有的人工智能情感模型无法在多轮对话中很好地去识别这点。本研究提出的基于需求的情感生成模型是基于个体需求变化而产生情感变化的模型,可以让人工智能情感模型更加拟人化,能够像人一样进行更深层次的情感思考,使得人工智能情感模型更加所产生的情感更加灵动化、个性化、可解释化。
    1.1人类情感研究的背景
    早在以前我们的先辈就已经开始了对人类情感的研究和探索,其中各种理论可谓是层出不穷、百家争鸣。人类情感研究涉及多个学派和理论流派,以下是6大主要学派:心理分析学派、行为主义学派、人本主义学派、认知学派、生物心理学派、社会文化学派。
    (1) 心理分析学派
    心里分析学派强调潜意识对情感和行为的影响,情感与个体早期经历、冲突及无意识欲望密切相关。该学派的代表人物主要有:西格蒙德·弗洛伊德。他是心理学和精神分析学的创始人,他提出了许多重要理论,包括潜意识、压抑和梦的解析。他的理论强调内心冲突和童年经历对成年人的心理状态和行为的影响。相关方面的著作有: 《梦的解析》等。
    (2) 行为主义学派
    行为主义学派认为人所产生的情感是由于外部刺激的反应,强调环境对情感的养成和塑造,情感通过条件反射和强化行为来形成。该学派的代表人物主要有: 约翰·华生、B.F.斯金纳。其中约翰·华生是行为主义学派的创始人。他认为心理学研究的对象不是意识而是行为。代表作品有: 《行为主义》,《行为——比较心理学导言》。
    (3) 人本主义学派
    人本主义学派强调以人为本,强调个体的主观体验和自我实现,强调情感需求在人们成长中的重要性,认为人们有内在的自我实现动机。该学派的代表人物主要有: 卡尔·罗杰斯、亚伯拉罕·马斯洛。
    (4) 认知学派
    该学派认为情感是由人对事物的认知和感触而产生,强调思维对情感的影响,情感可通过认知来改变。该学派的代表人物有: 阿尔伯特·埃利斯、亚伦·贝克。
    (5) 生物心理学派
    该学派认为情感的产生与人体本身的生理结构,激素水平,神经等密切相关。强调生物因素在情感产生和表达中的作用,特别是面部表情和情感识别。该学派的主要代表人物有: 保罗·艾克曼。相关方面的代表著作有《情绪的解析》等。
    (6) 社会文化学派
    该学派认为情感源自于社会文化和社会行为,强调情感如何受到社会关系、文化规范和群体动态的影响。情感是社会互动的结果。该学派的代表人物主要有:维果茨基、艾米·柯特。
    情感计算(Affective Computing)是一个跨学科的研究领域,涉及心理学、计算机科学和人机交互等多个领域。早在上个世纪的60-80年代,我们的先辈就已经开始了对情感计算的探索。心理学家如保罗·艾克曼(Paul Ekman)提出了情感的基本模型,研究情感的面部表情与生理反应。1995年,罗莎琳达.皮克在她新发布的书籍《Affective Computing》中首次系统地提出了情感计算的概念,强调计算机应该能够识别、理解和表达情感。这一工作为情感计算奠定了理论基础。
    近几年来,随着深度学习技术的不断发展和成熟,通过卷积神经网络(CNN)和递归神经网络(RNN)能够极大地提高情感计算的准确性.
    1.2人类情感研究的必要性
    根据以上人们对于情感研究的历史不难看出,早在以前科学家们就通过研究人类情感来调节人们的生理和心理活动,对于规范人们的社会行为和促进个体之间的相互交往具有非常重要的意义。当今社会随着经济形势的变化和社会的变革,人们的情感变化也随之波动,这给人工智能情感模型的发展和应用提供了非常良好的契机。本研究提出的基于需求的情感生成模型是基于个体需求变化而产生情感变化的模型着重从人类情感研究领域中的情感计算方向出发,结合心理学、神经科学。在算法理论方面,我采用”需求情感理论。该理论核心认为人的需求影响这情感的变化,需求的得失影响着人内在心理和外在表情生理的变化。需求遵循着马斯洛需求层次。底层需求的缺失会影响着上层层级的需求,不同层级的需求增加或者减少都会对情感产生不同的作用。通过将研究方向和我们的算法理论相结合,我们的目的就是要使得AI具有人类的情感,能够进行更深层次和更灵活,更富有个性地进行情感分析和思考。

总结

由于我的导师研究方向是人工智能情感大模型,所以这周我特地对该方向的研究背景和未来的研究方向做了一个调研。这周学习了正则化,理解了如何通过正则化来解决过度拟合问题。还学习pytorch中各种transform的使用以及通过tensorvision来调用我们想要的训练集。下周将继续深入学习,开始神经网络的内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值