2019.11.18-2019.11.30

總結(jié):

  1. 數(shù)據(jù)集:聲學(xué)場景分類任務(wù),使用DCASE2019_task_1b的數(shù)據(jù)集,共10000個訓(xùn)練集和5000個驗(yàn)證集,做好了數(shù)據(jù)的處理工作。
  2. 特征提取:特征提取采用python_speech_features庫提取log-mel特征,幀長20ms,幀移10ms,頻率維度80,對標(biāo)簽進(jìn)行one-hot處理。
  3. 使用keras自帶的ResNet50在不區(qū)分設(shè)備的情況下跑出61.63%的結(jié)果,但是訓(xùn)練過程中驗(yàn)證集正確率波動十分明顯,因此個人認(rèn)為意義不大。
  4. 閱讀并復(fù)現(xiàn)了McDonnell的方法。
  • 該參賽者使用librosa提取log-mel特征,幀長2048個采樣點(diǎn),幀移1024個采樣點(diǎn),頻率維度128,并且對特征進(jìn)行了一階差分和二階差分。
  • 值得注意的是,其沒有將設(shè)備進(jìn)行區(qū)分訓(xùn)練,因此方法的魯棒性會很好。
  • 其將128維特征分成低頻的64維和高頻的64維,在網(wǎng)絡(luò)中并行訓(xùn)練最后進(jìn)行拼接。
  • 數(shù)據(jù)增強(qiáng)采用Mixup。
  • 網(wǎng)絡(luò)模型使用殘差卷積網(wǎng)絡(luò)。
  • 在訓(xùn)練過程中動態(tài)調(diào)整學(xué)習(xí)率。
  • 64個epoch時達(dá)到了73%的正確率,相信在510個epoch時性能還會有提升。
  1. 發(fā)現(xiàn)的問題:由于我和McDonnell提取的特征稍有不同,但是性能差別明顯。
  • 我的特征+ResNet50:性能可達(dá)到60%
  • McDonnell特征+ResNet50:15%左右
  • 我的特征+作者的模型:62%
  • McDonnell特征+作者的模型:73%。
    該問題需要在下面的工作中進(jìn)行分析。

下一步計(jì)劃:

  1. Mixup是一個很好的數(shù)據(jù)增強(qiáng)方法,因?yàn)橛?xùn)練集和測試集語料僅有15000條,每條10秒,數(shù)據(jù)量并不大。我想在這一步中引入GAN來提取音頻的純凈特征,可以在這一點(diǎn)上進(jìn)行嘗試。
  2. keras自帶的ResNet50只是一個暫時的baseline,需要引用再調(diào)整出一個性能較好的模型
  3. 音頻特征提取需要進(jìn)行進(jìn)一步的研究。個人認(rèn)為音頻特征的提取對分類結(jié)果的影響十分明顯,但現(xiàn)在并沒有弄懂什么樣的特征才真正適合該任務(wù),只是按照通用的方法來進(jìn)行特征提取工作

2019.11.18

1.處理好了DCASE2019數(shù)據(jù)集,已將數(shù)據(jù)按a、b、c設(shè)備分類。
2.對音頻提取特征。
音頻都是10s的數(shù)據(jù)。特征采用80維的log-fbank,幀長20ms,幀移10ms,因此每個音頻共999幀。
在提取過程中發(fā)現(xiàn)有的音頻裁出了1000幀,為保證矩陣的維度,因此只保留前999幀,最終輸入網(wǎng)絡(luò)的數(shù)據(jù)維度是( , 999, 80, 1)
3.對標(biāo)簽進(jìn)行one-hot處理。
4.使用keras自帶的ResNet50訓(xùn)練a設(shè)備。
暫時最好情況達(dá)到54%正確率。


