「死」とは何か イェール大学で23年連続の人気講義

- 死は恐れるべきことなのか。自殺はいかなる時もあるべきではないのか。
- 何が満たされれば人格の同一性を主張できる?身体?脳?信念や欲望・記憶?
- 快楽主義:人生で経験するプラスとマイナスの経験を足し、それが0以上になるかどうか。注:ただし、経験には、間接的な価値と本質的な価値を伏せ持つ可能性がある。(コンロを触りやけどをする -> 痛いので本質的に悪いが、今後痛い思いをするのを防ぐので間接的にはいいはず)。 ⇔ 強化学習。人間が下す経験の評価は、絶対的にも相対的にもなりうる。。
- 東洋的思想と死について興味を持った。

カサンドラ症候群 - 身近な人がアスペルガーだったら

夫婦間で、一方が共感性の低い回避型、もう一方が共感性の高い不安型の場合、問題に対する対処法が相談する場合・される場合ともに異なるため、それぞれが不満を抱き、負のスパイラルへ陥る。問題は不安型の人もしくは双方にあるが、不安型の人が真面目に見られやすく、問題は不安型の人にあると不安型が第三者に伝えようとしても信じてもらえないことから、カサンドラの悲劇、カサンドラ症候群と呼ばれる。意思の適切な伝え方を話し合う。

std::regexのメモ (その1)

C++正規表現を扱う。数字と助数詞を取り出す疑似コード。
input: リンゴ2個とイチゴ3個を買う。
re: std::regex re( R"( (\D*?[^+-]*?)([+-]?\d[\d,]*[\.]?\d*)(個|匹|本)(.*?) )");

 

std::vector<std::string> match(std::string& text, std::regex const& re) {

     std::vector<std::string> result;

     std::smatch m;

 

     std::regex_match(text, m, re);

     for (auto &&elem: m) {

          result.push_back(elem.str());

     }

     return result;

}

 

std::string apply_re(std::string input, std::regex re) {
     while (true) {
          auto result = match(input, re);

          if (result.size() == 0) {
               break;
          } else {
               // result[1]: prefix
               // result[2]: 数字
               // result[3]: 助数詞
               // result[4]: suffix
               input = result[4];
          }
     }
}

'?'を付けることで、最短一致か最長一致かを指定することができる。

Big coreとLittle core

詳細は以下URLを参照:
https://developer.qualcomm.com/blog/impact-big-core-little-core-architecture-application-development

 

big.LITTLEと呼ばれるアーキテクチャは,高性能を追求するbigと省電力性を追求するlittleの2つの種類のコアで構成されている.これらを組み合わせることにより,オペレーティングシステムレベルとアプリケーションレベルの両方で,処理要求と電力効率のバランスをとることが目的.
メーカーによって,big.LITTLEコアの選択を隠蔽しユーザ側が考える必要をなくしていたり,APIによって制御可能なようにしていたりする.IDEによっては,異なるコアでデバッグを簡単に行える.Don't forget that at some point you'll need to optimize and debug your application!

論文メモ_8

Semi-supervised training for improving data efficiency in end-to-end speech synthesis
利用できるデータをできるだけ生かし、Tacotronを学習する試み。1. word embeddingを用いてencoder networkをconditioning。2. decoder networkを、次フレームの出力を予測するよう学習させ、autoregressive modelとして事前学習する。

 

A new GAN based end-to-end TTS training algorithm
Tacotronのexposure biasを改善するための試み。teacher forcingを行った場合とfree running (inference mode) との間でGANを学習する。discriminatorへの入力は、ネットワークの出力系列ではなく、attention networkのhidden states。

 

Disentangling Correlated Speaker and Noise for Speech Synthesis via Data Augmentation and Adversarial Factorization
GMVAE w/ Tacotronを用いた音声合成。雑音および話者に関する情報をdisentangleするため、global condition用のencoderの出力に対し、雑音が重畳されているかどうかを当てるタスクを追加し、adversarial trainingを行う。雑音が重畳されたより収集が容易なデータも学習データとしたい。

 

Speech-to-speech translation between untranscribed unknown languages
テキストデータを用いずに、speech to speech translation。VQ-VAEを用いて離散シンボルを学習。

 

