什么是深度学习,怎么学习深度学习?
什么是深度学习,怎么学习深度学习?
-----
网友解答:
-----
深度学习,就是深层神经网络,仅此而已罢了,直接给你个基于深度学习的心音信号分类的例子。心音信号(PCG)是人体重要的生理信号,携带大量生理特征,但这些微弱信号的提取极易受到外界的干扰,关于心音信号处理相关的文章,可参考下面几篇博士论文,讲的非常详细,因此,不再赘述。
[1]陈尧. 心音心电信号处理的神经网络方法[D].四川大学,2021.
[2]李婷. 基于循环平稳信号理论的心音信号处理方法研究[D].大连理工大学,2015.
[3]韩威. 小样本心音分类方法研究[D].广东工业大学,2020.
首先进行心音信号2分类,即正常与异常分类,首先看一下本次试验用的GoogLeNet网络结构信息
看一下Layers结构
看下输入层信息
看一下两类PCG样本的时域波形
然后定义连续小波变换的滤波器组
fb = cwtfilterbank('SignalLength',signalLength,'VoicesPerOctave',12)
将生成的时频图像导入数据文件夹中
allImages = imageDatastore(fullfile(tempdir,dataDir),... 'IncludeSubfolders',true,'LabelSource','foldernames');
80%的样本用于训练,20%的样本用于测试
rng default [imgsTrain,imgsValidation] = splitEachLabel(allImages,0.8,'randomized'); disp(['Number of training images: ',num2str(numel(imgsTrain.Files))]); disp(['Number of validation images: ',num2str(numel(imgsValidation.Files))]);
Number of training images: 1673
Number of validation images: 419
看一下PCG信号CWT时频谱图的样子,首先看一下异常样本
再看一下正常常样本
设置GoogleNet网络的训练参数,采用sgdm优化算法,小批量尺寸MiniBatchSize=15,最大迭代次数MaxEpochs=20,初始学习率InitialLearnRate=1e-4。
options = trainingOptions('sgdm',... 'MiniBatchSize',15,... 'MaxEpochs',20,... 'InitialLearnRate',1e-4,... 'ValidationData',imgsValidation,... 'ValidationFrequency',10,... 'Verbose',false,... 'ExecutionEnvironment','gpu',... 'Plots','training-progress');
开始训练网络
trainedGN = trainNetwork(imgsTrain,lgraph_2,options);
进行网络测试
[YPred,probs] = classify(trainedGN,imgsValidation); accuracy = mean(YPred==imgsValidation.Labels); display(['GoogLeNet Accuracy: ',num2str(accuracy)])
GoogLeNet Accuracy: 0.89948,GoogLeNet的准确率达到了90%左右,不是很高,因为样本并不是很多。
看一下混淆矩阵
计算一下各个类别的分类指标
%"异常”类别分类指标 RecallAbnormal = Matrice_confusione.NormalizedValues(1,1)/sum(Matrice_confusione.NormalizedValues(1,:)); PrecisionAbnormal = Matrice_confusione.NormalizedValues(1,1)/sum(Matrice_confusione.NormalizedValues(:,1)); F1Abnormal = harmmean([RecallAbnormal PrecisionAbnormal]); fprintf('RecallAbnormal = %2.3f\nPrecisionAbnormal = %2.3f\nF1Abnormal = %2.3f\n',100*RecallAbnormal,100*PrecisionAbnormal,100*F1Abnormal); %"正常"类别分类指标 RecallNormal = Matrice_confusione.NormalizedValues(2,2)/sum(Matrice_confusione.NormalizedValues(2,:)); PrecisionNormal = Matrice_confusione.NormalizedValues(2,2)/sum(Matrice_confusione.NormalizedValues(:,2)); F1Normal = harmmean([RecallNormal PrecisionNormal]); fprintf('RecallNormal = %2.3f\nPrecisionNormal = %2.3f\nF1Normal = %2.3f\n',100*RecallNormal,100*PrecisionNormal,100*F1Normal);
RecallAbnormal = 82.470 PrecisionAbnormal = 86.250 F1Abnormal = 84.318 RecallNormal = 93.592 PrecisionNormal = 91.635 F1Normal = 92.603
因为本例只是个示范,所用的样本相对于GoogleNet结构并不多,所以分类准确率并不高。
下面进行心音信号5分类,即正常normal,主动脉瓣反流 AR,主动脉瓣狭窄AS,二尖瓣反流MR,二尖瓣狭窄MS五类,同样本例只是个示范,所用的样本较少,所以分类准确率并不高。看一下5类PCG样本的时域波形
然后定义连续小波变换的滤波器组
fb = cwtfilterbank('SignalLength',signalLength,'VoicesPerOctave',12)
看一下生成的CWT时频谱图
将生成的时频图像导入数据文件夹中
allImages = imageDatastore(fullfile(tempdir,dataDir),... 'IncludeSubfolders',true,'LabelSource','foldernames');
70%的样本用于训练,30%的样本用于测试
rng default [imgsTrain,imgsValidation] = splitEachLabel(allImages,0.7,'randomized'); disp(['Number of training images: ',num2str(numel(imgsTrain.Files))]); disp(['Number of validation images: ',num2str(numel(imgsValidation.Files))]);
设置GoogleNet网络的训练参数
options = trainingOptions('sgdm',... 'MiniBatchSize',15,... 'MaxEpochs',20,... 'InitialLearnRate',1e-4,... 'ValidationData',imgsValidation,... 'ValidationFrequency',10,... 'Verbose',false,... 'ExecutionEnvironment','gpu',... 'Plots','training-progress');
开始训练
trainedGN = trainNetwork(imgsTrain,lgraph_2,options);
进行图像样本分类
[YPred,probs] = classify(trainedGN,imgsValidation); accuracy = mean(YPred==imgsValidation.Labels); display(['GoogLeNet Accuracy: ',num2str(accuracy)])
GoogLeNet Accuracy: 0.9
看一下各类别的分类指标
%"normal" 类别分类指标 RecallNormal = Matrice_confusione.NormalizedValues(5,5)/sum(Matrice_confusione.NormalizedValues(5,:)); PrecisionNormal = Matrice_confusione.NormalizedValues(5,5)/sum(Matrice_confusione.NormalizedValues(:,5)); F1Normal = harmmean([RecallNormal PrecisionNormal]); fprintf('RecallNormal = %2.3f\nPrecisionNormal = %2.3f\nF1Normal = %2.3f\n',100*RecallNormal,100*PrecisionNormal,100*F1Normal); %"AR"类别分类指标 RecallAR = Matrice_confusione.NormalizedValues(1,1)/sum(Matrice_confusione.NormalizedValues(1,:)); PrecisionAR = Matrice_confusione.NormalizedValues(1,1)/sum(Matrice_confusione.NormalizedValues(:,1)); F1AR = harmmean([RecallAR PrecisionAR]); fprintf('RecallAR = %2.3f\nPrecisionAR = %2.3f\nF1AR = %2.3f\n',100*RecallAR,100*PrecisionAR,100*F1AR); % "AS"类别分类指标 RecallAS = Matrice_confusione.NormalizedValues(2,2)/sum(Matrice_confusione.NormalizedValues(2,:)); PrecisionAS = Matrice_confusione.NormalizedValues(2,2)/sum(Matrice_confusione.NormalizedValues(:,2)); F1AS = harmmean([RecallAS PrecisionAS]); fprintf('RecallAS = %2.3f\nPrecisionAS = %2.3f\nF1AS = %2.3f\n',100*RecallAS,100*PrecisionAS,100*F1AS); %"MR"类别分类指标 RecallMR = Matrice_confusione.NormalizedValues(3,3)/sum(Matrice_confusione.NormalizedValues(3,:)); PrecisionMR = Matrice_confusione.NormalizedValues(3,3)/sum(Matrice_confusione.NormalizedValues(:,3)); F1MR = harmmean([RecallMR PrecisionMR]); fprintf('RecallMR = %2.3f\nPrecisionMR = %2.3f\nF1MR = %2.3f\n',100*RecallMR,100*PrecisionMR,100*F1MR); %"MS"类别分类指标 RecallMS = Matrice_confusione.NormalizedValues(4,4)/sum(Matrice_confusione.NormalizedValues(4,:)); PrecisionMS = Matrice_confusione.NormalizedValues(4,4)/sum(Matrice_confusione.NormalizedValues(:,4)); F1MS = harmmean([RecallMS PrecisionMS]); fprintf('RecallMS = %2.3f\nPrecisionMS = %2.3f\nF1MS = %2.3f\n',100*RecallMS,100*PrecisionMS,100*F1MS);
RecallNormal = 100.000 PrecisionNormal = 100.000 F1Normal = 100.000 RecallAR = 100.000 PrecisionAR = 75.000 F1AR = 85.714 RecallAS = 83.333 PrecisionAS = 100.000 F1AS = 90.909 RecallMR = 80.000 PrecisionMR = 100.000 F1MR = 88.889 RecallMS = 83.333 PrecisionMS = 83.333 F1MS = 83.333
由于小样本原因,准确率不是很高。重点来了,更重要的是看看如何进行改进
改进方向:信号前处理
1.可以使用合适的信号降噪方法,移不变小波去噪方法对于PCG,ECG等信号来说还是不错的
基于Cycle Spinning的移不变小波去噪 - 哥廷根数学学派的文章 - 知乎 https://zhuanlan.zhihu.com/p/539089086
2.根据PCG信号的波形,可以自适应的构造更合适的小波
利用机器学习模型设计正交小波滤波器 - 哥廷根数学学派的文章 - 知乎 https://zhuanlan.zhihu.com/p/537254014
为连续小波变换CWT构造新小波 - 哥廷根数学学派的文章 - 知乎 https://zhuanlan.zhihu.com/p/534682868
3.使用时频谱图更加集中的同步压缩变换
同步压缩变换初探 - 哥廷根数学学派的文章 - 知乎 https://zhuanlan.zhihu.com/p/543569766
高阶同步压缩变换--占坑 - 哥廷根数学学派的文章 - 知乎 https://zhuanlan.zhihu.com/p/544716722
在网络选取方面
GoogLeNet相对于本文样本来说太大了,同时我并不推荐迁移学习和样本生成方法,不要问我为什么
基于小波时间散射网络的ECG 信号分类 - 哥廷根数学学派的文章 - 知乎 https://zhuanlan.zhihu.com/p/539001673
基于小波散射算法的空气压缩机异常噪声诊断 - 哥廷根数学学派的文章 - 知乎 https://zhuanlan.zhihu.com/p/531077421
码字不易,且行且珍惜
-----
网友解答:
-----
什么是深度学习?
深度学习:在批判性思维下去学习,通过整理、反思、总结等步骤去寻找解决问题的方式,并在这个过程中得到持续的学习。
举个栗子,来理解一下这个概念。比如现在有小明、小红、小李三位同学,他们在学习中是不一样的。具体表现如下:
小明同学 属于被动学习,要在老师和家长严格要求下,才能去写作业,背诵知识点。对书本上的知识点,大部分是通过笔记和背书来达到记忆的目的,没有去完全理解,自我学习反馈机制没有形成闭环。小红同学 属于半主动学习,能够提前预习知识点,也能够根据课后作业发现自己错误的知识点,然后再去找同等类型题,加强自己对知识点的理解。能够形成闭环,但是闭环过小。小李同学 属于主动学习,能够根据自己学习的知识点,对知识进行归纳、总结、输出。相当于能够把知识点串联起来,通过自主研究,把内容研究的更深刻。同时在学习中形成自己的观点,能够把这类问题总结出来,并且能够用自己的话讲解清楚。那么,这三位同学里,小李同学就属于在学习中深度学习,不流于表面。能够通过不断的总结,归纳,整理,试验,自我反馈,并且最后能够输出自己的观点。
怎么学习深度学习?
如何锻炼自己深度学习的能力?我认为需要做到以下四点:
高效的沟通能力 深度学习并不代表你闭门造车,可以通过合作的方式,找到问题的答案。那么高效的沟通能力需要你能够耐心的聆听别人的观点,同样也能够高效的表达出自己的观点。那么这样的沟通,能够让你们接触到更多的思路。同样也为你的深度学习,提供了思路来源。自主能力 所有的深度学习,代表你自己要有足够的自我管控能力。比如上网课的时候,如果拿起手机去刷朋友圈,这节课你就没办法去做到有效学习,更何况深度学习那。另外深度学习,要求你能够自主去学习,通过自己主动总结归纳去学习,甚至能够输出优质内容,才叫深度学习。求知思维能力 能够在学习中获得归属感和成就感,从而驱动你去不断的学习。比如你通过学习,能够持续在自己感兴趣领域拿奖。这样就能让你的内驱力更强劲,从而让你的求知欲望更加强烈。内容掌控能力 深度学习代表你能够熟练的应用自己学习的内容。这里不仅要求对自己学习的内容很熟悉,还要能够去应用,避免出现纸上谈兵的情况。也就是一定要通过实践,把自己学习的内容应用在实际上。写在最后
深度学习概念很高大上,其实就是代表你学习不能流于其表,要学到本质。另外如何深度学习那,可以通过老师提供的4种方式去锻炼一下,当然还有很多方法去锻炼,比如通过番茄法时间管理,让自己进入深度学习的状态。
以上,仅代表个人观点,如有不足,欢迎各位友友指正!
关注超神胡老师,我们一起变得更优秀!!!
-----
网友解答:
-----
深度学习的概念源于人工神经网络的研究。含多隐层的多层感知器就是一种深度学习结构。深度学习通过组合低层特征形成更加抽象的高层表示属性类别或特征,以发现数据的分布式特征表示。
深度学习的概念由Hinton等人于2006年提出。基于深信度网(DBN)提出非监督贪心逐层训练算法,为解决深层结构相关的优化难题带来希望,随后提出多层自动编码器深层结构。此外Lecun等人提出的卷积神经网络是第一个真正多层结构学习算法,它利用空间相对关系减少参数数目以提高训练性能。
深度学习是机器学习研究中的一个新的领域,其动机在于建立、模拟人脑进行分析学习的神经网络,它模仿人脑的机制来解释数据,例如图像,声音和文本。
同机器学习方法一样,深度机器学习方法也有监督学习与无监督学习之分.不同的学习框架下建立的学习模型很是不同.例如,卷积神经网络(Convolutional neural networks,简称CNNs)就是一种深度的监督学习下的机器学习模型,而深度置信网(Deep Belief Nets,简称DBNs)就是一种无监督学习下的机器学习模型。
把学习结构看作一个网络,则深度学习的核心思路如下:
①无监督学习用于每一层网络的pre-train;
②每次用无监督学习只训练一层,将其训练结果作为其高一层的输入;
③用监督学习去调整所有层;
深度学习在大数据集上的表现比其他机器学习(ML)方法都要好(稍后将讨论例外情况)。这些又如何转化为现实生活中的情形呢?深度学习更适合无标记数据,因而它并不局限于以实体识别为主的自然语言处理(NLP)领域。[1]
-----
网友解答:
-----
您好,针对您的问题,我作为有六年教学经验的老师给出以下答案:
所谓的深度学习是与普通学习对比而言的,就字面的意思可以看出,这种方式的学习要求我们做到深度化,而不是肤浅的了解相关的知识内容,在当今时代,竞争越发激烈,更要求我们把专业领域的事情做到极致,这就进一步让我们的研究要有深度和广度。我认为深度学习应该做到以下几点:
首先要学会合理的制定目标,确定学习方向。要学会梳理自身学习情况,以课本为基础,结合自己做的笔记、试卷、掌握的薄弱环节、存在的问题等,合理的分配时间,有针对性、具体的去一点一点的去攻克、落实。
其次要学习掌握速读记忆的能力,提高学习复习效率。记忆力、注意力、思维、理解力等都要相应的提高,最终提高学习、复习效率,取得好成绩。
再者要学会整合知识点,这点很重要。把需要学习的信息、掌握的知识分类,做成思维导图或知识点卡片,会让你的大脑有条不紊。要学会把新知识和已学知识联系起来完善知识体系。
最后要学会反思、归类、整理出对应的解题思路。错题要整理收集,即使订正和加深理解。
-----
网友解答:
-----
(1)什么是深度学习?
深度学习更强调对知识的深层加工、深度理解及长期保持,善于自主建构且能迁移应用并在真实情景中解决复杂问题。
在这个基础上,我们给出深度学习的定义:
一种基于已有经验的问题发现与探究,是在识记和理解的基础上对知识的综合应用与创造,是追求有一定思维深度和思维广度的综合性学习过程。
深度学习的三个表现:
1、对提出的问题有自己独立的见解。(理解问题)
2、解答问题时,能尝试多种角度回答问题。(思考问题)
3、能够反问有建设性的问题。(领会本质)
深度学习的基本特征:批判理解、内容整合、问题解决、迁移运用、知识建构。
批判性思维:指通过一定的标准评价思维,进而改善思维,是合理的、反思性的思维,既是思维技能,也是思维倾向。
深度学习所强调的整合,还包括新旧知识和信息的整合,它提倡将新学内容与已知概念、原理联系起来,整合到原有的认知结构中,从而引起对新知识信息的理解、长期保持及迁移应用。
问题解决:在问题空间中进行搜索,以便使问题的初始状态达到目标状态的思维过程。
迁移运用:迁移学习是把一个领域(即源领域)的知识,迁移到另外一个领域(即目标领域),使得目标领域能够取得更好的学习效果。通常,源领域数据量充足,而目标领域数据量较小,迁移学习需要将在数据量充足的情况下学习到的知识,迁移到数据量小的新环境中。
知识建构是指个体在某特定社会环境中互相协作、共同参与某种有目的的活动,最终形成某种观念、理论或假设等智慧产品。
深度学习与高质量的学习结果有密切联系。
(2)怎么学习深度学习?
1、保持独立思考,自我思考。“动则三思,虑而后行”。一个人要高效率、高质量地做好各种工作,就必须善于自我思考。多于问题有明确的思路,从多个角度进行考虑,选出一个最优的解决方法。把思想认识从那些传统观念中解放出来,敢于打破传统的思维定势。
2、善于自我比较。不断地和过去的自我相比较,在比较中识别长短,鉴别优劣,开拓创新。做好“纵比”,即把自己的现在同过去比,是否有值得改进的地方,有则改之无则加勉。做到“横比”,把自己放在更广泛的范围内进行比较,通过比较学习和借鉴别人的经验,以人为镜,可以明得失。
3、自我积累。不积跬步,无以至千里;不积小流,无以成江海。 平时生活中不断阅读,不断实践,增加理论知识与实践经验。只有阅历增加,才能有更多更好的思考角度,更加完善的思维方式。
4、自我总结。吃一堑、长一智。总结是对问题解决的综合、分析、归纳、概括、提炼的过程。每一次总结都是对过去的归纳与升华,极大地提升效率,减少甚至避免下一次失误。
------------------
推荐阅读:
上一篇:实木材质的家具,好还是不好?
下一篇: 金陵十二钗正册都有谁?