2019.11.19

  1. 昨日數(shù)據(jù)跑了100個epoch,最好效果達(dá)到66.70%


  2. 閱讀論文《BOOSTING NOISE ROBUSTNESS OF ACOUSTIC MODEL VIA DEEP ADVERSARIAL TRAINING》
    論文想要使用GAN提取純凈語音的特征,而在我的任務(wù)中,a設(shè)備由于數(shù)據(jù)量大、錄音設(shè)備精度高,因此可以理解為純凈的語音,我們就可以用類似的方法提取b、c設(shè)備的純凈特征(相似于設(shè)備a)。文中提到了論文《Triple Generative Adversarial Nets》提出三重GAN,以引入用于分類和分類條件生成的三個組件。
  3. 改用DenseNet169跑100個epoch,最好到65.91%
  4. 閱讀《深度學(xué)習(xí)500問》第七章GAN
    \underset{G}{min}\underset{D}{max}V(D,G)=E_{x\sim P_{data}(x)}[logD(x)]+E_{z\sim p_{z}(z)}[log(1-D(G(z)))]
    這個目標(biāo)函數(shù)可以分為兩個部分來理解:
    ? 第一部分:判別器的優(yōu)化通過 \underset{D}{max}V(D,G) 實(shí)現(xiàn),V(D,G) 為判別器的目標(biāo)函數(shù),其第一項(xiàng) E_{x\sim P_{data}(x)}[logD(x)] 表示對于從真實(shí)數(shù)據(jù)分布中采用的樣本 ,其被判別器判定為真實(shí)樣本概率的數(shù)學(xué)期望。對于真實(shí)數(shù)據(jù)分布 中采樣的樣本,其預(yù)測為正樣本的概率當(dāng)然是越接近1越好。因此希望最大化這一項(xiàng)。第二項(xiàng) E_{z\sim p_{z}(z)}[log(1-D(G(z)))]表示:對于從噪聲 P_{z}(z) 分布當(dāng)中采樣得到的樣本,經(jīng)過生成器生成之后得到的生成圖片,然后送入判別器,其預(yù)測概率的負(fù)對數(shù)的期望,這個值自然是越大越好,這個值越大, 越接近0,也就代表判別器越好。
    ? 第二部分:生成器的優(yōu)化通過 \underset{G}{min}(\underset{D}{max}V(D,G))來實(shí)現(xiàn)。注意,生成器的目標(biāo)不是 \underset{G}{min}V(D,G) ,即生成器不是最小化判別器的目標(biāo)函數(shù),二是最小化判別器目標(biāo)函數(shù)的最大值,判別器目標(biāo)函數(shù)的最大值代表的是真實(shí)數(shù)據(jù)分布與生成數(shù)據(jù)分布的JS散度(詳情可以參閱附錄的推導(dǎo)),JS散度可以度量分布的相似性,兩個分布越接近,JS散度越小。

2019.11.20

  1. 閱讀《Investigating Generative Adversarial Networks based Speech Dereverberation for Robust Speech Recognition》
    發(fā)現(xiàn)自己閱讀論文能力不足,需要鍛煉,閱讀一遍之后,每句話能大概讀懂是什么意思,但是回想一下論文都講了哪些事情卻什么也想不起來。
  2. 不區(qū)分設(shè)備,將所有數(shù)據(jù)一齊進(jìn)行訓(xùn)練,網(wǎng)絡(luò)使用還是ResNet50,最高達(dá)到61.63%。