Domain expansion in DNN-based acoustic models for robust speech recognition
DNN-HMM hybrid systemのアクセントを対象とした adaptation (ここではdomain expansion)を行う。過去に提案されているKL divergence baseの正則化項とelastic weight consolidation (EWC)の併用を、他の先行研究と比較。パラメタのL2ノルムをFisher行列の対応する値で重みづけ。

 

Self-attention transducers for end-to-end speech recognition
RNN-TransducerのRNNをself-attentionに入れ替える。また、path-aware regularization (kaldiでalignmentを求め、これをマルチタスクとして使用)、chunk-flow mechanism (attention計算時に使用するencoder側の系列を固定長へと制限)を用いたonline decodingへの対応を行う。

 

A multi-task learning framework for overcoming the catastrophic forgetting in automatic speech recognition
domain adaptationを行う際、適応前ドメインの精度も落とさずに新たなドメインに適応を行う試み。対象はCTC。適応時のロスに、適応前学習データを用いた適応前後のCTCの出力のKL divergenceとCTCのlossを追加し、適応前学習データに対する精度が落ちないようにする。fine-tuningやretrainingよりも早く収束し、性能も同等もしくは良い結果となった。

 

Evaluating Long-form Text-to-Speech: Comparing the Ratings of Sentences and Paragraphs
従来のTTSは、文単位でスコアを求めることが多い。paragraphやdialogレベルでの音声合成では、過去のコンテキストとの関連や一貫性も重要なため、コンテキストを考慮した上でTTSの評価を行う枠組み

 

Exploring methods for the automatic detection of errors in manual transcription
ASRの学習に使用する音声・テキストペア内に含まれる、書き起こし誤りを検出する試み。(kaldiでは、書き起こしを用いてbiased LMを学習し、decoding結果の精度をチェックことで間違った正解ラベルの検出を行う。この文献では、)DNN-HMMで計算した事後確率とforced alignmentをとって計算した確率のsymmetric KL divergenceの標準偏差を発話単位で計算し、これを閾値として誤りを検出する。ただ、EERは、biased LM-baseの手法と同等。

論文メモ_7

Improving performance of end-to-end ASR on numeric sequences
数字列を発声した際、システムはそれを文字ではなく数字で表示してほしい。数字へと精度よく変換するための手法の提案。書き起こしに対してtrivialかnon-trivialかをタグ付けし、non-trivialな部分は別途モデル (FST|NN) へ入力し変換を行う。

 

Discriminative learning for monaural speech separation using deep embedding features
end-to-endにspeech separationをする。deep clusteringとuPITを組み合わせ、すべてをend-to-endで学習。まずDCでembedded featureを求め、これをuPIT側へ入力。(discriminative learning of uPIT: 選択したpermutationの候補以外の組み合わせで計算したロスにマイナスをかけ、それをDCとuPITにロスに足しこむ。)

 

Fast DNN acoustic model speaker adaptation by learning hidden unit contribution features
従来のLHUCは、適応データを準備してLHUCのパラメタをbackpropで学習する。backprop無しでデータ量の増加に応じてonline adaptationできるように、averaging layerを持つLHUC prediction networkを用意し、この出力に応じてadaptationを行う。

 

Unsupervised adaptation with adversarial dropout regularization for robust speech recognition
adversarial dropout regularizationを用いた音響モデルの話者適応。モデルはDNN-HMM hybrid systemで、framewise posteriorを対象としてる。

 

Exploiting semi-supervised training through a dropout regularization in end-to-end speech recognition
dropoutを用いてラベルを作成し、semi supervised trainingを行う。decoding scoreやエントロピーを用いて生成したラベルrの信頼度を計算し、適応データとして使用するかどうか決める。

 

Sequence-to-sequence learning via attention transfer for incremental speech recognition
Incremental speech recognitionの学習手法。attention matrixからknowledge distillation。

 

Group latent embedding for vector quantized variational autoencoder in non-parallel voice conversion
VQ-VAEを用いた音声変換。辞書をsub-groupに分割し選択したsubgroupの重み付き和を潜在変数に。

スマホで音声認識

[1] で開発されているプロジェクトのコードを読み、動かす。kaldiOpenFSTをarmv7でコンパイルし、aarを作成している。コア部分はC++ (kaldi)、front end interfaceはJavaJava側からswigC++を呼び出している。予めHCLとGをcomposeせず、on-the-fly decoding。実機で動かすと、性能は落ちるが予想以上にlatencyが低く、いい感じ。

[1] https://github.com/alphacep/kaldi-android