PyTorch | 生物医学 | Deep learning | 参数(parameters) | 超参数(hyperparameters)

 

以前一直没有条件,曾一度想自己买个显卡搞DL,但没有时间,也没有支持,最后就不了了之了。

无论是NGS的genetics,还是NGS的single-cell,DL都是大有可为的,最近出现的chatgpt更是确信了这一点。

未来Deep learning将会成为生信的标准工具,这是大势所趋,不可阻挡。

 

我目前在研究的MIRA就是使用了Autoencoder,这个已经在单细胞领域非常成熟了。【清一色NC灌水】

降噪 - Single-cell RNA-seq denoising using a deep count autoencoder

空间 - Deciphering spatial domains from spatially resolved transcriptomics with an adaptive graph attention auto-encoder

Graph-based autoencoder integrates spatial transcriptomics with chromatin images and identifies joint biomarkers for Alzheimer’s disease

Fast and precise single-cell data analysis using a hierarchical autoencoder

 

进入开发者模式:

 

关于Python的基础知识:

 

学习顺序:

  • WHAT IS TORCH.NN REALLY? 【pytorch代码太简洁,必须了解其底层原理,所以这里先用non pytorch的代码实现了】

 

2023年02月13日

兜兜转转了几个月,突然彻底明白了MIRA的原理。

先来谈谈我对深度学习的理解吧!

其实很简单,传统机器学习我们可以用逻辑斯蒂回归构建一个分类模型,用深度学习来实现就是构建一个“神经网络”,其中的连线就是一个线性运算y = wx + b,然后每一个神经元还有自己的激活函数,然后传递给下一个层级的神经元。神奇的是,这种结构可以非常有效的完成基本的机器学习任务,甚至可以过拟合。【目前我接触的是前后传播的神经网络,同一层是不传播的】

所以,对DL最本质的理解就是,它就是一个model架子+一堆参数,复杂如chatGPT的DL模型也是,参数就是模型对于数据的理解,就像人脑对于数据和概念的理解。而我们的任务就是找到最优模型,然后确定参数

激活函数(Activation Function)是一种添加到人工神经网络中的函数,旨在帮助网络学习数据中的复杂模式。 类似于人类大脑中基于神经元的模型,激活函数最终决定了要发射给下一个神经元的内容。 在人工神经网络中,一个节点的激活函数定义了该节点在给定的输入或输入集合下的输出。

 

其实很简单,就是一个autoencoder,非监督,就是拿自己去训练自己,在latent layer提取出了非常抽象的“理解”,然后还原为topic,从而完成了一个降维,每个topic跟PC的形式一模一样,可以提取出top的features。

也终于明白了调参的意义,每个模型训练的时候会自己“调参”,这些都是模型内部的参数。

我们经常说的调参其实是外部参数,即多少个layer、每个layer多少个node,专业术语叫hyperparameter tuning。

紧接着就是最优模型的选择,标准就是loss。

有了model,只需要截取latent layer,就得到了每个cell的topic的component,后面还可以调取每个topic的贡献feature。

所以,autoencoder的整体建模都是非常明确且简单的。

 

多品品这一页的教程,结合自己跑代码的经验:https://mira-multiome.readthedocs.io/en/latest/notebooks/tutorial_topic_model_tuning_full.html 

 

在机器学习或者深度学习领域,参数和超参数是一个常见的问题。

一直以来对于机器学习中的模型训练和模型选择存在一个误区,首先机器学习力的模型通俗来说就是一个函数关系,表明输入数据到输出数据的映射,基本的假设前提是输入数据和输出数据符合某种联合概率分布,而模型训练的过程其实就是在确定函数式的具体参数值的过程,比如假设你要做一个多项式回归分析的模型,比如f(x)=w1x1+w2x2+w3x3,那么模型训练的过程中其实就是在学习对应的w的值,那么问题来了,实战中所谓的模型调参来选择模型又指的是什么呢?

既然训练已经把参数都确定下来了,那我们调整的参数又是什么?原来这里有个误区在于模型中的parameter和hyperparameter的区别,按照搜集到的资料来看,其实模型中可以分为两种参数,一种是在训练过程中学习到的参数,即parameter也就是上面公式里的w,而另一种参数则是hyperparameter,这种参数是模型中学习不到的,是我们预先定义的,而模型的调参其实指的是调整hyperparameter,而且不同类型的模型的hyperparameter也不尽相同,比如SVM中的C,树模型中的深度、叶子数以及比较常规的学习率等等,这种参数是在模型训练之前预先定义的,所以关于模型的选择其实更多的指的是选择最佳的hyperparameter组合。

总体来说:

参数:就是模型可以根据数据可以自动学习出的变量,应该就是参数。比如,深度学习的权重,偏差等

超参数:就是用来确定模型的一些参数,超参数不同,模型是不同的(这个模型不同的意思就是有微小的区别,比如假设都是CNN模型,如果层数不同,模型不一样,虽然都是CNN模型哈。),超参数一般就是根据经验确定的变量。在深度学习中,超参数有:学习速率,迭代次数,层数,每层神经元的个数等等。

参考:

http://izhaoyi.top/2017/06/01/parameter-hyperparameter/

https://blog.csdn.net/UESTC_C2_403/article/details/77428736

 

教程:

 

posted @ 2023-02-03 06:07  Life·Intelligence  阅读(194)  评论(0编辑  收藏  举报
TOP