2019.11.21

  1. 閱讀《Speech Enhancement Generative Adversarial Network》
    引用其中的一句話:
    對于傳統(tǒng)的機(jī)器學(xué)習(xí)方法,我們一般會先定義一個模型讓數(shù)據(jù)去學(xué)習(xí)。(比如:假設(shè)我們知道原始數(shù)據(jù)是高斯分布的,只是不知道高斯分布的參數(shù),這個時候我們定義一個高斯分布,然后利用數(shù)據(jù)去學(xué)習(xí)高斯分布的參數(shù),最終得到我們的模型),但是大家有沒有覺得奇怪,感覺你好像事先知道數(shù)據(jù)該怎么映射一樣,只是在學(xué)習(xí)模型的參數(shù)罷了。GAN則不同,生成模型最后通過噪聲生成一個完整的真實(shí)數(shù)據(jù)(比如人臉),說明生成模型已經(jīng)掌握了從隨機(jī)噪聲到人臉數(shù)據(jù)的分布規(guī)律。有了這個規(guī)律,想生成人臉還不容易,然而這個規(guī)律我們事先是不知道的,我們也不知道,如果讓你說從隨機(jī)噪聲到人臉應(yīng)該服從什么分布,你不可能知道。這是一層層映射之后組合起來的非常復(fù)雜的分布映射規(guī)律。然而GAN的機(jī)制可以學(xué)習(xí)到,也就是說GAN學(xué)習(xí)到了真實(shí)樣本集的數(shù)據(jù)分布。

  2. 突然有一個想法
    我試聽了abc三種設(shè)備錄制出來的音頻,三種音頻最明顯的差別就是音量,a設(shè)備精度最高但音量最低,人耳很難辨別出場景,我認(rèn)為是設(shè)備質(zhì)量過好,濾掉了很多場景中的雜音,但這些可能是被忽略掉的有用信息,遂決定單獨(dú)再跑一下b、c設(shè)備的數(shù)據(jù)。

  • 用ResNet50跑b設(shè)備,正確率在40%左右。
  • 用ResNet50跑c設(shè)備,正確率在43%左右。
    問過師兄,師兄說不要太主觀地去聽,因?yàn)闄C(jī)器理解的和人理解的不同。
    我應(yīng)該再去看看DCASE上人們的做法。
  1. DCASE上其他人的情況
    Kosmider是做的很出色的,提交的四個網(wǎng)絡(luò)占據(jù)了前四名。他提出的思想是對音頻提取完特征后進(jìn)行頻譜增強(qiáng),并且大量使用模型融合,投票方式。但是沒有公開代碼。
    McDonnell的做法是將3個子任務(wù)都實(shí)現(xiàn)了,而且使用單一模型。亮點(diǎn)是,作者認(rèn)為高頻和低頻有不同的特征,因此使用網(wǎng)絡(luò)學(xué)習(xí)一半兒高頻的知識,再學(xué)習(xí)另一半的低頻知識,拼接成128維的特征向量。

2019.11.22

讀完了McDonnell的技術(shù)報告,并且他提供了源碼,開始復(fù)現(xiàn)。

2019.11.23

在McDonnell的代碼中發(fā)現(xiàn),他將三個子任務(wù)進(jìn)行了整合,代碼可以將三個子任務(wù)同時實(shí)現(xiàn)。
① csv文件讀取時直接用sep='\t'將制表符拆分,encoding='ASCII'以該格式讀取,讀取時直接用表頭['filename'].tolist()獲取到列表,這一段之前我在實(shí)現(xiàn)時用了很長一段代碼才實(shí)現(xiàn),作者只用了一行,非常值得學(xué)習(xí)。
② 用的librosa庫進(jìn)行特征提取,但是沒有將提取好的特征進(jìn)行保存,這一段可以修改一下。
③ 作者用到了Warm Restart,這一段要查一查
④ 需要再鞏固一下特征提取的幾個參數(shù)。

2019.11.24

敲完了作者的代碼,但是其中有許多東西需要細(xì)致地理解。

2019.11.25

1.作者代碼中有大量的特征維度操作處理,有必要再去溫習(xí)下特征提取的維度意義。

  1. 改寫特征提取那一部分。因?yàn)槿绻看芜\(yùn)行都提取,則會占用大量CPU資源。
  2. 調(diào)整好了程序,已經(jīng)成功運(yùn)行。
  3. 再來梳理一下作者提取特征的一些參數(shù)。
LM_train[i,:,:,channel]= librosa.feature.melspectrogram(stereo[:,channel], 
                                       sr=sr,
                                       n_fft=NumFFTPoints,
                                       hop_length=HopLength,
                                       n_mels=NumFreqBins,
                                       fmin=0.0,
                                       fmax=sr/2,
                                       htk=True,
                                       norm=None)
  • stereo:輸入的數(shù)據(jù)
  • sr:采樣率。在這里是44100
  • n_fft:窗口大小。在這里是2048
  • hop_length:幀移。在這里是窗口的一半,即1024
  • n_mels:產(chǎn)生的梅爾帶數(shù)。這里是128
  • fmin:最低頻率。這里是0
  • fmax:最高頻率,默認(rèn)是采樣率的一半。
  • htk:使用HTK公式代替Slaney
  • norm:如果為1,則將三角mel權(quán)重除以mel帶的寬度(區(qū)域歸一化)。 否則,保留所有三角形的峰值為1.0
  1. 很多DCASE參賽者都使用了Mixup方法,因此有必要閱讀這篇論文《Mixup: Beyond empirical risk minimization》

