机器学习:无监督学习
无监督学习
1 基本概念
聚类通常被称为无监督学习,其是一种发现数据中的相似群体的技术,解决的是未知类别的训练样本预测问题。由于历史的原因,聚类和无监督学习的关系更加紧密,因此被广泛认为是相同的概念。事实上,关联规则挖掘也是无监督学习。
所谓聚类就是将对物理或抽象对象的集合分组,依据在某些方面类似的数据对象进行划分簇的过程。
聚类生成的组称为簇,簇是数据对象的集合
簇内部任意两个对象之间有较高的相似度;
属于不同簇的两个对象之间具有较高的相异度;
聚类既能作为一个单独过程,用于找寻数据内在的分布结构,也可作为分类等其他学习任务的前驱过程。
基于不同的学习策略,大体上,主要的聚类算法可以分为如下五类:
基于划分的方法;
基于层次的方法;
基于密度的方法;
基于网格的方法;
基于模型的方法;
评价一个聚类方法的好坏,一般对类内差异和类间差异进行评价。聚类结果的质量与表示,算法,距离函数和应用领域有很大关系。
2 K-Means
K-Means(K-均值)算法是一种基于划分的聚类算法。它根据某个距离函数反复地把数据分入K个聚类簇中。其中K是由用户指定的
基于划分的聚类算法:就是采 ...
机器学习:线性分类器
线性分类器
1 线性判别函数
判别函数:表示分类界面的函数 g(x)g(x)g(x),Discriminant Function。
分类:不同的样本点散落在样本空间的不同位置。运用学习方法产生判别函数,定义若干个分类界面g(x)=0g(x)=0g(x)=0 ,将样本空间划分为一些互不重叠的区域。
线性可分:对于一组数据(样本点的集合),如果能用一个线性的判别函数正确分类,则称他们是线性可分的。反过来,如果一个样本集是线性可分的,则一定有一个线性分类器能正确分类该样本集。
1.1 通过样本直接确定判别函数
通过样本直接确定判别函数(分类器)的三要素为:
确定判别函数的类型(线性?)
确定判别函数设计的目标,准则
设计算法,基于样本计算最优的判别函数参数。
即,有准则函数 L(α)L(\alpha)L(α),求解一个特定的 α∗\alpha^*α∗ 使得
L(α∗)=argmin L(α),where α⊂ω,α是待定参数L(\alpha^*)=argmin\ L(\alpha), where\ \alpha\subset\omega,\alpha是待定参数
L(α∗)=argmin ...
Electron in Action:Electron Note 1
Electron in Action:Electron 笔记1
This article will continue to be updated, until it becomes too long
捉虫:
通过点击一个按钮,显示一条 alert,原书中给出如下代码(Listing 2.6):
12345app.on('ready', () => { console.log('Hello from Electron.'); mainWindow = new BrowserWindow(); mainWindow.webContents.loadFile('index.html'); });
这段代码是无法显示出原书想要的效果的,在 Electron 16.0.04 版本以后,需要添加必要参数,修改代码如下所示:
123456789app.on('ready', () => { mainWindow = new BrowserWindow( ...
NExT-GPT:Any-to-Any Multimodal LLM 任意到任意的多模态LLM系统
NExT-GPT:Any-to-Any Multimodal LLM 任意到任意的多模态LLM系统
原文地址:https://arxiv.org/abs/2309.05519
项目地址:https://next-gpt.github.io/
NExT-GPT能够以任意文本、图像、视频和音频的组合感知输入并生成输出。
概述 Overall
如图所示,NExT-GPT 包括三个层次。首先,利用已建立的编码器对各种模态的输入进行编码。其中,这些表示通过投影层映射为 LLM 可以理解的类似语言的表示。其次,利用现有的开源 LLM 作为核心, 处理输入信息,进行语义理解和推理。LLM 不仅直接生成文本标记,还产生独特的“模态信号”标记,用作指示解码层输出相应的模态内容。优于 NExT-GPT 涵盖了各种模态的编码和生成,从头开始训练将导致巨大的训练成本。因此,NExT-GPT 利用了现有的预训练高性能编码器和解码器,例如:Q-Former、ImageBind和最先进的 Latent Diffusion 模型。
为了实现三个层次之间的特征对齐,NExT-GPT 仅在输入投影和输出投影层上进行局部微 ...
EmoSpeech:Guiding FastSpeech2 Towards Emotional Text to Speech
EmoSpeech: Guiding FastSpeech2 Towards Emotional Text to Speech
原文地址:EmoSpeech: Guiding FastSpeech2 Towards Emotional Text to Speech
概述
以 FastSpeech2 为代表的基于 Transformers 的 TTS 模型虽然在合成效果上不及最新的基于 Diffusion 的模型(例如 NaturalSpeech2),但在推理速度方面表现优异。在评估语音质量时,TTS 模型必须考虑到简单文本输入中缺失的诸多因素,例如:韵律、重音、节奏、语调以及情感。本文探讨了如何采用 FastSpeech2 进行情感语音合成(Emotional Text-To-Speech, ETTS),并在后续工作中对文本序列中情感分布不均匀的问题进行了分析。本文的主要贡献如下:
提出了对 FastSpeech2 模型架构的扩展,引入了若干已知的和新的模块,使其能够合成特定情感的语音。
所提出的模型在 MOS 和情感识别准确性方面优于现有的 FastSpeech2 扩展实现,且不会 ...
TTS 情感控制:Fine-Grained Emotional Control of Text-To-Speech
TTS 情感控制:Fine-Grained Emotional Control of Text-To-Speech: Learning To Rank Inter- And Intra- Class Emotion Intensities
原文地址:arXiv: Fine-grained Emotional Control of Text-To-Speech: Learning To Rank Inter- And Intra-Class Emotion Intensities
概述
近年来,端到端的TTS模型能够合成具有中性情感(Neutral)的高质量语音,然而,这些模型在表达情感等信息方面存在局限性。实现情感控制的一种直接策略是通过对全局情感标签进行Conditioning来表达不同的情感,或使用单个token或向量组来表示情感信息。这些模型往往难以捕捉参考语音中的细微差别,这是由于参考内容或说话者与合成语音之间的不匹配导致的。这进一步导致了对合成语音的控制能力差。
实现语音控制的TTS的更好方法是在单词(Words)或音素(Phonemes)上手动分配强度标签。在一些使用强度标 ...
FastSpeech2 论文笔记(不包含FastSpeech2s)
FastSpeech2 论文笔记(不包含FastSpeech2s)
原文地址:https://arxiv.org/abs/2006.04558
1. 简介
FastSpeech 存在一些缺点:教师-学生蒸馏流程复杂且耗时;从教师模型中提取的持续时间不够准确;从教师模型蒸馏出的目标梅尔频谱图有信息丢失等。因此,FastSpeech2直接使用真实语音作为训练目标,而不是教师模型的简化输出;引入了更多的语音变化信息作为条件输入。实验结果表明,FastSpeech2相比FastSpeech实现了三倍的训练加速,推理更快,且合成质量优于FastSpeech。
TTS(文字到语音,Text-To-Speech)任务是一个典型的一对多合成问题。由于语音的变化,如音调、持续时间、音量、韵律,一个文本序列可能对应多个语音序列。在非自回归TTS模型中,文字序列是唯一的输入,导致模型无法预测语音的变化,可能导致过度拟合训练样本上的语音变化而降低泛化能力。FastSpeech2旨在解决这些问题。
2. FastSpeech2 模型宏观结构
如图所示为FastSpeech2的模型结构。其中FastSpeech ...
论文笔记:NaturalSpeech2
NaturalSpeech2: Latent Diffusion Models are Natural and Zero-Shot Speech and Singing Synthesizers
原文地址:https://speechresearch.github.io/naturalspeech2/
Abstract
本文介绍了一种名为 NaturalSpeech 2 的TTS系统,旨在解决 large-scale、Multi-speaker 和 in-the-wild 数据集上的 TTS 任务。它采用神经音频编解码器和扩散模型,以实现更稳定的韵律、避免跳词/重复问题,并提高声音质量。为了实现零样本能力,作者还设计了一种语音提示机制(speech prompting mechanism)。经过在具有大规模语音和歌唱数据的数据集上的评估,NaturalSpeech 2 在 Zero-shot 情况下表现出色,包括韵律/音色相似性、稳健性和声音质量方面均优于先前的TTS系统。此外,该系统还实现了 Zero-shot 歌唱合成的新功能。
Background
传统的 TTS 系统通常利用神 ...
MFA(Montreal Forced Aligner)简记
MFA(Montreal Forced Aligner)简记
MFA官方地址:https://montreal-forced-aligner.readthedocs.io/en/latest/index.html
MFA预训练模型:https://mfa-models.readthedocs.io/en/latest/
What is forced alignment
Forced alignment is a technique to take an orthographic transcription of an audio file and generate a time-aligned version using a pronunciation dictionary to look up phones for words.
MFA是一个自动化的音频与文本的强制对齐工具。它主要用于自动对齐音频与转录文本,生成时序标注。常见于语音合成领域,如:Text-To-Speech(TTS)语音合成任务。
功能及工作流
MFA得主要功能有:
音频-文本对齐:MFA可以接受音频文件和其对 ...
Kotlin:面向对象编程(补档)
Kotlin: 面向对象编程(补档)
类
在面向对象的语言中,可以创建“类”,“类”是对事物的一种封装
类与对象
类:Class ,生成一个“Person”类:
12class Person {}
这是一个空的类实现,在Kotlin中,类用“class”关键字声明,可以在类中加入字段和函数来丰富它的功能,如:
12345678class Person { var name = “” var age = 0 fun eat() { println(name + “ is eating.He is “ + age + “years old.”) }}
如以上代码,在Person类中创建了“name”、“age”字段并定义了“eat()”函数
类的实例化
如下代码为对Person类的实例化
12345fun main(){ val p = Person()//存疑,是否应该用var p.name = “Jack” P.age = 19 p.eat
以上便是面向对象的基本用法
类的封装
定义类中的字段与函数
对类进行实 ...