手机屏幕上的时间刚刚从 23:59 跳到了 00:00，打开了网易云音乐，自动弹出了生日歌。已经是 2025年11月9日 了，我竟然已经二十四岁了，哈哈。刚刚翻看网易云音乐的动态，一年前的今天，恍若昨日。回想这几年来，发生了太多。时间拨回到 2023 年本科毕业前的某一天，我和兄弟们以准研究生的身份，又回到了考研期间日复一日奋战的图书馆，心情是无比的放松。我们并没有一如既往的走向自习桌，而是在当年无数次路过，却没能细细翻阅的图书架旁停留，仿佛这样，就可以抓住大学四年生涯最后的青春气息。我抽出了很早就想阅读的，王小波的那本《黄金时代》，坐在之前疯狂背书的楼梯间中，安静地品阅。翻到这经典的一页：“那一天我二十一岁，在我一生的黄金时代。我有好多奢望。我想爱，想吃，还想在一瞬间变成天上半明半暗的云。后来我才知道，生活就是个缓慢受槌的过程，人一天天老下去，奢望也一天天消失，最后变得像挨了槌的牛一样。可是我过二十一岁生日时没有预见到这一点。我觉得自己会永远生猛下去，什么也槌不了我。”即使我之前多次在文摘、推送中阅读过此段话，但那天，当我真正的以二十一岁的年纪，以即将离开生活了四年的大学校园的心情，坐在曾经奋斗过的地方，仔细品读的时候，才真正略微明白了这段话。它就像一颗子弹，在那一刻，正中我的眉心。而这段话，也被我写入了我的毕业设计论文的致谢部分，作为我本科生涯的最后挽歌。转眼间，两年半的时间已经过去了，我对这段话也有了更深刻的见解。曾经天真地自以为能够以万能的心态，迎接这世间的种种琐事，后来才发现，能够坚守内心，自得其乐，已是奢求。但那又能怎样，坚持做自己吧！这么多年了，走过了多少人性的背后和白云苍狗，我永远都不缺从头再来的勇气。昨天打开网易云，又听到了麻园诗人的《泸沽湖》和《晚安》，这又将我的思绪拉回到了2021年5月，那段我来天津打比赛的时光，也算是我和天津结缘的一个契机。闲来无事又在高德地图上搜索了一下比赛那天和老师还有同学吃的一家铁锅炖，惊喜的发现竟然还在营业，下次一定再去品尝。而两年前的那条考研复试期间的微博，也再一次记录着这首歌之于我，对于天津的回忆。就如歌词中所唱：“十年以后你会相信吗，路过春秋都写在身上，每次失望也不会太过悲伤，你会爱过他们也会恨过他们，也会自己爬上水池的顶端，是你说的秋叶总落悲伤。”时光如刻刀，一点一点雕刻了我，或锋利，或圆融。但我相信，作为一个理想主义者，我永远都不会违背自己的良心和意志。有些东西，我永远也不会失去！新的一岁开始了，在某些事情上，我或许不再迷茫，也丢掉了幻想，慢慢看清了，也看轻了。人生啊，总要多多体验，接下来的一年会发生什么？放马过来吧。2025 年 11 月 9 日LH于天津
我承认，我是一个很怀旧的人。最近耳机内总是循环丢火车乐队的《如斯》，翻看这首歌的评论区，大部分热门评论都源于2016年或者2017年。转眼如隔世 已是很多年 前路遥无可期 后路渐远 看那物是人非 已时过境迁 任世界改变 无法熄灭 --- 《如斯》 丢火车乐队[hplayer][Music server="netease" id="432698064" type="song"/][/hplayer]转眼间，时隔已近十年。真应了那句话：逝者如斯夫，不舍昼夜。借着中午的酒劲，写下这些文字。2016或者2017年的种种，已近失忆。此刻的我坐在实验室，忙着日复一日没有结局的案牍劳形。回望这几年来，气象变换万千，几人仍眼睛明亮，几人已失了魂？我曾天真地认为，意志可带我杀出重围。但对于理想主义者来说，很多事情，均身不由己。你我只是这万千宇宙中，渺然的一粒尘埃而已。只可望洋兴叹，慨而惘矣！二十一世纪已然过去了四分之一，后人会如何评价这段历史？是非成败，皆为虚妄而已。在盒子里睡着的美梦 一打开就无影无踪 在大海上抽烟的人 和你的卡比巴拉一起睡着 --- 《卡比巴拉的海》 宋冬野[hplayer][Music server="netease" id="27646203" type="song"/][/hplayer]雾失楼台，月迷津渡，逝如斯夫，问君何度？晚灯灿烂，夜枕青山。酒要醒了，回见。
写在飘雪与落日之后。很难想象，在快要四月的天津，昨天还在穿着短袖，今天竟然下起了鹅毛大雪，而之后几个小时，却已是天朗气清，惠风和畅。吃过晚饭后，骑车回实验室，自东往西看，落日和彩云正好降落在了学校的主干道上，夕阳的光刺过云层，以丁达尔效应的形式向周围发散，好似冲破桎梏，眼前的美景令我慨然，我似乎得到了这一瞬间的救赎。眼泪却没有夺眶而出。我遂单手骑车，拿出手机，将这难得的一幕抓拍下来。黄昏里悠闲的光是一把钥匙 解开我身上所有的锁 我的眼睛里已站着一只鹰 捕捉着布拉格的黄金 ---刘森、商震《布拉格》说来惭愧，也许是因为最近在忙着赶论文，我似乎对生活中的这些小确幸有了些钝感。之前总是喜欢拿着手机记录生活，但最近手机相册里尽是一些无关紧要的截图。我认为我不能这样。我时常思考，我目前所做的所谓学术、科研、论文，真的是我内心想要追求的吗，这似乎已然陷入了一个局部最优，但非全局最优。我坚信，还有更重要的东西值得我去追求、去获取。沙漠里不长虚弱的草 大海里没有无名之辈 你母亲让你独一无二 你不是谁的一颗棋子 你不要轻易变成工具 你发誓完整你的生命 ---声音碎片乐队《致我的迷茫兄弟》时代带给青年们的迷茫是统一的，该如何破局？交给时间和机遇吧。当通往大结局的路啊正踏平所有的祖屋和田野 快拿出力量去桃李芬芳 去社会栋梁去掀起权力财富的巨浪 去担负起自家的兴旺 去变成大人和大人物 变成一个 只有钱才可以影响到情绪的臭傻逼 ---腰乐队《硬汉》同学、老师和父母的认可，在证明着我目前所做的似乎就是正确的，我可能已经习惯了每天三点一线的生活，重复的人、重复的事、重复的情绪起伏、重复的一切。平淡的生活总是这么磨人。但是话又说回来，人生不就是活那么几个瞬间？我们无法判断一个瞬间的价值，直到它成为回忆。对于一些重要的瞬间，我们总是后知后觉。正所谓：情随事迁，感慨系之矣。那些重要的人生节点，也一步一步雕刻了我们，让我们成为如今这般模样。但生活中的那些惊喜，似乎总是不期而遇，心怀感激，感恩所遇到的一切，积极地去迎接那些美好，或许才是正道。只有我守着安静的沙漠 等待着花开 只有我看着别人的快乐 竟然会感慨 就让我听着天大的道理 不愿意明白 只有我 就是我 好奇怪 ---华晨宇《烟火里的尘埃》---LH 2025年3月28日于天津理工大学
麻木不仁的岁月镌刻着人生的年轮。一年就将这样过去了。往年每次都会在岁末之际伤感一番，但今年却好似没有这样。不像20年的迷惘，21年的梦幻，22年的跌宕，23年的茫然。2024年似乎忙碌了整整一年，且心态是逐步由消极变为了积极，这是我好久没有感受到的。我似乎活的越来越明白了，得以心如止水地面对生活中的种种。今年最喜欢的网易云评论区里的一段话：“人们总是聚在一起讨论一些我不明白的事情。张三家开的车，李四上周升了职。不明白，我只想回家陪我的黑猫，买一盒它最爱的罐头。”所以今年最大的收获，就是能够明白自己内心真正想要的是什么。是追求精神上的升华，而不是迷失于横流物欲。希望我能始终遵循此道，来迎接未来的漫长旅途。流水不争先，争的是滔滔不绝。此时耳机中正在播放惘闻乐队的《水之湄》，在铿锵的律动中，公元2025年即将到来，希望太阳再次升起的时候，世界能够变得更好一点。
昨天中午得知兄弟订婚的消息，耳机中突然切到了李荣浩的《老街》，记忆中的那些往事，又涌上心头，一切好像都变了，也好像没变。那些矫健的少年身影还不算模糊，那些振奋呐喊的场景似乎还历历在目。只是时过境迁，我们也各奔东西，囿于追求所谓人生标准答案的旅途。我们也终于不再万能。明天就23岁了，岁月一点一点磨平了我们的锐气。或许正如王小波说的那样：“后来我才知道，生活就是个缓慢受锤的过程，人一天天老下去，奢望也一天天消失，最后变得像挨了锤的牛一样。属于我们的黄金时代过去了，未来会怎么样呢，不知道。只说一句：旅途愉快吧。
[音乐分享] 明天不去问市场，自由或许问心脏。
[hplayer][Music title="乌云典当记" author="万能青年旅店" url="https://mylight1109.oss-cn-beijing.aliyuncs.com/mgImg/%E4%B8%87%E8%83%BD%E9%9D%92%E5%B9%B4%E6%97%85%E5%BA%97%20-%20%E4%B9%8C%E4%BA%91%E5%85%B8%E5%BD%93%E8%AE%B0.MP3" pic="https://mylight1109.oss-cn-beijing.aliyuncs.com/mgImg/%E4%B9%8C%E4%BA%91%E5%85%B8%E5%BD%93%E8%AE%B0.jpeg"/][/hplayer][hplayer][Music title="在这颗行星所有的酒馆" author="万能青年旅店" url="https://mylight1109.oss-cn-beijing.aliyuncs.com/mgImg/%E4%B8%87%E8%83%BD%E9%9D%92%E5%B9%B4%E6%97%85%E5%BA%97%20-%20%E5%9C%A8%E8%BF%99%E9%A2%97%E8%A1%8C%E6%98%9F%E6%89%80%E6%9C%89%E7%9A%84%E9%85%92%E9%A6%86.mp3" pic="https://mylight1109.oss-cn-beijing.aliyuncs.com/mgImg/%E4%B8%87%E8%83%BD%E9%9D%92%E5%B9%B4%E6%97%85%E5%BA%97.jpg"/][/hplayer][hplayer][Music title="热河" author="李志" url="https://mylight1109.oss-cn-beijing.aliyuncs.com/mgImg/%E6%9D%8E%E5%BF%97%20-%20%E7%83%AD%E6%B2%B3.mp3" pic="https://mylight1109.oss-cn-beijing.aliyuncs.com/mgImg/%E6%88%91%E7%88%B1%E5%8D%97%E4%BA%AC.png"/][/hplayer][hplayer][Music title="一个短篇" author="腰乐队" url="https://mylight1109.oss-cn-beijing.aliyuncs.com/mgImg/%E8%85%B0%E4%B9%90%E9%98%9F%20-%20%E4%B8%80%E4%B8%AA%E7%9F%AD%E7%AF%87.mp3" pic="https://mylight1109.oss-cn-beijing.aliyuncs.com/mgImg/%E7%9B%B8%E8%A7%81%E6%81%A8%E6%99%9A.jpg"/][/hplayer]
东郊未解围，忠义似君稀。常撰随笔于此，可得诸位一览，实为幸甚。
本文记录了我在学习深度学习的过程中遇到过的不懂的知识点，为了方便翻阅，故将其发表于此，随时更新，供大家参考。深度学习常见知识点1. 测试精度和训练精度在深度学习中，测试精度和训练精度是两个重要的指标，它们分别代表了模型在测试集上的分类正确率和训练集上的分类正确率。测试集是用来评估模型泛化能力的数据集，它不参与模型的训练过程。训练集是用来训练模型参数的数据集，它直接影响模型的学习效果。测试精度和训练精度之间的大小关系，可以反映出模型是否存在过拟合或欠拟合的问题。过拟合是指模型在训练集上表现很好，但在测试集上表现很差，说明模型过于复杂，学习了训练集的噪声或特异性，导致泛化能力下降。欠拟合是指模型在训练集和测试集上都表现不好，说明模型过于简单，没有学习到数据的内在规律，导致预测能力不足。一般来说，我们希望测试精度和训练精度都尽可能高，且相差不大。如果测试精度远低于训练精度，说明存在过拟合，可以通过增加数据量、使用正则化、dropout等方法来缓解。如果测试精度和训练精度都很低，说明存在欠拟合，可以通过增加特征、使用更复杂的模型、减小正则化系数等方法来改善。如果测试精度高于训练精度，这种情况比较少见，可能有以下几种原因：测试集的数据分布与训练集不一致，导致测试集更容易被模型分类正确。训练集的数据做了一些增强或变换，增加了难度，而测试集没有做相同的处理。训练过程中使用了dropout等技术，降低了训练精度，但在测试时关闭了dropout，提高了测试精度。训练和测试的评价指标不一样，比如训练时用的是交叉熵损失函数，而测试时用的是准确率。2. 超参数超参数是一些用来控制模型结构、功能、效率等的调节旋钮，它们不能直接从数据中学习，而需要人为预先设定或优化。超参数的不同选择会影响模型的性能和效果。一些常见的超参数有：学习率（learning rate）：决定了每次梯度下降的步长，影响了模型的收敛速度和稳定性。迭代次数（epochs）：决定了模型训练的总轮数，影响了模型的拟合程度和泛化能力。层数（num of hidden layers）：决定了模型的深度，影响了模型的复杂度和表达能力。每层神经元的个数（num of hidden layer units）：决定了模型的宽度，影响了模型的复杂度和表达能力。激活函数（activation function）：决定了模型的非线性程度，影响了模型的逼近能力和梯度传播情况。批大小（batch size）：决定了每次梯度下降使用的样本数量，影响了模型的收敛速度和稳定性。优化器（optimizer）：决定了梯度下降的算法，影响了模型的收敛速度和稳定性。正则化（regularization）：决定了模型对参数的惩罚程度，影响了模型的拟合程度和泛化能力。dropout：决定了模型在训练过程中随机丢弃一些神经元的概率，影响了模型的拟合程度和泛化能力。3. 训练数据集、验证数据集和测试数据集在深度学习中，训练数据集、验证数据集和测试数据集是三种不同的数据集，它们各自有不同的作用和区别。训练数据集（training dataset）是用来训练模型的数据，它可以帮助模型学习到数据的特征和规律，从而实现预测或分类的目的。验证数据集（validation dataset）是用来评估模型的性能和调整模型的超参数的数据，它可以帮助模型避免过拟合或欠拟合的问题，从而提高模型的泛化能力。(相对于测试数据集，验证数据集更常用。)测试数据集（test dataset）是用来测试模型在未知数据上的表现的数据，它可以反映模型在真实场景中的准确度和可靠性。三种数据集之间的区别主要有以下几点：三种数据集应该是互相独立且分布相似的，不能有重复或相似的数据，否则会影响模型的评估和测试。三种数据集所占的比例一般取决于数据量的大小和超参数的数量，一般来说，训练集占比最大，验证集和测试集占比较小。对于小规模样本集（几万量级），常用的分配比例是 60% 训练集、20% 验证集、20% 测试集。对于大规模样本集（百万级以上），只要验证集和测试集的数量足够即可，例如有 100w 条数据，那么留 1w 验证集，1w 测试集即可。三种数据集在模型训练和评估过程中使用的频率不同，训练集会被多次使用，验证集会被少量使用，测试集只会被一次使用。一旦使用了测试集，就不能再修改模型或超参数。4. K-则交叉验证在深度学习中，K-则交叉验证是一种评估模型性能和选择最优超参数的方法。它的基本思想是将原始数据集分成K个子集，每次选择一个子集作为验证集，其余的K-1个子集作为训练集，进行K次训练和验证，然后取K次验证结果的平均值作为模型的最终评估指标。这样可以充分利用数据集，避免数据划分的随机性对模型评估的影响，提高模型的泛化能力。具体来说，假设我们有一个数据集D，包含m个样本，我们想要训练一个深度学习模型M，并且选择合适的超参数H（例如学习率、批大小、正则化系数等）。我们可以按照以下步骤进行K-则交叉验证：第一步：将数据集D随机分成K个大小相等的子集D_1, D_2, …, D_K。第二步：对于每个子集D_i（i=1,2,…,K），将其作为验证集，将其他的K-1个子集合并作为训练集，用训练集训练模型M，并用验证集测试模型M的性能指标E_i（例如准确率、损失值等）。第三步：计算K次验证结果的平均值E_mean = (E_1 + E_2 + … + E_K) / K，作为模型M在超参数H下的最终评估指标。第四步：尝试不同的超参数H，并重复上述步骤，找到使得E_mean最大（或最小）的超参数H*，作为最优超参数。第五步：使用最优超参数H*和全部数据集D重新训练模型M，并保存训练好的模型。5. 模型容量在深度学习中，模型容量是指模型的拟合能力或复杂度的度量，它反映了模型可以表示的函数族的大小和多样性。一般来说，模型容量越大，模型可以拟合的函数越复杂，模型的表达能力越强。但是，模型容量也会影响模型的泛化能力，即在未见过的数据上的表现。如果模型容量过小，模型可能会欠拟合，即在训练集上表现不佳；如果模型容量过大，模型可能会过拟合，即在训练集上表现很好，但在测试集上表现很差。因此，在深度学习中，选择合适的模型容量是一个重要的问题，需要在拟合能力和泛化能力之间找到一个平衡点。有一些方法可以用来控制或调节模型容量，例如：改变模型的结构或参数数量。比如，在神经网络中，增加或减少层数、神经元个数、连接方式等，都会影响模型容量。添加正则化项或dropout等技术。这些技术可以对模型参数施加一些约束或惩罚，使得模型更倾向于选择简单或稀疏的解，从而降低模型容量。使用交叉验证或早停等策略。这些策略可以通过划分数据集或监控验证误差等方式，来评估不同容量的模型的性能，并选择最优的容量。6. 过拟合和欠拟合在深度学习中，过拟合和欠拟合是两种常见的模型训练问题，它们都会影响模型的泛化能力，即在新数据上的表现。过拟合（overfitting）是指模型在训练数据集上表现很好，但在测试数据集或未见过的数据上表现很差，说明模型学习了训练数据中的噪声或无关信息，而没有捕捉到数据背后的真实规律。过拟合通常发生在模型复杂度过高、训练数据量过少或训练时间过长的情况下。欠拟合（underfitting）是指模型在训练数据集上表现不佳，也无法在测试数据集或未见过的数据上表现好，说明模型没有学习到足够的信号或有用信息，而只是做了一些简单的拟合。欠拟合通常发生在模型复杂度过低、训练数据量过大或训练时间过短的情况下。为了解决过拟合和欠拟合的问题，我们需要在模型复杂度和数据量之间找到一个平衡点，使得模型既能够充分学习数据中的信号，又能够避免学习数据中的噪声。一些常用的方法有：使用验证集或交叉验证来评估模型性能和选择最优的超参数。使用正则化或权重衰减来惩罚模型参数的大小，防止模型过于复杂。使用dropout或batch normalization等技术来随机干扰模型的训练过程，增加模型的鲁棒性。使用数据增强或生成对抗网络等技术来扩充或生成更多的训练数据，减少数据不足的风险。使用早停法或学习率衰减等策略来控制模型的训练时间，防止模型过度拟合。注：一点点的过拟合并不是坏事。7. 激活函数深度学习中，激活函数是一种添加到人工神经网络中的函数，旨在帮助网络学习数据中的复杂模式。激活函数可以增加神经网络的非线性，使得神经网络可以逼近任何非线性函数，从而提高网络的表达能力和泛化能力。激活函数还可以影响网络的训练效率和稳定性，例如避免梯度消失或爆炸、缓解过拟合等问题。深度学习中常用的激活函数有很多种，例如Sigmoid、Tanh、ReLU、Leaky ReLU、ELU等。不同的激活函数有各自的优缺点和适用场景，需要根据具体的问题和数据来选择合适的激活函数。8. Dropout在深度学习中，Dropout是一种防止过拟合的技术，它的原理是在训练过程中，随机地将一些神经元的输出置为零，从而减少神经元之间的依赖性，增强网络的泛化能力。Dropout可以看作是一种模型集成的方法，它相当于同时训练了多个不同的子网络，并在测试时对它们取平均。Dropout可以有效地提高模型的性能和稳定性，特别是在深层神经网络中。Dropout只是在训练中把神经元进行丢弃并训练，在预测时网络中的神经元并没有被丢弃。Dropout前后，输入的期望值是相同的。9. 召回率 Recall被正确识别为正样本的比例。召回率是在深度学习中评估模型性能的一个指标，它表示模型能够正确识别正类样本的比例。例如，如果我们的模型是用来识别猫的图片，那么召回率就是在所有真正是猫的图片中，有多少被模型预测为猫的图片。召回率越高，说明模型越能覆盖正类样本，但也可能导致更多的误报。召回率的计算公式是：其中，真正类是指模型正确预测为正类的样本数，假负类是指模型错误预测为负类的样本数（总的来说，就是检测的所有样本中为正确的预测的百分率）。10. TP、TN、FP、FNTP（True positives）:正样本被正确识别为正样本。TN（True negatives）:负样本被正确识别为负样本。FP（False positives）:假的正样本，即负样本被错误识别为正样本。FN（False negatives）:假的负样本，即正样本被错误识别为负样本。11. PrecisionPrecision就是在识别出来的正样本中，True positives所占的比率。Precision=TP/(TP+FP)12. F1F1 score为精确率与召回率的调和均值，是用来衡量二分类模型精确度的一种指标。F1=2*(Precision*Recall) / (Precision+Recall)F1是一种用来评估分类模型性能的指标，它是精确率（precision）和召回率（recall）的调和平均数。精确率表示预测为正类的样本中真正属于正类的比例，召回率表示真正属于正类的样本中被预测为正类的比例。F1的取值范围是0到1，越接近1表示模型的性能越好，越接近0表示模型的性能越差。F1可以用来衡量二分类或多分类问题的效果，也可以用来考虑类别不平衡的情况。在深度学习中，F1可以作为一个优化目标或一个评价指标，帮助我们选择更合适的模型13. 侧监督侧监督（side supervision）是一种在深度学习中使用额外的监督信息来辅助训练模型的方法。侧监督的目的是利用一些与主任务相关但不完全相同的辅助任务，来提高模型的泛化能力和解释性。侧监督的一种常见形式是在每个隐藏层添加一个分类器，这样就可以为每个隐藏层提供直接的反馈，促进特征的学习。14. 消融分析在深度学习中，消融分析（ablation analysis）是一种用来评估模型性能的方法，它通过移除或替换模型中的某些部分，来观察这些部分对模型结果的影响。消融分析可以帮助我们理解模型的工作原理，找出模型中最重要或最不重要的部分，以及优化模型的结构和参数。消融分析有狭义和广义之分，狭义的消融分析是指去除模型中的某个模块或层，广义的消融分析是指改变模型中的任何一个因素，比如超参数、输入特征、训练数据等。消融分析通常会设计一个表格，列出不同的实验设置和对应的评价指标，以便比较和分析。15. 统一通道统一通道（uniform channel）是一种在深度学习中使用相同的通道数来构建卷积神经网络的方法。统一通道的优点是可以减少模型的参数量，降低计算复杂度，提高模型的效率和泛化能力。统一通道的缺点是可能会损失一些特征的多样性和表达能力，导致模型的性能下降。统一通道的应用场景是一些对计算资源和时间有限制的任务，比如图像分类、目标检测、语音识别等16. Batch Normalization批量归一化层（Batch Normalization，BN）是一种深度学习中常用的数据归一化方法，它可以加快模型的训练速度，提高模型的泛化能力，减少对初始化和正则化的依赖，缓解梯度消失或爆炸的问题。批量归一化层的作用是对每个小批量（mini-batch）的数据进行归一化处理，使得每层的输入数据都服从均值为0，方差为1的正态分布。这样可以减少数据之间的差异性，降低数据分布的变化对网络训练的影响，也就是缓解了内部协变量偏移（Internal Covariate Shift）的问题。批量归一化层通常位于卷积层或全连接层与激活函数之间，它需要学习两个参数：一个是缩放因子gamma，用于调整数据的数值范围；另一个是平移因子beta ，用于调整数据的偏移量。这两个参数可以保留数据原有的分布特征，增强网络的表达能力。批量归一化层在训练和推理时使用的均值和方差是不同的。在训练时，使用当前小批量的均值和方差进行归一化；在推理时，使用训练时所有小批量的均值和方差的期望值进行归一化。这样可以保证推理时数据的稳定性。在图像处理中，每个颜色通道中的像素值通常具有不同的分布和范围，这种不一致性可能会导致训练出错或网络不收敛等问题。通过使用Normalize操作，可以将每个通道的像素值标准化为均值为0、标准差为1的分布，使得所有通道的像素值范围和分布一致。BN层在模型中使用的节点17. 残差网络（ResNet）加入了一个残差块。当然，可以将残差块放在不同的位置。一共有两种不同的ResNet块：高宽减半的ResNet块（步幅为2)后面接多个高宽不变的ResNet块总结 ·残差块使得很深的网络更加容易训练 ·甚至可以训练一千层的网络 ·残差网络对随后的深层神经网络设计产生了深远影响，无论是卷积类网络还是全连接类网络。18. 参数数量（Param）在深度学习中，参数数量是指模型中需要训练的参数的个数，也就是模型的复杂度和大小的一种衡量指标。参数数量的多少会影响模型的性能、内存占用、训练速度和泛化能力等方面。参数数量的计算方法取决于模型的结构和层类型，一般来说，有以下几种常见的情况：对于全连接层（FC），参数数量等于输入神经元的个数乘以输出神经元的个数，再加上输出神经元的个数（偏置项）。例如，如果一个全连接层的输入是78400维的向量，输出是4096维的向量，那么该层的参数数量为(78400+1)*4096=321126400。对于卷积层（Conv），参数数量等于输入通道数乘以卷积核的宽度、高度和输出通道数，再加上输出通道数（偏置项）。例如，如果一个卷积层的输入是3通道的图像，卷积核的大小是11×11，输出通道数是96，那么该层的参数数量为(3*11*11+1)*96=34944。对于池化层（Pool），参数数量为零，因为池化层不涉及可训练的参数，只是对输入进行下采样或者最大值、平均值等操作。对于批量归一化层（BN），参数数量等于输出通道数的两倍，因为该层需要学习每个通道的缩放因子和平移因子。如果要计算整个模型的参数数量，只需要将各个层的参数数量相加即可。有些深度学习框架（如PyTorch）可以自动计算模型的参数数量。如果要将参数数量换算成模型大小（MB），还需要考虑每个参数所占用的字节。一般来说，深度学习中使用32位浮点数来存储参数，那么每个参数占用4个字节。例如，如果一个模型有6000万个参数，那么它占用的内存大小为6000万*4/1024/1024=228.88MB。19. 计算量（FLOPs）Flops是一种用来衡量深度学习模型的计算复杂度和速度的指标，它表示模型在前向传播时进行的浮点运算次数。浮点运算包括加法、减法、乘法和除法等操作。Flops的计算方法取决于模型的结构和层类型，不同的层有不同的计算公式。一般来说，卷积层和全连接层是最耗费计算资源的层，它们的Flops可以根据输入输出通道数、卷积核大小、特征图大小等因素来计算。Flops可以用来评价模型的性能、内存占用、训练速度和泛化能力等方面。一般来说，Flops越高，模型越复杂，需要的计算资源越多，但也可能表示更高的表达能力和精度。Flops越低，模型越简单，需要的计算资源越少，但也可能表示更低的表达能力和精度。Flops的选择需要根据具体的任务和数据集来确定，一般需要通过实验来调整。20. 卷积核 和 滤波器在深度学习中，卷积核和滤波器是两个相关但不完全相同的概念。卷积核是指一个二维的权重矩阵，它用于对输入数据进行逐元素的乘法和加法运算，从而提取特征。滤波器是指一个三维的结构，它由多个卷积核堆叠而成，每个卷积核对应输入数据的一个通道。滤波器可以看作是一个三维的卷积核，它可以对输入数据的高度、宽度和深度进行卷积运算，从而生成一个输出通道。例如，如果输入数据是一个RGB图像，那么它有三个通道，分别表示红色、绿色和蓝色。如果我们想要对这个图像进行卷积运算，我们需要一个滤波器，它由三个卷积核组成，每个卷积核的大小是3×3，分别对应输入图像的三个通道。这样，我们就可以将这个滤波器看作是一个3×3×3的三维卷积核，它可以在输入图像上滑动，并在每个位置执行乘法和加法运算，得到一个输出值。这个输出值就是输出通道中的一个元素。如果我们有多个滤波器，那么我们就可以得到多个输出通道，从而形成输出层。21. 池化层在深度学习框架中，池化层的步幅和池化窗口的大小一般是相同的。当然，也可以自己指定。在深度学习中，池化层是一种用于对输入数据进行降采样的操作，它可以减少数据量和计算复杂度，同时保留重要的特征信息。池化层通常位于卷积层之后，可以提高模型的平移和旋转不变性，防止过拟合。池化层的常见类型有最大值池化、均值池化、随机池化、中值池化和分数阶最大值池化等，它们有不同的计算方式和优缺点。最大值池化是最常用的一种池化方式，它选择每个区域中的最大值作为输出，可以学习到图像的边缘和纹理结构。均值池化是计算每个区域中的平均值作为输出，可以减小估计均值的偏移，提高模型的鲁棒性。随机池化是根据每个区域中元素的概率随机选择一个值作为输出，可以增加模型的多样性和泛化能力。中值池化是选择每个区域中的中位数作为输出，可以抗噪和保留边缘信息。分数阶最大值池化是一种灵活的池化方式，它可以根据给定的比例因子生成不规则的区域，并进行最大值池化。22. ResNet34ResNet34是一种深度残差神经网络，它是ResNet的一种变体，由34层卷积层和快捷连接组成。它和ResNet的联系是，它都使用了残差模块，即在每个卷积层后面添加一个快捷连接，将输入和输出相加，从而缓解了梯度消失和退化问题，提高了模型的训练效率和泛化能力。ResNet34的主要特点是：它使用了两层或三层的卷积层作为基本的残差模块，每个卷积层后面都有一个批量归一化层和一个ReLU激活函数。它在每个残差模块之间使用了步长为2的卷积层或最大池化层来降低特征图的大小，并增加输出通道数。它在每个残差模块的快捷连接上使用了1×1的卷积层来匹配输入和输出的通道数和大小。它在最后使用了一个平均池化层和一个全连接层来得到最终的分类结果。23. 1x1的卷积层 和 全连接层当输入数据的尺寸是1×1时，1x1的卷积层和全连接层的数学原理是一样的，都是对输入向量和权重矩阵进行乘法和加法运算，得到输出向量。这时，卷积核的个数就是全连接层的神经元的个数。当输入数据的尺寸大于1×1时，1x1的卷积层和全连接层的输出尺寸就不一样了，1x1的卷积层会保持输入数据的高度和宽度，只改变通道数；而全连接层会将输入数据拉成一维向量，输出尺寸为1×1。这时，全连接层可以等价于一个卷积核大小和输入数据相同，个数为输出维度的卷积层。1x1的卷积层和全连接层最大的区别就是输入尺寸是否可变，全连接层的输入尺寸是固定的，卷积层的输入尺寸是任意的。这也决定了两者在模型中的作用不同，全连接层通常用于最后的分类或回归任务，而1x1的卷积层通常用于中间层，进行特征变换或降维等操作。24. 全连接层在深度学习中，全连接层是一种常用的神经网络层类型，它可以将输入特征与每个神经元之间的连接权重进行矩阵乘法和偏置加法操作，从而得到输出结果。全连接层通常位于网络的最后一层，用于输出预测结果，如分类、回归等任务。全连接层的参数数量非常大，因此容易出现过拟合的情况。为了避免过拟合，可以使用一些正则化方法，如Dropout、L1/L2正则化等。全连接层(fully connected layers，FC)在整个卷积神经网络中起到“分类器"的作用。如果说卷积层、池化层和激活函数层等操作是将原始数据映射到隐层特征空间的话，全连接层则起到将学到的“分布式特征表示′映射到样本标记空间的作用。简单来说：它把特征值整合到一起,输出为一个值。这样做有一个什么好处:就是大大减少特征位置对分类带来的影响。注:样本标记空间也叫样本输出空间25. 逐点卷积逐点卷积（pointwise convolution）是一种使用1x1的卷积核对输入特征图进行卷积操作的方法，主要作用是对特征图进行升维或降维，以增加或减少通道数。逐点卷积可以与深度卷积（depthwise convolution）结合，形成深度可分离卷积（depthwise separable convolution），这种卷积方式可以减少参数量和计算量，提高网络的效率。26. Binary Focal Loss在深度学习中，binary focal loss是一种用于解决分类问题中的类别不平衡的损失函数。它是基于交叉熵损失的一种改进，通过增加一个调节因子，使得模型对于难以分类的样本给予更大的权重，而对于容易分类的样本给予更小的权重。这样可以减少模型对于多数类别的过拟合，提高对于少数类别的识别能力。27. 动量 momentum在深度学习中，动量（momentum）是一种用于加速梯度下降算法的技术，它可以克服高曲率、小梯度或噪声梯度等问题，提高优化的效率和稳定性。动量的思想是在更新参数时，不仅考虑当前的梯度，还考虑之前的梯度的累积效果，类似于物理中的动量守恒，使得参数在一个方向上持续移动，避免在其他方向上的震荡。动量的数学表达式为：28. 投影头在深度学习中，投影头（projection head）是一种用于提取特征或表征的网络结构，它通常是一个或多个全连接层，将输入的高维特征映射到一个低维的向量空间，以便于进行后续的任务，如对比学习、聚类、分类等。投影头的目的是将输入的特征转换为一个更有意义或更有区分度的表征，以提高模型的性能。投影头的设计和参数取决于具体的应用场景和目标，没有统一的标准。29. Parties在深度学习中，parties一般是指参与分布式训练（ 比如联邦学习）的不同节点或实体，它们之间需要通过通信来协调和同步模型的参数或梯度。parties的数量、位置、连接方式等都会影响通信效率和模型性能。一般来说，parties越多，通信开销越大，训练速度越慢，但是可能会提高模型的泛化能力和鲁棒性。parties之间的连接方式可以是全连接、环形、星形、树形等，不同的拓扑结构有不同的优缺点。parties的位置也会影响通信延迟和带宽，例如跨地域或跨机构的分布式训练会面临更大的挑战。30. 异质性在深度学习中，异质性（heterogeneity）是指不同的数据或模型之间存在的差异或多样性。异质性可以有不同的来源和表现，比如：数据异质性：指数据之间不满足独立同分布（IID）的性质，即数据的分布可能随着时间、空间、来源等因素而发生变化，或者数据之间存在某种相关性或依赖关系。数据异质性在现实世界中很常见，比如用户的行为数据、传感器的采集数据、社交网络的结构数据等。数据异质性给机器学习的建模和训练带来了一些挑战，比如如何处理数据的异质性、如何减少数据的偏差、如何提高模型的泛化能力等。模型异质性：指模型之间存在的结构或参数上的差异。模型异质性可以是有意为之，也可以是无法避免的。有意为之的模型异质性是为了提高模型的表达能力或适应不同的任务或场景，比如混合模型、多任务学习、迁移学习等。无法避免的模型异质性是由于模型训练过程中的随机因素或分布式设置导致的，比如初始化、优化算法、超参数、通信延迟等。模型异质性也会影响机器学习的效果和效率，比如如何度量和评估模型的异质性、如何利用或减少模型的异质性、如何保证模型的一致性和稳定性等。31. 模型评估准确率（Accuracy）：模型（分类器）到底分对了多少？ `sum(y == y_hat) / y.size` 精确率（Precision）：返回的图片中正确的有多少？ `sum((y_hat == 1) & (y == 1)) / sum(y_hat == 1)` 召回率（Recall）：正确的图片里共有多少被返回了？ `sum((y_hat == 1) & (y == 1)) / sum(y == 1)` F1值：(2*Precision*Recall) / (Precision + Recall)Fβ值：(1+β^2) [(Precision*Recall) / (β^2 Precision + Recall)] （其中Recall的重要性是Precision的β倍）在实际的实验中，并不能一味的要求召回率和精确率其中的一者高，因为这两者是一个此消彼长的关系。因此，又有了F1值：精确率（Precision）和召回率（Recall）的调和平均值。另外，F1值是Fβ值的一个特殊情况。特殊地，对于二分类来说，以上四个指标的计算公式如下：32. Non-IID data（非独立同分布数据）Non-IID data（非独立同分布数据）是指数据之间不满足独立同分布的性质，即数据的分布可能随着时间、空间、来源等因素而发生变化，或者数据之间存在某种相关性或依赖关系。Non-IID data在现实世界中很常见，比如用户的行为数据、传感器的采集数据、社交网络的结构数据等。Non-IID data给机器学习的建模和训练带来了一些挑战，比如如何处理数据的异质性、如何减少数据的偏差、如何提高模型的泛化能力等。为了解决这些问题，一些新的机器学习框架和方法被提出，比如联邦学习、迁移学习、元学习等。33. dataidxsdataidxs 是一个深度学习中常用的变量名，表示数据集中的索引。不同的深度学习框架或算法可能有不同的定义和用法，但一般来说，dataidxs 是一个一维或二维的数组，存储了数据集中每个样本或每个批次的索引。例如，在 PyTorch 中，dataidxs 可以是一个 DataLoader 对象的属性，用于随机打乱数据集并按照指定的批次大小分割数据集。在 TensorFlow 中，dataidxs 可以是一个 tf.data.Dataset 对象的方法，用于返回数据集中每个元素的索引。dataidxs 的作用是方便我们对数据集进行切分、采样、分组等操作，从而提高深度学习的效率和性能。34. 权重衰减权重衰减是一种常用的正则化技术，它通过对模型的权重参数进行惩罚来实现正则化。权重衰减的作用是防止模型过拟合，即在训练集上表现很好，但在测试集或新数据上表现很差的情况。权重衰减如何抑制过拟合呢？简单来说，就是通过在损失函数中加入一个与权重平方成正比的项，使得模型在优化损失的同时，也要尽量减小权重的大小，从而避免权重过大导致的过拟合。具体来说，假设原来的损失函数为 L(θ)，其中 θ 表示模型的所有权重参数，那么加入权重衰减后，新的损失函数为 L’(θ) = L(θ) + λ/2 * ∑θ_i^2，其中 λ 是一个正的超参数，用来控制权重衰减的强度，∑θ_i^2 是所有权重参数的平方和。可以看出，当 λ 较大时，模型会更倾向于选择较小的权重参数，从而降低模型的复杂度和拟合能力；当 λ 较小时，模型会更倾向于选择较大的权重参数，从而提高模型的复杂度和拟合能力。因此，我们需要根据数据集的大小和特征来合理地选择 λ 的值，以达到最佳的泛化效果。35. net.state_dict()在PyTorch中，一个模型 (torch.nn.Module)的可学习参数（也就是权重和偏置值）是包含在模型参数 (model.parameters ())中的，一个状态字典就是一个简单的 Python 的字典，其键值对是每个网络层和其对应的参数张量。state_dict状态字典可以用来保存和加载模型，方便我们在不同的设备或环境中使用模型。例如，我们可以使用以下代码来保存和加载模型的状态字典：保存模型的状态字典torch.save(model.state_dict(), “model.pth”)加载模型的状态字典# 创建一个相同结构的模型 model = Net() model.load_state_dict(torch.load(“model.pth”))关于net.state_dict()中的k，vk是键，表示层的参数名，例如’conv1.weight’或’fc.bias’；v是值，表示层的参数张量36. with torch.no_grad()：with torch.no_grad()是一个用于神经网络推理阶段的上下文管理器，它的作用是在计算张量时不需要计算梯度，从而节省内存和提高效率。with torch.no_grad()的使用场景有以下几种：当我们只想使用训练好的模型进行预测或评估时，我们可以使用with torch.no_grad()来避免对模型参数进行梯度更新，这样可以保证模型的参数不会被改变，也可以加快计算速度。当我们想要对带有梯度的张量进行原地运算（in-place operation）时，我们可以使用with torch.no_grad()来阻断梯度的传播，这样可以避免出现运行时错误（RuntimeError: a leaf Variable that requires grad has been used in an in-place operation.）。当我们想要创建一个不带梯度的张量时，我们可以使用with torch.no_grad()来简化代码，这样可以避免使用requires_grad=False参数来创建张量。37. ODSODS是一种深度学习的评估指标，它表示最优数据集比例（Optimal Dataset Scale）。ODS的含义是，在边缘检测任务中，为所有图像设置同样的阈值，使得整个数据集上的F-score最大。F-score是一种综合了精确率和召回率的指标，它反映了边缘检测的效果。ODS可以用来比较不同的边缘检测算法或模型在同一个数据集上的性能。38. OISOIS是一种深度学习的评估指标，它表示最优图像比例（Optimal Image Scale）。OIS的含义是，在边缘检测任务中，为每一张图像设置不同的阈值，使得该图像上的F-score最大。F-score是一种综合了精确率和召回率的指标，它反映了边缘检测的效果。OIS可以用来比较不同的边缘检测算法或模型在单个图像上的性能。39. 编码器-解码器架构在深度学习中，编码器-解码器架构是一种用于自动学习特征表示的模型结构。它由两部分组成：编码器和解码器。编码器将输入数据转换为低维度的表示，解码器则将该低维度表示转换回原始数据空间。编码器-解码器架构有很多应用领域和具体实现方式，例如：自编码器（autoencoder）：用于特征提取和数据压缩，编码器和解码器可以是多层感知机（MLP）或卷积神经网络（CNN）等结构。变分自编码器（Variational Autoencoder，VAE）：用于数据生成和采样，利用概率模型的思想，通过学习数据的分布来生成新的数据。生成对抗网络（Generative Adversarial Network，GAN）：用于生成高质量的图像、音频等数据，由生成器和判别器组成，生成器通过学习生成与真实数据相似的样本，而判别器则尝试区分真实数据和生成器生成的数据。神经网络机器翻译（Neural Machine Translation，NMT）：用于自然语言处理，往往是LSTM-LSTM的编码-解码框架，编码器将源语言句子转换为语义向量，解码器则将语义向量转换为目标语言句子。40. 注意力机制在深度学习中，注意力机制（Attention Mechanism）是一种模仿人类视觉和认知系统的方法，它允许神经网络在处理输入数据时集中注意力于相关的部分。通过引入注意力机制，神经网络能够自动地学习并选择性地关注输入中的重要信息，提高模型的性能和泛化能力。注意力机制的本质是学出一个权重分布，然后作用在特征上。这个权重可以保留所有的分量，叫加权（Soft Attention），也可以按某种采样策略选取部分分量（Hard Attention）。这个权重可以作用在原图上，如目标物体检测；也可以作用在特征图上，如 Image-Caption。这个权重可以作用在空间尺度上，也可以作用于 Channel 尺度上，给不同通道的特征加权。这个权重可以作用在不同时刻上，如机器翻译。注意力机制有多种类型，比如自注意力机制（Self-Attention），空间注意力机制（Spatial Attention）和时间注意力机制（Temporal Attention）等。自注意力机制的基本思想是，在处理序列数据时，每个元素都可以与序列中的其他元素建立关联，而不仅仅是依赖于相邻位置的元素。空间注意力机制的基本思想是，在处理图像数据时，为每个像素分配一个权重，以便在处理每个像素时专注于最相关的部分。时间注意力机制的基本思想是，在处理视频数据时，为每个帧分配一个权重，以便在处理每个帧时专注于最相关的部分。41. 端到端的深度学习端到端的深度学习是一种使用单个神经网络来完成一个任务的方法，而不是将任务分解为多个步骤或子任务。例如，如果你想要从一张图片中识别出文字，你可以使用一个端到端的深度学习模型，直接输入图片，输出文字。这样，你就不需要先进行图像预处理、文字检测、文字分割、文字识别等步骤。端到端的深度学习的优点是它可以简化模型的设计和训练过程，让模型自己从数据中学习到最合适的特征和表示。端到端的深度学习的缺点是它可能需要大量的数据和计算资源，以及对数据质量和标注的高要求。42. 感受野感受野是卷积神经网络中一个重要的概念，它指的是特征图上的某个点能看到的输入图像的区域大小。也就是说，特征图上的点是由输入图像中感受野大小区域的计算得到的。感受野的大小可以反映每一层神经元的抽象层次，越大的感受野意味着越全局，越高层的特征，越小的感受野则表示越局部，越细节的特征。感受野的计算公式如下：其中，RFi+1表示当前层的感受野，RFi表示上一层的感受野，k表示卷积核的大小，Si表示之前所有层的步长的乘积感受野有理论感受野和有效感受野之分，理论感受野通常很大，而有效感受野往往小于理论感受野，因为输入层中边缘点的使用次数明显比中间点要少，因此作出的贡献不同。有效感受野可以通过不同的初始化权重方法和框架改变方法来增大。它是深度卷积神经网络的基本概念之一，也是理解DCNN的重要抓手之一它在很大程度上决定了网络的性能其他视觉领域的应用，比如检测、分割等，都可以从感受野的角度去进行深度理解创新的源泉所在哪些操作能改变感受野？能改变的操作：Convolution Layer 卷积层Deconvolution Layer 反卷积层Pooling Layer 池化层Residual Connection 残差连接Concatenation 合并连接不能改变的操作：Non-linear Layer 非线性激活Normalization Layer 规范化43. 转置卷积通常用来做上采样卷积不会增大输入的高宽，通常要么不变、要么减半转置卷积则可以用来增大输入高宽工作原理：为什么称之为转置？·对于卷积Y=X★W·可以对W构造一个V,使得卷积等价于矩阵乘法Y' = VX' ·这里Y', X'是Y, X对应的向量版本·转置卷积则等价于Y'=VTX'·如果卷积将输入从(h,w)变成了(h',w')·同样超参数的转置卷积则从(h',w')变成(h,w) ·转置卷积是一种卷积·它将输入和核进行了重新排列 ·同卷积一般是做下采样不同，它通常用作上采样 ·如果卷积将输入从(h,w)变成了(h'，w'), 同样（转置卷积）超参数下它将(h',w)变成(h,w)同反卷积的关系·数学上的反卷积（deconvolution)是指卷积的逆运算·如果Y=con(X,K),那么X=deconv(Y,K)·反卷积很少用在深度学习中·我们说的反卷积神经网络指用了转置卷积的神经网络 总结·转置卷积是一种变化了输入和核的卷积，来得到上采用的目的·不等同于数学上的反卷积操作44. 上采样和下采样在深度学习中，上采样和下采样是常用的图像处理技术，用于调整图像的分辨率或尺寸。下采样是将图像从高分辨率减少到低分辨率，而上采样则相反，将图像从低分辨率增加到高分辨率。下采样的方式比较常用的有两种：池化和步长为2的卷积。池化是一种采样层，它可以通过取邻域内的最大值、平均值、求和或随机值来降低特征的维度并保留有效信息。步长为2的卷积是一种卷积层，它可以通过每隔一个像素点进行卷积运算来减少特征的大小1。上采样的方式比较常用的有三种：插值、反池化和转置（反）卷积。插值是一种插入新像素点的方法，它可以根据邻近像素点的值来计算新像素点的值，常见的插值方法有最近邻插值、双线性插值和双三次插值3。反池化是一种与池化相反的操作，它可以通过记录池化过程中被选中的位置来恢复原始特征的大小。反卷积（也叫转置卷积）是一种特殊的卷积，它可以通过使用转置的卷积核来实现特征图的上采样。上采样和下采样通常与卷积神经网络（CNN）中的池化操作和反卷积（或转置卷积）操作结合使用。它们可以在保持旋转、平移、伸缩不变性等特性的同时，提高图像处理任务的效果和效率。45. 插值算法最临近插值将每个目标像素找到距离它最近的原图像素点，然后将该像素的值直接赋值给目标像素。优点：实现简单，计算速度快缺点：插值结果缺乏连续性，可能会产生锯齿状的边缘，对于图像质量的影响较大。因此，当处理精度要求较高的图像时，通常会采用更加精细的插值算法，如双线性插值、双三次插值等。原理如图：双线性插值分为角对齐和边对齐46. Deformable Convolution_可变形卷积(a)是普通的卷积操作(b)、(c)、(d)是可变形卷积（deformable convolution，即DConv）可变形卷积实际是指标准卷积操作中采样位置增加了一个偏移量offset，这样卷积核就能在训练过程中扩展到很大的范围。(c)(d)是(b)的特例，表明可变形卷积推广了尺度、长宽比和旋转的各种变换。可变形卷积是一种卷积操作，它可以根据输入特征图的内容动态地调整卷积核的位置和形状。它的目的是让卷积核能够适应不同的物体形状和几何变换，从而提取更准确和有效的特征。可变形卷积的基本思想是在传统的卷积核上引入一个可学习的偏移量，使得卷积核的每个采样点都可以在特征图上自由移动。这样，卷积核就不再是固定的方形网格，而是可以变成任意形状，以适应物体的轮廓。由于偏移后的采样点可能不是整数坐标，因此需要使用双线性插值来得到其像素值。47. 再论激活函数输出通道维度是1，用sigmoid输出通道维度是2，用softmax1. 激活函数作用激活函数（Activation functions）对于人工神经网络 [1] 模型去学习、理解非常复杂和非线性的函数来说具有十分重要的作用。它们将非线性特性引入到我们的网络中。如图1，在神经元中，输入的 inputs 通过加权，求和后，还被作用了一个函数，这个函数就是激活函数。引入激活函数是为了增加神经网络模型的非线性。没有激活函数的每层都相当于矩阵相乘。就算你叠加了若干层之后，无非还是个矩阵相乘罢了。（1）如果不用激活函数，每一层输出都是上层输入的线性函数，无论神经网络有多少层，输出都是输入的线性组合，这种情况就是最原始的感知机（Perceptron）。（2）如果使用的话，激活函数给神经元引入了非线性因素，使得神经网络可以任意逼近任何非线性函数，这样神经网络就可以应用到众多的非线性模型中。2. 激活函数类型2.1 softmax函数（一般只用于最后一层进行分类,准确说应该叫分类函数了）深度学习中使用Softmax进行分类时，如果我们的结果有10类，那么最后的神经元输出就是10，也就是输出有10个数，但是直接输出这10个数有时候并不是特别好，这时候添加一个softmax，通过softmax这个函数，上面的10个数就转换为了概率，输出还是10个数，它们加起来就等于1，这样概率最大的就是我们想要的结果，我们尽可能让这个数接近1，其它9个数接近0。输出是几类，softmax的结果就是几个。前面经过了5个神经元，然后再经过softmax，那softmax的输出值还是5个，不改变输入值的个数，只改变值，使其符合概率分布。2.2 SigmoidSigmoid函数是一个在生物学中常见的S型函数，也称为S型生长曲线。在信息科学中，由于其单增以及反函数单增等性质，Sigmoid函数常被用作神经网络的阈值函数，将变量映射到0,1之间。公式如下：函数图像如下：上图使用的是Sigmoid函数，预测出来的三个数都是相互独立的，加起来并不等于1（和softmax不一样，softmax预测出来的数加起来等于1）2.3 Relu函数2.3 tanh 函数（the hyperbolic tangent function，双曲正切函数）总结：Sigmoid: 函数饱和使梯度消失。sigmoid神经元有一个不好的特性，就是当神经元的激活在接近0或1处时会饱和：在这些区域，梯度几乎为0。Tanh: 和sigmoid神经元一样，它也存在饱和问题，但是和sigmoid神经元不同的是，它的输出是零中心的。Relu:优点：相较于sigmoid和tanh函数，ReLU对于随机梯度下降的收敛有巨大的加速作用，这是由它的线性，非饱和的公式导致的。sigmoid和tanh神经元含有指数运算等耗费计算资源的操作，而ReLU可以简单地通过对一个矩阵进行阈值计算得到。缺点：在训练的时候，R©LU单元比较脆弱并且可能“死掉”。举例来说，当一个很大的梯度流过RLU的神经元的时候，可能会导致梯度更新到一种特别的状态。如果这种情况发生，那么从此所以流过这个神经元的梯度将都变成0。也就是说，这个RLU单元在训练中将不可逆转的死亡，因为这导致了数据多样化的丢失。例如，如果学习率设置得太高，可能会发现网络中40%的神经元都会死掉（在整个训练集中这些神经元都不会被激活)。通过合理设置学习率，这种情况的发生概率会降低。Leaky ReLU:1Leaky ReLU是为解决“ReLU死亡"问题的尝试。ReLU中当x<0时，函数值为0。而Leaky ReLU则是给出一个很小的负数梯度值，比如0.01。所以其函数公式为f(x)=1(x<0)(ax)+1(x>=0)(x)其中a是一个小的常量。有些研究者的论文指出这个激活函数表现很不错，但是其效果并不是很稳定。何凯明等人在2015年发布的论文Delving Deepinto Rectifiers中介绍了一种新方法PReLU,把负区间上的斜率当做每个神经元中的一个参数。（但是这里的不是固定下来的，而是可学习的)然而该激活函数在在不同任务中均有益处的一致性并没有特别清晰。总之，那么该用那种呢？用RLU非线性函数。注意设置好学习率，或许可以监控你的网络中死亡的神经元占的比例。如果单元死亡问题困扰你，就试试Leaky ReLU,不要再用sigmoid了。48. Sigmoid 与 Softmax 函数在二分类中：输出通道维度是1，用sigmoid输出通道维度是2，用softmax在多分类中：多分类用softmax，同时注意算不算背景，多分类考虑不考虑其它，语义分割考虑不考虑背景，考虑的话需要在类别的基础上加1，比如20+1。为什么多分类用softmax：sigmoid和softmax的区别就是互斥与否同样输出10类，输出通道是10，（1）用sigmoid的话，表示这10类互不相关，得到的10个概率值中的每个值代表输入这类的概率和不属于这类的概率，0-1之间的值。比如第4个值，代表输入第4类的值概率和不属于第4类的概率，和其它9个值没关系。经过sigmoid输出的10个值互不影响，只关注某一类的可能性概率是多大，每一类都是二分类，所以加起来也不等于1，可以是第一类得到的值0.9，第二个也是0.9。（2）用softmax就不一样了，它要综合考虑10个类，属于每个类的概率，这10个类相互影响，加起来是等于1的。到底用哪个？（1）分类任务中，输出为1，用sigmoid，输出不为1，用softmax（2）语义分割中，输出为1，用sigmoid，输出不为1，用softmax（3）特殊情况，二分类任务和二分类语义分割，输出通道维度可以是1，也可以是2。输出为1，用sigmoid,输出为2，用softmax。一半情况下，二分类任务输出通道为1，用sigmoid。二分类语义分割输出维度通道设为2，用softmax。当然二分类任务和二分类语义分割输出通道为1或为2都行，效果都 差不多。（4）多标签任务中，就是一个图像可以包括人，猫，房子等多标签任务，一般用sigmoid，因为它们互不影响，究其本质还是看类别 之间概率是不是相互影响来确定用sigmoid还是softmax,这是由它 们的计算公式来区别的，sigmoid计算公式只用到了1个输入， softmax的输入是多个。二分类任务（1）二分类任务（2）输出通道设为1（3）用sigmoid二分类语义分割（1）二分类语义分割（2）输出通道设为2（3）用softmax多分类任务和语义分割（1）多分类任务和多分类语义分割（2）输出通道为n>2（3）用softmax对应的损失函数二分类和多分类都叫交叉熵损失函数，一个是sigmoid交叉熵损失函数，一个是softmax交叉熵损失函数用的是sigmoid，就用binary_cross_entropy用的是softmax，就用softmax_cross_entropy
一千四百次日落带走惊醒夏日的蝉鸣带走掠过发丝的和风带走点缀寂空的月亮带走欲坠天边的密云带走整洁的公寓带走懵懂的眼球带走浸透的汗衫带走不辍的呐喊带走冷暖悲欢带走异想天开带走惝恍迷离带走天真烂漫一千四百次日落带来了下一场日出带来了前程万里-2023年6月19日凌晨两点于齐鲁工大
致谢 （节选自本科毕业论文）一千四百天过去，弹指一挥间。当光标闪烁至致谢二字时，我明白，四年的本科生涯即将结束。故事源于金秋，终于盛夏。令人慨叹。王小波曾这样写过：那一天我二十一岁，在我一生的黄金时代。正巧，我今天也是二十一岁，这又何尝不是在我一生的黄金时代。从十七岁到二十一岁，我的黄金时代留在了济南，留在了齐鲁工大，留在了 529 宿舍。饮水思其源，学成念吾师。本课题从选题到开题，从设计到论文，历时半载， 感谢赵老师和刘老师从繁忙的教学研究之中抽出时间为我悉心指导、提出建议、修改论文。桃李不言，下自成蹊。你们是我驶向更蓝更广阔的的学术之海的航程上的璀璨灯塔。承蒙各位恩师教诲，学生甚是感激！愿你们身体健康、工作顺利。 西北望长安，可怜无数山。二十一年前，我生于鲁西北平原地区， 在父母十几年如一日的照顾和培育之下，我顺利读完了小学、初中、高中，在 2019 年，我经过高考进入了齐鲁工业大学（山东省科学院）。千层山，万重浪，抵不过县城一碗汤。每次回家，都能深切的体会到这句歌词的深意。四年来，回家的次数越来越少，和父母总是聚少离多，我甚是愧疚，感谢父母多年来的包容与支持。这一路风雨不休，得你们一路护佑。焉得谖草，言树之背。我将继续奋发图强、心怀感恩，定不负父母的养育之恩！ 愿你们平安喜乐，顺遂无忧。日月交替铸一座钟。回看这四年，有多少场景皆历历在目，那是图书馆到宿舍楼的两点一线，是操场上恣意挥洒的滚烫汗珠，是耳机中循环播放的摇滚和民谣， 是永远追不上输入光标的代码字符，是键盘鼠标指挥的无数次调试运行。如此种种， 皆化作繁星点点，融入到了我脑海中关于齐鲁工大的那片温柔之乡。四年来，感谢529宿舍的兄弟们陪我走过了这一段的奇妙旅程。这些年我们曾搂着肩高歌，曾碰过壁也碰过杯，谈过“你的天高，我的海阔”。可惜，胜地不常，盛筵难再。我们也即将飞往“你的天高，我的海阔”。在这分别的盛夏，愿你们得偿所愿，前程似锦。青山遮不住，毕竟东流去。时代的洪流终将裹挟着你我奔向那未知的前路，世界并不会关心在前进道路上彷徨的众生，就好比对于宇宙来说，它并不会关心我于公元 2023 年的某个深夜在地球的某个角落所写下的这些字符，这对宇宙来说是没有任何意义的。但我们毕竟是人类，我们毕竟身处红尘，对于我们来说，有意义的事就是好好活着，好好活着就是做有意义的事。在这个时代，能够在心中留有一方净土，不受现实中污浊的浸染，并且能够捍卫它、升华它，也算是人生一大幸事吧。行文至此，感慨万千。片纸有尽，而感激之情无尽。感恩所有帮助过我的人，感谢我所遇到的一切。 最后，感谢岁月，于人世间之悲喜，许我以宽宏。