2019.11.26

  1. 機(jī)器學(xué)習(xí)-->期望風(fēng)險、經(jīng)驗(yàn)風(fēng)險與結(jié)構(gòu)風(fēng)險之間的關(guān)系
    出處:機(jī)器學(xué)習(xí)-->期望風(fēng)險、經(jīng)驗(yàn)風(fēng)險與結(jié)構(gòu)風(fēng)險之間的關(guān)系
    ① 經(jīng)驗(yàn)風(fēng)險:R_{expe}(f)=\frac{1}{N}\sum_{i=1}^{N}L(y_i, f(x_i))
    所謂的經(jīng)驗(yàn)風(fēng)險最小化便是讓這個式子最小化,注意這個式子中累加和的上標(biāo)N表示的是訓(xùn)練樣例集中樣本的數(shù)目。 經(jīng)驗(yàn)風(fēng)險是對訓(xùn)練集中的所有樣本點(diǎn)損失函數(shù)的平均最小化,經(jīng)驗(yàn)風(fēng)險越小說明模型f(X)對訓(xùn)練集的擬合程度越好.
    ② 期望風(fēng)險:我們知道未知的樣本數(shù)據(jù)(<X,Y>)的數(shù)量是不容易確定的,所以就沒有辦法用所有樣本損失函數(shù)的平均值的最小化這個方法。假設(shè)X和Y服從聯(lián)合分布P(X,Y).那么期望風(fēng)險就可以表示為:R_{exp}(f)=E_{P}[L(Y, f(X))]=\int_{x*y}L(y, f(x))P(x, y)dxdy
  • 經(jīng)驗(yàn)風(fēng)險是局部的,基于訓(xùn)練集所有樣本點(diǎn)損失函數(shù)最小化的。
  • 期望風(fēng)險是全局的,是基于所有樣本點(diǎn)的損失函數(shù)最小化的。
  • 經(jīng)驗(yàn)風(fēng)險函數(shù)是現(xiàn)實(shí)的,可求的;
  • 期望風(fēng)險函數(shù)是理想化的,不可求的;
    ③ 結(jié)構(gòu)風(fēng)險:結(jié)構(gòu)風(fēng)險是對經(jīng)驗(yàn)風(fēng)險和期望風(fēng)險的折中,在經(jīng)驗(yàn)風(fēng)險函數(shù)后面加一個正則化項(xiàng)(懲罰項(xiàng))便是結(jié)構(gòu)風(fēng)險。
    R_{erm}(f)=\frac{1}{N}\sum_{i=1}^{N}L(y_i,f(x_i))+\lambda J(f)
    相比于經(jīng)驗(yàn)風(fēng)險,結(jié)構(gòu)風(fēng)險多了一個懲罰項(xiàng)\lambda是一個大于0的系數(shù)。J(f)表示的是是模型f的復(fù)雜度。
    經(jīng)驗(yàn)風(fēng)險越小,模型決策函數(shù)越復(fù)雜,其包含的參數(shù)越多,當(dāng)經(jīng)驗(yàn)風(fēng)險函數(shù)小到一定程度就出現(xiàn)了過擬合現(xiàn)象。也可以理解為模型決策函數(shù)的復(fù)雜程度是過擬合的必要條件,那么我們要想防止過擬合現(xiàn)象的方式,就要破壞這個必要條件,即降低決策函數(shù)的復(fù)雜度。也即,讓懲罰項(xiàng)J(f)最小化,現(xiàn)在出現(xiàn)兩個需要最小化的函數(shù)了。我們需要同時保證經(jīng)驗(yàn)風(fēng)險函數(shù)和模型決策函數(shù)的復(fù)雜度都達(dá)到最小化,一個簡單的辦法把兩個式子融合成一個式子得到結(jié)構(gòu)風(fēng)險函數(shù)然后對這個結(jié)構(gòu)風(fēng)險函數(shù)進(jìn)行最小化。
  1. Mixup
    出處:【論文閱讀】mixup: BEYOND EMPIRICAL RISK MINIMIZATION
    經(jīng)驗(yàn)風(fēng)險最小化(ERM)存在這樣的一個問題:只要模型能夠記住每個樣本,就可以最小化經(jīng)驗(yàn)風(fēng)險。因此一旦出現(xiàn)和模型分布輕微不同的數(shù)據(jù),表現(xiàn)就會很差。其實(shí)就是過擬合了。.
    這篇文章的主要貢獻(xiàn)在于提出了一種通用的臨近分布,mixup:
    \mu(\tilde{x}, \tilde{y})=\frac{1}{n}\sum_{j}^{n}\underset{\lambda}{E}[\delta(\tilde{x}=\lambda\cdot x_i+(1-\lambda)\cdot x_j, \tilde{y}=\lambda \cdot y_i + (1-\lambda)\cdot y_j)]
    其中,\lambda\sim Beta(\alpha, \alpha),對于任意的\alpha\epsilon (0, \infty)。簡而言之,從mixup分布采樣出數(shù)據(jù)集:
    \tilde{x} = \lambda x_i + (1- \lambda)x_j
    \tilde{y} = \lambda y_i + (1- \lambda)y_j
    這里(xi,yi)和(xj,yj)是從數(shù)據(jù)集中隨機(jī)采樣得到的任意兩個樣本。α是一個超參數(shù),用于控制混合的程度。當(dāng)α越接近于0時,分布越傾向于集中在(0,1)的兩端,越大時分布越均勻。極限情況α=0時等價于沒有采用本方法。
  2. 閱讀Paul Primus, David Eitelsebner的技術(shù)報告
    ① 特征提取:
    降采樣到22050Hz,窗長2048采樣點(diǎn),幀移512采樣點(diǎn)。取40-22050HZ的信息,頻率維度256,共431幀。
    ② 領(lǐng)域自適應(yīng):
    A樣本的分布稱為源域(x^s \sim X^s),將B和C樣本的分布稱為目標(biāo)域(x^t \sim X^t)
    ③ LOSS:
    使用MI Loss,即分類的Categorical Cross Entropy (CCE)loss和領(lǐng)域自適應(yīng)的loss進(jìn)行結(jié)合:
    L = L_{CCE}+\lambda L_{l,DA}
    ④ Model:
    Kaggle上排名靠前的先進(jìn)CNN架構(gòu)。
    參考《The Receptive Field as a Regularizer in Deep Convolutional Neural Networks for Acoustic Scene Classification》
    ⑤ Training:
    epoch:250
    mini_batch:32
    優(yōu)化算法:Adam
    學(xué)習(xí)率:初始為10^{-3},如果B、C設(shè)備15個epoch也不增長,則學(xué)習(xí)率以0.5的系數(shù)減少。
    如果學(xué)習(xí)率降低,將設(shè)備B和C的平均準(zhǔn)確度重置為最佳模型,直到最后一個epoch。 進(jìn)一步使用MixUp增強(qiáng),將beta分布的參數(shù)設(shè)置為α=β= 0.2。
  1. McDonnell的結(jié)果:




  2. 閱讀《The Receptive Field as a Regularizer in Deep Convolutional Neural Networks for Acoustic Scene Classification》
    改論文講述了對CNN中感受野的調(diào)整對ASC任務(wù)的結(jié)果影響。將3 * 3調(diào)整到1 * 1。

2019.11.27

  1. McDonnell的結(jié)果出來了,驗(yàn)證集最高能到69.88%


  2. 上面的效果其實(shí)并不是很理想,原以為可以做到70%以上。接下來想驗(yàn)證一下mixup的作用。
  3. 使用McDonnell提取的特征放入ResNet50中,發(fā)現(xiàn)十分類正確率只有20%左右,做進(jìn)一步分析。
  4. 發(fā)現(xiàn),我用之前的特征,驗(yàn)證集的準(zhǔn)確率還是有保證的。



    自己提取的特征與McDonnell的不同點(diǎn):
    ① 我用的python_speech_features庫;M使用的是librosa庫
    ② 我用20ms作為窗長(882個點(diǎn)),10ms作為幀移;M用2048個點(diǎn)作為窗長,1024個點(diǎn)作為幀移。

2019.11.28

  1. 對比了一下是否添加mixup的結(jié)果:


    不添加Mixup

    添加Mixup
  2. 在使用自己的特征跑McDonnell的程序時,發(fā)現(xiàn)模型模塊寫錯了,修改。
    McDonnell的特征在62epoch達(dá)到了73.28%的正確率。


    McDonnell

    自己的特征在62epoch只達(dá)到了62%的正確率。


    自己的
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容