横須賀の某Prisonで働く研究者?のブログ

NAISTを出て横須賀の某社の研究所で研究者をしています.本ブログの内容は業務内容や所属企業とは一切関係ありません.

【就職エントリ】N?Tグループの某社の研究所を退職しませんでした

皆様こんにちは,接点QBです. しばらく前からネットでNグループの退職エントリが流行っていますので, 対抗して「就職エントリ」を書きたいと思います.

まず事前情報として,私はNグループの赤色の会社(以下D社)の研究所に所属しています. 経歴としては,学部は数学科の数理統計学の研究室で機械学習の理論を研究して, 大学院は情報科学研究科でビッグデータアナリティクス・バイオインフォマティクスの研究をしていました. その後普通にD社に就職し,研究所に配属されました. 他にも学生時代にはビジコン等に出ていて( 【NAISTでの生活】ビジネスコンテスト・シリコンバレー編 - 横須賀の某Prisonで働く研究者?のブログ ) 意外と意識高い感じの学生でした.

D社研究所の良いところと悪いところ

どんな職場にも良い点・悪い点はあるとおもいます. ここでは,私が思うD社研究所の良い点・悪い点を列挙してみたいと思います. その後で,いくつかのトピックについて言及していきます.

D社研究所のここがすごい!

  1. 充実した研修制度
  2. 広々したデスク
  3. 書籍?研究会?勉強会?(妥当な理由が,あれば適切な範囲で)好きなだけ買えるし出れますよ
  4. 有給?好きに取れますよ.理由を聞かれることもありません
  5. 上長?マネージャーとして超優秀ですよ

D社研究所のここが微妙

  1. 研修がジェネラリスト向けのものに偏っている
  2. 研究として新しくてもビジネス戦略が上手くいきそうじゃないと研究テーマとして認められない
  3. 社内システムのUI/UXがひどい
  4. セキュリティが厳しい上に「それ意味あるの?」と思うこともある
  5. 評価制度

手厚い福利厚生

おそらくD社はNグループで最も福利厚生が良いです. すべての社員は社宅に入ることができ,場所にもよりますが概ね1万〜2万円の家賃で住めます. 広さは6.5畳〜7.5畳がほとんどだと思います. 社宅に出て自分で選んだ場所に住みたい場合でも家賃補助が出ますし,結婚すると家賃補助の額が上がります.

また,年金もNグループの年金制度がありますし,自社株を1000円単位で購入することができます. 他にも,通勤費はもちろん全て支給されますし,病気による長期休暇制度等もあります. さらに,福利厚生ポイント利用するとディズニーやジム,旅館などのレジャー施設を割安で利用できます. 余談ですが,コナミのスポーツジム利用だと,コナミ社員よりも安く利用できるようです(知り合いのコナミ社員から聞いた).

研修制度

「マナーや色々な制度について何も知らない状態で会社に入っても,会社で生きていける」ぐらい研修がたくさんあります. もちろん,それらの研修は全て必修ではなく,選択して受講することが可能ですし,全て無料かつ業務時間内に受講可能です. 研修だけでなく,語学スクールや通信教育の費用負担制度などもあり,自己研鑽に励みたい人にとっては非常に有益な制度だと思います.

その一方で,私のような人間には「必修の研修が多すぎる」と感じることがあります. 特に,一番最初の全体での研修に関しては「こんなこと知ってるよ」という内容のものしかありませんでした. まあ,最初の研修の目的を「他部署同期とのコネクション作り」として考えるなら,無駄な研修とまでは言いませんが, 研究者としては不要だと思われる研修でした. 他にも,ショップ店頭で販売員をする研修も(2週間弱)あり,これに関しては完全に不要だと思いました. もちろん,エンドユーザに近い場所で業務をこなす人には有益な研修なのかもしれませんが,少なくとも研究者には不要です. ちなみにこのショップ研修ですが,例年は半年程度実施されるようですが,私の年だけ大幅に短縮されていて幸運でした.

研究環境

私の場合だと,モニターを5枚並べて作業をしています. デスクも24インチのモニター5枚がおける程度の広さです. モニター・PC・サーバは予算が許す限りで妥当な理由付けができれば購入できます. 「妥当な理由付け」は実際はそんなに難しいものではありません. 大学でPC等を新しく購入するのと同程度に考えてもらって構わないと思います(知らんけど).

労働環境

国内の企業だとかなり良い方だとおもいます. 基本的に20時以降の残業はありませんし,15時に帰ってもOKです. 休みを取りたいときは普通に取れますし,理由も聞かれません(聞いてはいけないらしい). それと,研究所(というか,R&Dセンタ)は車通勤OKなので,電車やバスに乗りたくない人にはおすすめです.

セキュリティ

Nグループの退職エントリで多くの方が書かれていますが,確かにセキュリティは厳しいです. 基本的にクラウド環境はNG(ただし,部署によってはAWSを使っている)です. データをGoogle DriveDropboxに置くことはNGですし,基本的には全てオンプレで処理をします.

また,セキュリティレベルの高いデータを扱うときには,それ専用の部屋を用意したりしないといけません. その部屋を用意するのに数ヶ月かかったり…なんてこともザラです. ただ,正直なところ研究所ではそれほどセキュリティレベルの高いデータは扱わないのでまだマシです. お客様の情報を扱っている部署は,研究所の比ではないぐらいセキュリティに厳しいです.

評価制度

「The 大手日系企業」という感じです. まず一番困ることは,評価指標が公開されていないことです. ですので,基本的には詳しそうな人に直接こっそり聞くしかありません. ただし,その情報が正しいか確認する手段はありません.

基本的に言えることは,「若いうちからバリバリ稼ぎたい」という人には向いていないと思います. 少し評価されても給料は殆ど上がりませんし,評価にも疑問が残る部分は多いです.

評価制度に関してはあまりオープンになっておらず書けない部分が多いので, 気になる方は直接会いに来て聞いてください(ネットでは相手が誰かわからないので教えられません). ただし,ほとんど何も知りませんw

まとめ

多くの方の退職エントリにも書かれていますが,Nグループは福利厚生を始めとしてかなり「働きやすい」環境です. ただし,ここでの「働きやすい」とは,「マジョリティにとって働きやすい」という意味だと思います. 多くの人は

  • ICMLやNeulIPSの論文を読んで理解・実装ができない
  • 入社前からビジネスに関わった経験がない
  • 常に向上心を持ってチャレンジし続けられない
  • 成果を出し続けられない

です. こういうマジョリティにとってはNグループはとても良い会社だと思います. 上記のような人と真逆のような人は,少し(かなり?)物足りなさを感じるかもしれません.

まあ,少し我慢しなければならない部分もありますが,総合的には良い会社だと思うので, 頑張って研究に励みたいと思います.

余談

M2のときに同期に「D社は合コンでモテるらしいぞ!」と言われて嬉々としてD社に入りましたが, よく考えたら合コンに呼んでくれる友達がいませんでした(´・_・`)

【論文解説/IEEE】Map-Reduceに対応した超高次元非線形特徴量選択/Ultra High-Dimensional Nonlinear Feature Selection for Big Biological Data

こんにちは,接点QBです. 今回は論文解説ネタです.

今回紹介する論文は Yamada et al. (2018) による Ultra High-Dimensional Nonlinear Feature Selection for Big Biological Data です. 本論文で提案されている手法であるLANDは,大雑把に言いうと,HSIC Lasso (Yamada et al. (2014))の高速版です. つまり,高次元小標本という設定で高速に特徴量選択をする手法です. 正規化されたHSIC (NHSIC) を計算する際にNystrom近似 (Scholkopf & Smola (2002)) を用いて, NHSICを構成する行列を低ランク近似で表現します. 低ランク近似された行列は並列に計算が可能なので,Map-Reduceで分散処理すると高次元のデータでも高速に処理できますよっていう話です.

問題設定

入力データを以下のように表します: \begin{equation} \mathbf{X}=\begin{bmatrix} \boldsymbol{x}_1 & \cdots & \boldsymbol{x}_{n} \end{bmatrix} =\begin{bmatrix} \boldsymbol{u}_{1} \\ \vdots \\ \boldsymbol{u}_d \end{bmatrix}^T \in \mathbb{R}^{d\times n}, \quad \boldsymbol{x}_i = \begin{bmatrix} x_{i1} \\ \vdots \\ x_{id} \end{bmatrix}, \quad \boldsymbol{u}_j = \begin{bmatrix} x_{1j} \\ \vdots \\ x_{dj} \end{bmatrix}^T. \end{equation} ここで,$\boldsymbol{x}_i$は第$i$サンプルを表し,$\boldsymbol{u}_{j}$はすべてのサンプルに渡る第$j$特徴量のベクトルを表しています. また,第$i$サンプルに対応する目的変数を$y_{i} \in \mathcal{Y}$ で表し, $\boldsymbol{y} = \begin{bmatrix} y_1 & \cdots & y_{n}\end{bmatrix}^T$ とします.

教師あり特徴量選択の目的は,$y$の予測に関係する$m << d$個の特徴量を発見することです. そのためにはいくつかの方法がありますが,Yamada et al. (2018) では HSIC Lasso with Least Angle Regression (LAND) という手法が提案されています. LANDはカーネル法を用いた手法なので,カーネル行列に対する表記を定義しておきます: \begin{align} \left[ \mathbf{K}^{(k)}\right]_{ij} & = K\left( u_{ki}, u_{kj}\right), \quad i,j = 1, \cdots, n \\ \left[ \mathbf{L}\right]_{ij} & = L \left( y_{i}, y_{j}\right), \quad i,j = 1, \cdots, n \end{align} ここで$K$と$L$はカーネル関数です. Yamada et al. (2018) ではカーネル関数としてガウシアンカーネルを用いています. なお,分類問題のときは \begin{equation} L(y, y') = \begin{cases} 1 / n_{y} & y = y' \\ 0 & \text{otherwise} \end{cases} \end{equation} を用いると良いです.なお,$n_{y}$は目的変数のクラス数です.

LAND

本題のLANDの話に入る前にHSIC Lasso (Yamada et al. (2014)) に触れておきます.

HSIC Lasso

HSIC Lasso は以下の最適化問題によって定式化されます: \begin{equation} \min_{\boldsymbol{\alpha}\in \mathbb{R}^d} \left\| \tilde{\mathbf{L}} - \sum_{k=1}^{d} \alpha_k \tilde{\mathbf{K}}^{(k)} \right\| ^2_F + \lambda \left\| \boldsymbol{\alpha}\right\| _1, \quad \text{s.t.} \quad \alpha_1, \cdots, \alpha_d \geq 0. \label{optimization problem hsiclasso} \end{equation} ここで,$\lambda \geq 0$ は正則化パラメータで,$\left\|\, \cdot\, \right\|_1$は$\ell_1$ノルム, $\left\|\, \cdot \, \right\|_F$はフロベニウスノルムです. また,$\tilde{\mathbf{K}}, \tilde{\mathbf{L}}$は以下を満たすカーネル行列です: \begin{align} & \boldsymbol{1}_n^T \tilde{\mathbf{K}} \boldsymbol{1}_n = \boldsymbol{1}_n^T \tilde{\mathbf{L}} \boldsymbol{1}_n^T = 0, \\ & \left\| \tilde{\mathbf{K}}\right\|_{F}^2 = \left\| \tilde{\mathbf{L}}\right\|_{F}^2 = 1. \end{align}

LAND

LANDはEq. (\ref{optimization problem hsiclasso}) をleast angle regressionで解く手法の名前です. LANDとHSIC Lassoの違いはEq. (\ref{optimization problem hsiclasso}) の解き方だけです.

Eq. (\ref{optimization problem hsiclasso}) の解により,最もアウトプットとの関連性が高く, 余剰が最も少なくなるような特徴量を選択することが可能になります. その説明のために,Eq. (\ref{optimization problem hsiclasso}) の目的関数を以下のように変形します: \begin{equation} 1 - 2\sum_{k=1}^{d} \alpha_{k} \textrm{NHSIC}(\boldsymbol{u}_k, \boldsymbol{y}) + \sum_{k=1}^{d}\sum_{l=1}^{d} \alpha_{k} \alpha_{l} \textrm{NHSIC}(\boldsymbol{u}_k, \boldsymbol{u}_l). \label{optimization problem2 hsiclasso} \end{equation} ここで,$\textrm{HSIC}(\boldsymbol{u}, \boldsymbol{y}) = {\rm tr} \left( \tilde{\mathbf{K}}\tilde{\mathbf{L}}\right)$はHSICのnormalized versionです. Eq. (\ref{optimization problem2 hsiclasso}) が何を言っているのかは,以下のように場合を分けて考えると分かりやすいと思います.

  1. $\boldsymbol{y}$が第$k$特徴量$\boldsymbol{u}_k$に依存する場合:$\textrm{NHSIC}(\boldsymbol{u}_k, \boldsymbol{y})$は大きくなり, したがって(Eq. (\ref{optimization problem2 hsiclasso)を最小化するので)$\alpha_k$も大きくなります. つまり,第$k$特徴量は関連性の高い特徴量として選択されることになります.
    1. $\boldsymbol{u}_k$に$\boldsymbol{u}_l$が依存する場合:Eq. (\ref{optimization problem2 hsiclasso}) 第3項のNHSICが大きくなるので, 全体を最小化するために$\alpha_l$が小さくなります. つまり,余剰な第$l$特徴量は選択されなくなります.
    2. $\boldsymbol{u}_k$に$\boldsymbol{u}_l$が依存しない場合: Eq. (\ref{optimization problem2 hsiclasso}) 第3項のNHSICは$0$に近い値となり,最適化問題への影響が小さくなります. また,この場合はEq. (\ref{optimization problem2 hsiclasso}) 第2項で$k=l$のケースによって第$l$特徴量が選択されるべきかを考えることになります.
  2. $\boldsymbol{y}$が第$k$特徴量$\boldsymbol{u}_k$と独立の場合:$\textrm{NHSIC}(\boldsymbol{u}_k, \boldsymbol{y})$は$0$に近くなり, したがって$\alpha_k$も小さくなります. つまり,第$k$特徴量は目的変数に対して関連性の低い特徴量として選択されないことになります. また,この場合は$\alpha_k$が$0$に近い値になるので,第3項の最適化問題全体への影響は小さくなります.

LANDは実際は反復的に目的変数に関連性の高い特徴量選択を行いますが, そのためには関連性の高い特徴量集合を作成し,その中から余剰な特徴量を取り除くという2つの段階が必要になります. このことから,特徴量の選択スコアを以下のように定義します: \begin{equation} c_k = \textrm{NHSIC}\left( \boldsymbol{u}_{k}, \boldsymbol{y}\right) - \sum_{i: \alpha_{i}>0}\alpha_{i} \textrm{NHSIC}\left( \boldsymbol{u}_k, \boldsymbol{u}_i \right) \end{equation}

ここまでは少し理論的な話をしてきましたが,Eq. (\ref{optimization problem hsiclasso}) を解くには計算コストが結構かかります. メモリだとカーネル行列$\tilde{\mathbf{K}}^{(k)}$をおいておくために$O(dn^2)$のメモリが必要になりますし, 計算時間的な観点から見ると,$O(mdn^3)$必要になります. この辺は「カーネル法あるある」なんですが,Yamada et al. (2018) ではこの問題の解決に取り組んでいます. 具体的にはNystrom approximationを使って,カーネル行列を行列の低ランク近似を用いて表します: \begin{align} \textrm{NHSIC}(\boldsymbol{y}, \boldsymbol{y}) &= {\rm tr}\left( \tilde{\mathbf{K}}\tilde{\mathbf{L}}\right) \approx {\rm tr} \left( \mathbf{F}\mathbf{F}^T \mathbf{G}\mathbf{G}^T \right), \\ \mathbf{F} & = \frac{ \mathbf{\Gamma}\mathbf{K}_{nb}\mathbf{K}_{bb}^{-1/2} }{ \left\{ {\rm tr}\left[ \left( \mathbf{K}^{-1/2}_{bb}\mathbf{K}_{nb}^{T}\mathbf{K}_{nb}\mathbf{K}_{bb}^{-1/2}\right)^{2} \right] \right\}^{1/4} }, \\ \mathbf{G} &= \frac{ \mathbf{\Gamma}\mathbf{L}_{nb}\mathbf{L}_{bb}^{-1/2} }{ \left\{ {\rm tr}\left[ \left( \mathbf{L}^{-1/2}_{bb}\mathbf{L}_{nb}^{T}\mathbf{L}_{nb}\mathbf{L}_{bb}^{-1/2}\right)^{2} \right] \right\}^{1/4} } \end{align} ここで,$\mathbf{F}\mathbf{F}^T$は$\tilde{\mathbf{K}}$の低ランク近似で, $\mathbf{K}_{nb}\in \mathbb{R}^{n\times b},\, \left[ \mathbf{K}_{nb}\right]_{ij} = K\left( u_{i}, u_{b,j}\right)$ を満たします. ただし,ここでの$\boldsymbol{u}_{b} \in \mathbb{R}^b$はバイアスベクトルです. 他の行列についても同様です. また,$b$は$\mathbf{K}_{nb}$と$\mathbf{L}_{nb}$の上界です. 一般的に,$b$を大きくするほど近似の精度は上がりますが,計算コストやメモリコストがかかります. さらに,各特徴量に対する$\left\{ \mathbf{F}_{k}\right\}_{k=1}^{d}$は並列計算が可能です. そのため,高次元データに対してはMap-Reduceを用いた並列処理が威力を発揮します.

まとめ

本記事で紹介した論文は,IEEE TRANSACTIONS OF KNOWLEDGE AND DATA ENGINEERING, VOL. 30, NO. 7に記載されているので, あまりすべてを勝手に無料で紹介してしまうのはマズいと思ったので,今回は手法の大枠の説明だけにとどめました. 原著にはアルゴリズム擬似コードや(当然ながら)既存手法との比較結果等が記載されていますので, 本記事を読んで興味を持たれた方は是非そちらを御覧ください.

統計的学習理論と正則化に関するちょっと数理的な基礎

今回は機械学習でよく出てくる正則化の数理的基礎についてまとめたいと思います. ちょっと数理的なお話が多くなりますが, 大学院に居たときも今の職場で話しているときにも,この辺の事を理解している人は意外と多くないのかなと思ったので, 記事にしてみました. なお,本記事の内容の大部分は

  • 金森敬文. (2015). 統計的学習理論 (機械学習プロフェッショナルシリーズ).

を参考に書いています.

一般的な学習理論のお話

回帰にしろ分類にしろ,機械学習の理論はある程度統一的に扱うことが出来ます. 目的変数$y$が離散変数であれば分類問題になりますし,連続変数であれば回帰になります. ここでは,回帰・分類を統一的に扱い,学習理論一般に関する説明を少しだけしたいと思います.

入力ベクトルを$\boldsymbol{X}\in \mathcal{X} \subset \mathbb{R}^d$, 目的変数を$Y\in \mathcal{Y} \subset \mathbb{R}$で表します. $\boldsymbol{X}, Y$はともに確率変数です. 仮説$h$を$h:\mathcal{X} \to \mathcal{Y}$で定義します. 線形回帰の場合なら,仮説集合$\mathcal{H}$が $\mathcal{H} = \left\{ h(\boldsymbol{x}) = \boldsymbol{\beta}^T \boldsymbol{x} + \beta_0 | \beta_0, \cdots, \beta_d \in \mathbb{R} \right\}$ なわけですね. この$h$を決定する,すなわち仮説集合から$h$を選んでくる作業が,最小二乗法などの最適化問題を解くステップになります.

予測損失と経験損失

$h$の決定の部分について,少し一般的に説明します. まず,予測損失$R(h)$と経験損失$\widehat{R}(h)$を定義します: \begin{align} R(h)& := \mathbb{E}_{(\boldsymbol{X}, Y)\sim D}\left[ \ell(h(\boldsymbol{X}) , Y)\right] =\int \ell \left( h(X), Y\right)\, dD, \\ \widehat{R}(h) & := \frac{1}{n}\sum_{i=1}^{n} \ell \left( h(\boldsymbol{X}_i ), Y_i)\right) \end{align} $D$は$(\boldsymbol{X}, Y)$の分布を表します. 本当は$R(h)$を最小にするような$h$を発見したいのですが,一般的にはデータの分布は未知です. ですので,代わりにデータから計算できる$\widehat{R}(h)$を最小化するような$h$を決定します. 「なんで$R(h)$の代わりに$\widehat{R}(h)$を使っても大丈夫なの?」という疑問があると思いますが,それは,$\widehat{R}(h)$が$R(h)$の普遍推定量になっているからです. ちなみに,$(\boldsymbol{X}_{1}, Y_{1}), \cdots, (\boldsymbol{X}_{n}, Y_{n})$が無作為標本(つまりiid)の場合は$\widehat{R}(h)$は$R(h)$に確率収束します.

期待予測損失

データ集合$S=\left\{ (\boldsymbol{X}_1, Y), \cdots, (\boldsymbol{X}_n, Y_n)\right\}$ から得られる仮説を$h_S$で表します. このとき,期待予測損失を \begin{equation} \mathbb{E}_{S\sim D^n} \left[ R(h_S) \right] = \int R(h_{S} )\, dD^n \end{equation} で定義します.

ここで注意するべきなのは,$R(h_S)$に対して$D^n$で期待値を撮とっている,つまり$R(h_S)$は確率変数だということです. もう少し具体的に書けば,$h_S$は$h_S(\boldsymbol{X}; (\boldsymbol{X}_1, Y_1),\cdots, (\boldsymbol{X}_n, Y_n))$と書けて, $R(h_S)$の部分で$(\boldsymbol{X}, Y)$に対して期待値をとり, さらに$(\boldsymbol{X}_1, Y_1),\cdots, (\boldsymbol{X}_n, Y_n)$ に対して分布$D^n$で期待値をとることが出来ます.

近似誤差と推定誤差

ここでは,話を簡単にするために2クラス分類問題を考え,損失関数として0-1 loss を採用します.

仮説集合$\mathcal{H}$の中で$R(h)$を最小にする仮説を$h_{\mathcal{H}}$とします. このとき,任意の$\delta > 0$に対して \begin{equation} \textrm{Pr}\left( R(h_{S}) - R(h_{0}) \leq R(h_{\mathcal{H}}) - R(h_{0}) + \sqrt{\frac{2}{n}\log \frac{2 |\mathcal{H}|}{\delta}} \right), \quad h_0 = \inf_{h: {\rm measurable}} R(h) \label{stochastic inequality 1} \end{equation} が成り立ちます.

これはたとえば,$\delta=0.05$としたときに$R(h_{\mathcal{H}}) - R(h_{0}) + \sqrt{(2/n)\log (2|\mathcal{X}|/\delta)}=c$だとすると, 「$95\%$以上の確率で今回選ばれた仮説$h_S$と一番理想的な仮説$h_0$との差は$c$以下だよ」 ということを教えてくれます. そして,Eq. (\ref{stochastic inequality 1}) における$h_S - h_0$の上界の各項から近似誤差${\rm bias}_{\mathcal{H}}$と 推定誤差${\rm var}_{\mathcal{H}}$を定義します: \begin{align} {\rm bias}_{\mathcal{H}} & = R(h_{\mathcal{H}}) - R(h_{0}), \label{definition of bias} \\ {\rm var}_{\mathcal{H}} & = \sqrt{\frac{2}{n}\log \frac{2 |\mathcal{H}|}{\delta}}. \label{definition of variance} \end{align}

この他にもEq. (\ref{stochastic inequality 1}) はいろいろな事を教えてくれますが,それは最後のおまけに回したいと思います.

なぜ正則化を行うのか?

さて,ここからようやく正則化の話に入ります. Eq. (\ref{definition of bias}), Eq. (\ref{definition of variance}) の定義からも分かるように, 仮説集合$\mathcal{H}_1, \cdots, \mathcal{H}_{M}$が$\mathcal{H}_1 \subset \cdots \subset \mathcal{H}_{M}$を満たすとき \begin{align} & {\rm bias}_{\mathcal{H}_1} \geq \cdots \geq {\rm bias}_{\mathcal{H}_M}, \\ & {\rm var}_{\mathcal{H}_1} \leq \cdots \leq {\rm var}_{\mathcal{H}_M} \end{align} が成り立ちます. つまり,「仮説集合が大きくなるほど近似誤差は小さくなるけど,推定誤差は大きくなる」というトレードオフが成り立っているわけですね. ですので,$\hat{m} = {\mathop{\rm arg~min}\limits}_{m}({\rm bias}_{\mathcal{H}_{m}} + {\rm var}_{\mathcal{H}_{m}})$ として$\mathcal{H}_{m}$を仮説集合として用いれば良いということになります. しかし,${\rm bias}_{\mathcal{H}_{m}}$はデータの分布が分からないと決定できません. 実際の問題ではデータの分布は未知なので,この方法は使えないことになります. そこで登場するのが「正則化」です.

正則化は「無駄に大きな仮説集合を使うことにペナルティを課す手法」です. 仮説集合$\mathcal{H}_{1} \subset \cdots \subset \mathcal{H}_{M}$を用いて学習を行うとします. 仮説$h$に対するペナルティ$\Phi: \mathcal{H}_M \to \mathbb{R}_{\geq 0}$として$m_1 < m_2$に対して \begin{equation} h\in \mathcal{H}_{m_1},\, h' \in \mathcal{H_{m_2}} \backslash \mathcal{H_{m_1}} \Longrightarrow \Phi(h) \leq \Phi (h') \end{equation} を満たすような関数$\Phi$を考えます. つまり,仮説集合$\mathcal{H}_{m_1}$よりも大きな仮説集合から取ってきた仮説$h'$に対しては $h$よりも大きなペナルティを与えるということを示しています. 実際の教師あり機械学習を使う範囲では,仮説$h$に対してノルムが定まっているので,そのノルムを$\Phi$に使うことがほとんどです.

実際に皆さんが利用している正則化を用いた手法は,Ridge回帰であれLassoであれ,経験損失と仮説に対するペナルティを考慮した最小化を行ってパラメータを決定します: \begin{equation} \min_{h \in \mathcal{H}_{M}} \widehat{R}(h) + \lambda \Phi(h). \end{equation}

正則化手法の具体例

ここでは,正則化を用いた手法の中でも特に有名なリッジ回帰とLassoを取り上げます. これらはともに,線形回帰モデルに正則化を適用した手法です. 線形回帰モデルでは,データ$(\boldsymbol{x}_1, y_1), \cdots, (\boldsymbol{x}_n, y_n)$が与えられたときに, 以下のモデルで$y$を予測します:

\begin{equation} y = \boldsymbol{x}^T \boldsymbol{\beta} + \varepsilon, \quad \boldsymbol{\beta} = \begin{bmatrix} \beta_1 \\ \vdots \\ \beta_d \\ \beta_{d+1} \end{bmatrix},\quad \boldsymbol{x} = \begin{bmatrix} x_1 \\ \vdots \\ x_d \\ 1 \end{bmatrix}. \end{equation}

ここまでの話の流れに沿って記述するなら,最小二乗法による回帰直線の決定とは, \begin{gather} \mathcal{H} = \left\{ \boldsymbol{x}^T \boldsymbol{\beta} | \boldsymbol{\beta} \in \mathbb{R}^{d + 1}\right\}, \\ h(\boldsymbol{x}) = \boldsymbol{x}^T \hat{\boldsymbol{\beta}}, \\ \ell(\boldsymbol{x}, y) = \left( h(\boldsymbol{x}) - y \right) ^2 \end{gather} としたときに \begin{equation} \newcommand{\argmin}{\mathop{\rm arg~min}\limits} \hat{\boldsymbol{\beta}} = \argmin_{\boldsymbol{\beta}}\hat{R}(h) = \argmin_{\boldsymbol{\beta}} \frac{1}{n} \sum_{i=1}^{n} \ell(\boldsymbol{x}_i, y_i) = \argmin_{\boldsymbol{\beta}} \left\| \boldsymbol{y} - \mathbf{X} \beta \right\|_2, \quad \mathbf{X} = \begin{bmatrix} \boldsymbol{x}_{1}^T \\ \vdots \\ \boldsymbol{x}_{n}^T \end{bmatrix} \end{equation} によって$\hat{\boldsymbol{\beta}}$を決定することに相当します. なお,$\| \cdot \|_2$は$L_2$ノルムです.

リッジ回帰

リッジ回帰は上記の最適化問題の目的関数に正則化項として$\lambda \left\| \beta \right\|_2$を加えたものです: \begin{equation} \widehat{\boldsymbol{\beta}}^{\rm Ridge} = \argmin_{\boldsymbol{\beta}}\widehat{R}(h) + \lambda \left\| \beta \right\|_2 =\argmin_{\boldsymbol{\beta}} \frac{1}{n} \sum_{i=1}^{n} \ell(\boldsymbol{x}_i, y_i) + \lambda \left\| \boldsymbol{\beta} \right\|_2 =\argmin_{\boldsymbol{\beta}} \left\| \boldsymbol{y} - \mathbf{X} \beta \right\|_2 + \lambda \left\| \boldsymbol{\beta} \right\|_2. \end{equation} ただし,ここでの$\mathbf{X}, \boldsymbol{\beta}$は \begin{equation} \mathbf{X} =\begin{bmatrix} \boldsymbol{x}_1^T \\ \vdots \\ \boldsymbol{x}_n^T \end{bmatrix} =\begin{bmatrix} x_{11} & \cdots & x_{1d} \\ \cdots & \ddots & \vdots \\ x_{n1} & \cdots & x_{nd} \end{bmatrix}, \quad \boldsymbol{\beta} = \begin{bmatrix} \beta_1 \\ \vdots \\ \beta_{d} \end{bmatrix} \end{equation} であり, \begin{equation} \overline{x}_{\cdot j} = \frac{1}{n}\sum_{i=1}^{n} x_{ij} = 0 \end{equation} を満たすとします. つまり,任意の特徴量に対してサンプルに渡る標本平均と計算すると$0$になっているということですね.

なお,一般的に正則化項にはパラメータベクトル$\boldsymbol{\beta}$の2次形式$\boldsymbol{\beta}^T \mathbf{K} \boldsymbol{\beta}$で表される事が多いです. つまり,正則化最小2乗推定量は一般的に \begin{equation} S(\boldsymbol{\beta}) = (\boldsymbol{y} - \mathbf{X}\boldsymbol{\beta})^T (\boldsymbol{y} - \mathbf{X}\boldsymbol{\beta}) + \lambda \boldsymbol{\beta}^T \mathbf{K} \boldsymbol{\beta} \end{equation} を最小化する解として与えられます. これは以下のように解析的に求めることが出来ます: \begin{align} & \frac{\partial S(\boldsymbol{\beta})}{\partial \boldsymbol{\beta}} = -2\mathbf{X}^T \boldsymbol{y} + 2\mathbf{X}^T \mathbf{X} \boldsymbol{\beta} + 2 \lambda \mathbf{K} \boldsymbol{\beta} = 0 \\ \Longrightarrow & \, \widehat{\boldsymbol{\beta}} = \left( \mathbf{X}^T \mathbf{X} + \lambda \mathbf{K} \right) ^{-1} \mathbf{X}^T \boldsymbol{y} \end{align} 今回の場合は,$\mathbf{K}=\mathbf{I}_{d+1}$の場合に相当するので,リッジ回帰の最小2乗推定量は \begin{equation} \widehat{\boldsymbol{\beta}} = \left( \mathbf{X}^T \mathbf{X} + \lambda \mathbf{I}_{d+1} \right)^{-1} \mathbf{X}^T \boldsymbol{y} \end{equation} となります.

Lasso

Lasso (Least absolute shrinkage and selection operator) は,リッジ回帰における正則化項を$L_1$ノルムに置き換えたものです: \begin{equation} \widehat{\boldsymbol{\beta}}^{\rm Lasso} = \argmin_{\boldsymbol{\beta}}\widehat{R}(h) + \lambda \left\| \beta \right\|_1 =\argmin_{\boldsymbol{\beta}} \left\| \boldsymbol{y} - \mathbf{X} \beta \right\|_2 + \lambda \left\| \boldsymbol{\beta} \right\|_1. \label{optimization of lasso} \end{equation} Eq. (\ref{optimization of lasso}) は解析的に解を求めることは出来ません. ですので,shooting algorighm (Fu (1998)) や Efron et al. (2004) によるLARS( Least Angle Regression) によって$\widehat{\boldsymbol{\beta}}$を決定します.

まとめ

今回は正則化に関する数理的な基礎(本当に基礎の基礎)について簡単にまとめました. 統計的学習理論の本を読めば普通に載っている内容ですので, この記事を読んで「もう少しちゃんと知りたい」となった方は,是非専門書を手にとってください.

おまけ

Eq. (\ref{stochastic inequality 1}) に関するRemark

上では本筋から外れるので省略しましたが,Eq. (\ref{stochastic inequality 1}) からは次のようなことも分かります: \begin{equation} R(h_S) = R(h_0 ) + O_p \left( \sqrt{\frac{\log |\mathcal{H}|}{n}} \right) . \end{equation} これはすなわち, \begin{equation} \lim_{z\to \infty}\limsup\limits_{m\to \infty} {\rm Pr} \left( \frac{\left| R(h_{S_{m}}) - R(h_0)\right|}{ \sqrt{\log |\mathcal{H}| / n} } > z \right) =0, \quad z:= 1 + \frac{\log (2/\delta)}{\log |\mathcal{H}|} \end{equation} ということです. 直感的には,$R(h_{S_m}) - R(h_{0})$の分布の裾が$\sqrt{\log |\mathcal{H}|/n}$のオーダーで漸近的に$0$に落ちているということですね.

【論文紹介】Black Box FDR (ICML 2018)

こんにちは,こんばんは,接点QBです. 今回はICML 2018 に投稿された Black Box FDR (ansey et al., 2018) という論文の解説をしたいと思います.

概要

データを集めるために色々な実験をしますが,その際に実験ごとにサンプルの条件が異なっていることがあります. たとえば,癌細胞に作用する薬の効果を測定するための実験を考えます(図1). 30個の実験結果があるとします. 各実験においては,同一の遺伝子を持つ癌細胞に対して処置を行う(薬を投与)という試行と処置を行わないという試行を複数回行って統計量を算出します. しかし,実験が30個の実験全てで同一の遺伝子を持つ癌細胞を用いているわけではありません. つまり,実験ごとに用いている癌細胞の遺伝子は異なっていて,かつ遺伝子の差異が実験結果(薬が効くかどうか)に影響を及ぼす可能性があります.

f:id:setten-QB:20180901123034p:plain
左側が30個の実験,左側が各実験に用いた細胞の遺伝子に関する情報

このように複数の実験を行った場合で,実際に処置に対して効果があったのかを判定し,かつその実験結果に影響を与える変数を決定するための方法が Black Box FDR (BB-FDR) です.

問題設定

$n$ 個の実験結果が与えられていて,各実験から検定統計量 $z_1, \cdots, z_n$ が計算されているとします. さらに,各実験ごとに$z_i,\, i=1,\cdots, n$ に影響を与えると考えられる変数 $X_{i1},\cdots, X_{im}$ が存在します.

BB-FDR の目的は,(1) 処置に対して統計的に有意な反応を示した実験(つまり,棄却域に落ちる$z_i$)を同定し,(2) 実験結果に影響を与えている$X_{im}$を求めることです. Tansey et al. (2018) では (1) と (2) の2段階に分けて手法の設計が行われています.

各実験に対して以下の仮説検定を考えます:

$H_0$(帰無仮説):処置は効果がない      $H_1$(対立仮説):処置は効果がある

実験 $i$ で$H_0$が棄却される場合を$h_i=1$,$H_0$が棄却されない場合を$h_i=0$で表し,帰無分布を$f_0$,対立分布を$f_1$で表します.

Stage 1: 統計的に有意に処置効果が認められる実験結果の同定

検定統計量$z_i$に対して,以下のようなモデルを入れます:

\begin{align} & z_i \sim h_i f_1(z) + (1-h_i) f_0(z_i) \\ & h_i \sim {\rm Bernoulli}(c_i) \\ & c_i \sim {\rm Beta}(a_i, b_i) \tag{1} \\ & a_i, b_i \sim G_{\theta, i}(X). \end{align}

$G_{\theta, i}$ は$\theta$をパラメータに持つブラックボックス関数で,ここではDNNを用います.

$\theta$を最適化するために以下の最適化問題SGDで解きます:

\begin{equation} \min_{\theta} -\sum_i \log p_{\theta} (z_i) + \lambda \left \| G_{\theta}(X) \right \|^2_F \end{equation}

ただし, \begin{align} p_{\theta}(z_i) =& \int_{0}^{1} \sum_{h_i \in {0, 1}} p\left( z_i, h_i, c_i\right)\, dc_i \\ = & \int_{0}^{1} \sum_{h_i \in {0, 1}} p(z_i | h_i, c_i) p(h_i) p(c_i)\, dc_i \\ =& \int_{0}^{1} \left \{ c_i f_1(z_i) + (1-c_i) f_0(z_i)\right \} {\rm Beta}(a_i, b_i) \, dc_i \\ \end{align}

であり,$\left \| \cdot \right\|$ はフロベニウスノルムを表します. この最適化問題を解くことで$\hat{\theta}$が得られると,以下のように対立仮説の下での各検定統計量の事後確率を計算することが出来ます:

\begin{align} \hat{w}_i :=& p_{\hat{\theta}}(h_i=1 | z_i \sim f_1)\\ =& \int_{0}^{1} \frac{c_i f_1(z_i) {\rm Beta}(c_i | G_{\hat{\theta}, i}(X))}{c_i f_1 (z_i) + (1-c_i) f_0(z_i)}\, dc_i . \end{align}

この$\hat{w}$を降順にソートして,最初の$q$個の仮説検定において帰無仮説を棄却します. つまり,以下の最適化問題を解きます: \begin{equation} \max_{q} q \quad \textrm{subject to} \quad \frac{\sum_{i=1}^{q} \left( 1-\hat{w}_i\right)}{q} \leq \alpha . \end{equation} 要するに,$q$ 個の実験における type I erro の確率の平均を $\alpha$ 以下に抑えて,その下で検出力を最大化するというネイマン・ピアソン流の検定の構成方法をとっています.

Stage 2: important variables の同定

モデルに $G_{\theta, i}(X)$ を用いることで,以下のトレードオフが発生します:

  • メリット:変数$X$と検定統計量の関係を表すための関数のクラスが大きくなる(仮説集合のサイズが大きくなる)
  • デメリット:stage 1 の検定の検出力が(linear modelを使った場合に比べて)小さくなる

ただ,クラスが大きくはなりますが black box 的なDNNから重要な特徴量を同定するということは簡単ではありません. 特に,今回のように false discovery rate をコントロールしながらの変数選択は著者らが探した範囲では手法が提案されていないそうです.

このような問題にチャレンジするために,BB-FDR では conditional randomization tests (CRTs) (Candes et al., 2018) を用います. CRTでは,特徴行列 $X$ の第 $j$ 列に対応する変数(特徴量) $X_{\cdot j}$ を他の変数 $X_{\cdot -j}$ のみを用いてモデリングするという方法です. CRTによって,条件付き分布 $\mathbb{P}(X_{\cdot j} | X_{\cdot -j})$ が仮説 $X_{\cdot j} \mathop{\perp\!\!\!\!\perp} Z|X_{\cdot -j}$ を検定する際の妥当な帰無分布を表します. ただし,$Z$は検定統計量です. 対応する $p$ 値は条件付き分布からのサンプリングによって計算されます: \begin{align} p_j =& \mathbb{E}_{\tilde{X}_{\cdot j} \sim \mathbb{P}(X_{\cdot j} | X_{\cdot -j}) } \left[ \mathbb{I} \left[ t(\mathbf{z}, X) \leq t (\mathbf{z}, (\tilde{X}_{\cdot j}, X_{\cdot -j})) \right] \right] \\ =& {\rm Pr} \left( \left. t(\mathbf{z}, X) \leq t (\mathbf{z}, (\tilde{X}_{\cdot j}, X_{\cdot -j})) \right| \tilde{X}_{\cdot j} \sim \mathbb{P}(X_{\cdot j} | X_{\cdot -j} ) \right) \end{align} ここで,$t$ は検定統計量です. 一旦全ての変数に対して $p$ 値を求めれば,あとは標準的な Benjamini-Hochberg 法を適用して重要な変数を同定すれば良いことになります.

BB-FDR は,どの変数が帰無分布から生成された $z_i$ の事後確率の変化に関連するのかを検定します. これは,事後確率の負のエントロピーを検定統計量として用います: \begin{align} t(\mathbf{z}, X) = \sum_{i} \hat{w}_i \log \hat{w}_i + \sum_{i} \left( 1 - \hat{w}_i \right) \log \left( 1 - \hat{w}_i \right) . \end{align} 処置効果を予測するために有用な変数は,事後確率のエントロピーを減少させます.

評価実験

$P(X), P(h=1 | X)$ の組み合わせ3パターンと,検定統計量$z$ の確率分布3パターンで計6パターンでシミュレーションを行って評価しています. $X=(X_1, \cdots, X_m),\, m=50$のうち実際に目的変数に影響しているのは25個の変数だけで,false discovery rate の閾値は$10\%$ に設定されています. また,$n$ は $[100, 5000]$ で動かします.

比較手法は

  1. Benjamini-Hochberg method (Benjamini & Hochberg, 1995)
  2. NeuralFDR (Xia et al, 2017)
  3. Eq. (1) で $c_i$ の分布に fully-Bayesian logistic regression を使用したモデル

の3つです.

Stage 1 の評価

全体的に 3. fully-Bayesian logistic regression を使った手法が高い性能を指名しています. しかし,$n$ が大きくて,$z$ の帰無分布と対立分布が近いときは BB-FDR が最も高い性能を示しています. また,手法3 は学習に数時間必要で,BB-FDR は数分で学習が完了したそうです.

Stage 2 の評価

Benjamini-Hochberg method と NeuralFDR は重要な変数の同定に関しては扱っていないので, ここでは 手法3 との比較だけになります. $z$ の帰無分布と対立分布が十分に遠い場合には両手法の間に大きな差はありません. $n$ が大きくなると,false discovery rate・検出力ともにBB-FDR が手法3 を上回っています.

まとめと所感

今回の記事では,

  • 複数の実験結果が得られているとき各実験の結果を検定し
  • 実験ごとに複数の(結果に影響しているか怪しい)変数のうち,実際に結果に影響を及ぼしている変数を同定する

手法である Black Box FDR を紹介しました. 一番最初の例で出されているように,ニーズとしては生物学や医学系が多いのかなと思います. あとは社会科学系でも使えそうかな?

モデルを記述する部分にDNNを使っていますが,話のジャンルとしてはどちらかといえば伝統的な数理統計学やメタアナリシスに近いと感じました.

参考文献

  • Benjamini, Y., & Hochberg, Y. (1995). Controlling the false discovery rate: a practical and powerful approach to multiple testing. Journal of the royal statistical society. Series B (Methodological), 289-300.
  • Candes, E., Fan, Y., Janson, L., & Lv, J. (2018). Panning for gold:‘model‐X’knockoffs for high dimensional controlled variable selection. Journal of the Royal Statistical Society: Series B (Statistical Methodology), 80(3), 551-577.
  • Tansey, W., Wang, Y., Blei, D. M., & Rabadan, R. (2018). Black Box FDR. International Conference of Machine Learning 2018 (ICML 2018).
  • Xia, F., Zhang, M. J., Zou, J. Y., & Tse, D. (2017). Neuralfdr: Learning discovery thresholds from hypothesis features. In Advances in Neural Information Processing Systems (pp. 1541-1550).

高次元小標本データ (HDLSS data) に関するあれこれ

いつもお世話になっております.接点QBです.←社会人になった雰囲気出てます?www

ここ数年続いているDNNブームですが,その傍らでこういう思いをした人もたくさんいらっしゃるのではないでしょうか?

「そんなにデータねぇよ!!!」

そうです.基本的にDNNを使うには大量の学習データが必要になりますが,十分な量のデータがあることはそれほど多くないのではないでしょうか? DNNが覇権を取っている分野と言えば,画像・音声・自然言語あたりがメジャーかと思いますが,この辺の分野は先人たちが大きなデータセットを公開してくれていたり, 割と簡単に(専門の人,気を悪くさせてしまったらゴメンナサイ)収集できるのではないかと思います.

しかし,例えば医療分野などはそうもいきませんし,他にも大量のデータを集めることが困難な分野は多々あります. そして更に困るのが,データのサンプル数 $n$ よりもデータの次元 $d$ が圧倒的に大きい — $d>>n$ — というシチュエーションにも遭遇します. 今回は,このように $d>>n$ というシチュエーション (High Dimension, Low Sample Size; HDLSS) でデータを扱う手法をいくつかザックリと紹介したいと思います.

学部生の頃の私の専門がこの分野だったので,少し理論屋っぽい話が多くなるかもしれませんが, あまり数理的な詳細には立ち入らずに,ザックリと紹介していけたらと思います. また,DNN界隈の人の感覚で言うと「古い」話が多いので,「最新手法こそ至高」というタイプの方には微妙な記事かもしれません.

そもそも何でHDLSS だとマズイの?

そもそも,HDLSS だと何がマズイのかという話ですが,以下のような問題がよく言われます:

  1. 次元の呪い
  2. オーバーフィッティング
  3. 共分散行列周りの問題

次元の呪いについてはカステラ本を始めとする機械学習に関する本なら必ず載っていると思いますので, ここでは詳細は割愛します. まあ,「次元が大きくなるほど空間的な問題で分類や回帰が難しくなる問題」程度に考えておいてもらえればよいかと思います.

オーバーフィッティングについてもググればすぐに出てくるので割愛します.

共分散行列周りの問題についてだけ少し解説しておきます. 古典的な機械学習手法では,サンプルから標本共分散行列 — 共分散行列の推定値 — やその固有値固有ベクトル,さらにその逆行列を計算することがあります. このようなとき,$d>>n$ という状況下では

  • 標本共分散行列の逆行列 $S^{-1}$ が存在しない
  • 共分散行列の固有値推定が不安定

といった問題がよく取り上げられます(印象ですが…). とりあえず,上記のような色々な問題がHDLSS data での機械学習には存在するということを認識してもらえればOKです.

ちなみに,統計的推測のお話だと,古典的な統計的推測理論は $n\to \infty$ かつ $d$: fix という枠組みで作られていたため, HDLSS でよく設定される $d\to \infty$, $n$: fix という漸近理論の設定では原則として使えないという問題もあります. もう少し具体的に言うと,正規性を仮定できないことが普通といった状況になるということです.

本論

では,HDLSS データに対してどのような手法を使えばよいのかと言うと,基本的なアプローチは以下のようなものがあります:

  • 特徴選択による特徴ベクトルの次元削減
  • PCA等で新しい特徴量を作成
  • 特徴ベクトルはそのまま使って,標本共分散行列の計算や固有値問題の解き方を工夫する

2つ目と3つ目は背反ではないことも多いですが,大雑把には上記の3つがメジャーです.

特徴選択に関する手法あれこれ

これに関しては2つの手法を紹介します.

Gradient Boosted Feature Selection

Xu et al. (2014) によって提案された手法で,中身はタイトルの通り. これについてはTJO氏@TJO_datasci詳細な解説 があるので,そちらを参照するのが良いかと思います.

HSIC Lasso

HSIC Lasso (Yamada et al., 2012) は,大雑把に言うと Hilbert-Schmidt information criterion を基準として用いて特徴選択を行う手法です. 再生核ヒルベルト空間上でLassoに対応する特徴選択をすることで,特徴量と目的変数の間や特徴量同士の間に非線形な関係がある場合でも,良い特徴選択が可能になるようです. 現在はこれの改良版 も出ているようです (Yamada et al., 2018). また,実装は著者の山田先生 (@myamada0)のページ に公開されています.

DNP

DNP (Liu et al., 2017) では DNN の学習中に,勾配情報を用いて特徴選択とDNNの学習を同時に行う方法が提案されています. 「gradient の大きい特徴量ほど loss を急激に減少させているので,そのような特徴量こそが重要なんだ」という発想ですね.

PCAによる特徴量作成

ここで紹介したい内容はいくつかあるんですが,かなり数理的な内容になってしまうので,とりあえず大雑把にどういう枠組みで手法が作られているのかの説明だけしておきます. まず,共分散行列の固有値を $\lambda_i, \, i=1,\cdots, d$ とします. このとき,固有値に対して以下を仮定するモデル (spiked model) が Johnstone (2001) によって提案されました.

$\lambda_i > 1,\, i=1,\dots, m $ は $d$ に依存しない定数で, $\lambda_i = 1,\, i=m+1, \dots, d$.

私が知っている範囲だと,spiked model を仮定してHDLSS data の幾何学的特徴に着目して固有値を推定し,PCAを行うという方法が提案されています (Yata and Aoshima, 2010; Aoshima and Yata 2011). 現在のところ,このモデルや,これをベースとした power spiked model (Yata and Aoshima, 2013) が仮定されて理論構築がされている手法が多いのではないかと思います.

固有値問題の解き方で工夫する方法

これは結構有名で,固有値問題や一般化固有値問題を解く時に対角成分だけを使ったりします. Bickel and Levina (2008) あたりが有名でしょうか. 他にも,いくつか仮定を入れて固有値固有ベクトルの漸近表現を陽に書けたりします. が,この内容は某ジャーナルで現在査読中のため詳細は伏せます.

まとめ

今回の記事では,HDLSS データに関することを適当にピックアップして紹介しました. 世の中DNNがもてはやされていますが(実際に凄いですけどねw),実務ではいつもデータがあるとは限らない,むしろデータが潤沢にある方が稀かと思います. そのようなとき,本記事で紹介した内容をふと思い出して論文に当たっていただけると幸いです.

なお,本記事の内容は殆どが学部生の頃の知識かつ,特にきちんとしたサーベイもせずに書き上げてしまったので,間違えているところがあるかもしれません. その時は御指摘願います.

  • 頂いたコメントを下に一部の記述を修正しました.

本文中で引用した論文リスト

  • Aoshima, M., & Yata, K. (2011). Effective methodologies for statistical inference on microarray studies. In Prostate Cancer-From Bench to Bedside. InTech.
  • Bickel, P. J., & Levina, E. (2008). Regularized estimation of large covariance matrices. The Annals of Statistics, 199-227.
  • Liu, B., Wei, Y., Zhang, Y., & Yang, Q. (2017, August). Deep neural networks for high dimension, low sample size data. In Proceedings of the Twenty-Sixth International Joint Conference on Artificial Intelligence, IJCAI-17 (pp. 2287-2293).
  • Yamada, M., Jitkrittum, W., Sigal, L., Xing, E. P., & Sugiyama, M. (2012). High-dimensional feature selection by feature-wise non-linear lasso. arXiv preprint. arXiv preprint arXiv:1202.0515.
  • Yamada, M., Tang, J., Lugo-Martinez, J., Hodzic, E., Shrestha, R., Ouyang, H., ... & Saha, A. (2018). Ultra high-dimensional nonlinear feature selection for big biological data. IEEE Transactions on Knowledge and Data Engineering.
  • Yata, K., & Aoshima, M. (2010). Effective PCA for high-dimension, low-sample-size data with singular value decomposition of cross data matrix. Journal of multivariate analysis, 101(9), 2060-2077.

【NAISTでの生活】就活編―IT/ICTベンチャーから日系大手まで―

どうも,接点QBです. 今回はNAISTでの生活シリーズ第2回目(3回目は無さそうな気がする)として,就活に関する記事を書きます. 就活を控えたNAIST生・NAISTの受験を考えている学部生・IT/ICT企業を目指している人達の参考になればと思います.

(注)企業様の敬称は省略します.また,多少の表記ゆれがあるかもしれません.

(注) 本記事は2018年1月に執筆したものです.

お前誰よ?

就活ということで,履歴書やエントリーシートに書きそうな内容を列挙しておきます. 多分この辺の情報を書いておかないと参考にならないので.

どこ受けたの?

実際に選考を受けたのは,以下の企業様です:

  • Albert:データソリューションカンパニー.データサイエンティストを多く抱えている会社.
  • Brain Pad:こちらもデータ分析コンサルみたいな会社.Albertとの違いは後述.
  • サイバーエージェントアメブロ・AbemaTV,FRESH!を始め,色々なコンテンツを展開している有名ITメガベンチャー
  • DeNA:キュレーションサイトの事が新聞に載る前に受けました.
  • NTTドコモ:携帯電話会社という印象が強いと思いますが,意外と色々やってます.
  • NTTコミュニケーションズ:通信回線の保守運用しかやってないという印象かもしれませんが,こちらもデータ分析をやっている部署があります.
  • ワークスアプリケーションズ:BtoBの会社なので知ってる人は少ないかもしれません.Hueという人工知能ERPが最近のウリのようです.
  • Yahoo! JAPAN:こちらも有名メガベンチャー.インフラエンジニアからデータサイエンティストまで,色々な人がいらっしゃいます.

大学院に入った当初は金融系も受けようと思っていましたが,Fintech系の話をウォッチしているうちに「もう日本の銀行は駄目だわ」と思って受けるのをやめました. が,ここではその話には深く立ち入らないことにします(長くなっちゃうので).

それで,実際にどこから(内)内定を貰ったかというと,DeNA以外の全社です. ということで,以下では(内)内定をゲットした会社に関する話を(公開できる範囲で)書いていきます.

M1の12月まで

学内での説明会

NAISTでは色々な企業の方に来ていただいて,学内で企業説明会みたいなものが行われます. もちろん,経団連に所属している企業様は3月までは説明会も出来ませんので,この時期は経団連に属していない企業様のみの説明会になります. 上に上げた企業様だと,Albert,NTTドコモNTTコミュニケーションズワークスアプリケーションズ以外はNAISTで説明会があったと思います. 大体は サポーターズキャリアセレクト といった「就活のサポートしますよ」企業様がイベントを設定してくださいます.

ブレインパッドはサポーターズのイベント経由で選考フローに乗りました.

逆求人イベント

さて,僕が一押しするのが「逆求人イベント」です. 逆求人を知らない方もいらっしゃるかもしれないので,一応説明しておきます. 逆求人イベントでは,普通の説明会と違って学生がブースを持ちます. 学生が個人ごとに設定したブースに座っていて,企業の方が学生のブースにいらっしゃって,お話をします.

僕は12月の中頃に 逆求人ナビ が主催する「データ逆求人」というイベントに参加しました. このイベントなくして僕の就活に成功は無かったと言っても良いぐらい素晴らしいイベントでした. 「データ逆求人」はデータ分析業務に就きたい人(俗に言うデータサイエンティスト)を対象とした逆求人イベントだったと記憶しています. 当日は時間が6つコマに区切られていて,各コマに1つの企業様と話せるというものでした. 幸運にも6コマ全て埋まったので朝から夕方まで喋りっぱなしで喉が結構きつかったです.

M1の1月以降

選考が本格化します. ここからは企業ごとに書いていこうと思います.

Albert

1月にアカリクの逆求人イベントに参加してお話しました. アカリク逆求人の前までは全く知らない企業だったんですが(最初は自転車の会社かと思いましたw),イベントでの説明を聞いていると「割りと興味あるな」となって,幸運にもお話できました. イベント中に「もう殆ど内定出たと思っといて」と言われて「マジかよwww」と思いましたが,結構マジでした. 選考フローは面接2回だけ(一回目は現場のデータサイエンティストの方と「何やりたい?」という感じの話で,二回目は雇用条件に関するお話)でした. つまり,殆ど選考らしい選考はありませんでした(逆求人で色々話したおかげ?).

Albert はかなりブレインパッドと事業内容が被っていますが,あえて違いを上げるとしたら

  • Albertの方がブレインパッドよりもアカデミックな印象を受けた
  • (あくまで個人的な印象ですが)Albertの方が先端技術をウォッチしている

という点でしょうか.

給与面に関しては月額346,761円 (30時間分のみなし残業代込み),近くに住むと家賃補助3万円/月,通勤手当は月3万円を上限に定期代で支給,その他も諸々の手当が付く感じです. ボーナスは年2回あるみたいです(何ヶ月分出るかは知りません). 基本的に年俸が500万をきることは無さそうな感じでした.

ブレインパッド

Albertよりもビジネス寄りな印象を受けました. 人事の方は良い人でしたし業務内容も良かったんですが,少し待遇が悪すぎましたね. 給与が月額28万円(30時間分のみなし残業代込み),家賃補助なし,ボーナスも決算賞与(つまり,出るかわからない)という感じでした.

選考は,Skypeでの面接が数回と,白金台にある会社での最終面接が1回でした.

サイバーエージェント

こちらも1月のアカリク逆求人経由で選考フローに乗りました. Skypeでの選考では,アドテクスタジオのAILab所属の方や,秋葉原ラボの方とお話させて頂きました. サイバーエージェントというとキラキラ系女子のイメージがある方が多いと思いますが,実際に中を見てみると「ベンチャーなのに意外ときっちりしている」と感じました. アドテクというかなり強固な収益基盤を持っていて,新規事業も展開し,かつ数年に一度きちんと事業を整理しているという,イケイケベンチャー感からは想像出来ないぐらいキチンとした経営戦略をとっている企業です.

選考フローはwebテストSkypeでの面接数回→本社(渋谷)での役員面接一回でした. webテストの詳細はさすがに書けませんが,僕は全然出来ませんでしたw(分野が違いすぎた) でも,webテストを受ける時にプロフィールシートも一緒に出すので,こちらをキチンと書いておけば何とかなる(会社側のニーズにマッチする内容なら)と思います. また,Skypeでの面接は「誰と話したい?」とこちらの要望をかなり聞いていただけました.

結局内定は辞退したんですが,正直な所かなり迷いました.

NTTドコモNTTコミュニケーションズ

秘密ですwww

他のITベンチャーに比べて古くからある「The 日系大手」な感じの企業なので,あまり書くと怒られるかと思いましてw

一つだけアドバイスするなら,最終の面接はスーツで行きましょうw

ワークスアプリケーションズ

逆求人ナビのイベント経由. ここが一番年俸が高かったです.最低でも600万円は保証すると言われました. 職種としては「AIスペシャリスト」という職で内定をいただきました. 人事の方がとても親身に相談に乗ってくださり(他の会社に関しての話など),ネットで言われている「ブラック」という雰囲気はあまり感じませんでした. また,現場のデータサイエンティストの方ともお話しましたが,技術レベルは高い(高い人としか話していない可能性あり)と感じました.

選考フローは,(ここまで免除)→プログラミング課題→技術面接→最終面接 でした. プログラミング課題は,「データサイエンス系の研究でプログラム書いてるならコレぐらいは出来るだろうな」という感じのレベルでした. 逆にあれぐらい書けないと入ってからキツイのでは?という印象でしたね. 技術面接は結構ゴリゴリ聞かれましたが,圧迫的な感じは一切なく,純粋に技術レベルを推し量ろうとしていると感じました.

Yahoo! JAPAN

逆求人ナビのイベント経由. イベントの時に「一人だけめっちゃきれいな人いる!やばい!!」と思っていた人がヤフーの人事の人でした(Twitterで有名な例のあの人).

メガベンチャーですが先進的な取り組み(社内システム含む)に積極的で,働きやすさ・面白さという2点では突出しているかなと思いました(面白さはサイバーもかなり良いと思いますが). ただ,新卒で入ると如何せん給料が(上記の会社と比べて)低いんですよね. 住宅手当も付きませんし. 中途採用で入るならかなり有力な選択肢になるかなと感じました.

選考フローは,Skype面談やらwebテスト→東京本社での面接→大阪での最終面接 でした. webテストはかなり基礎的な内容で,(コンピュータサイエンスの分野で普段から研究してるなら)特に対策とかしなくても大丈夫かと思います. 東京での面接は技術系の方との面接で,ここが一番重要だと思います. 僕の場合だと,スライドを使って研究紹介プレゼンをしました. 専門の方がいらっしゃるので,結構しっかり内容について質問が飛んできます. がしかし,こちらも普段からきちんと研究発表をしていれば何とかなるかと思います.

まとめ

結構色々な企業を受けましたが,特に何か就活用の対策をしたということはありませんでした―SPIの対策とかしたこと無い―. 個人的な意見としては,理系なら「就活の対策に時間を割くよりも,研究に時間を割いて自分の研究についてキチンと話せるようにしておく」ことの方が大事ではないかと思います. もちろん,これは一概には言えないのかもしれませんが,少なくとも僕はそう感じました. せっかく修士まで来ている(しかも,我々の研究に掛かる費用の多くは国民の血税から賄われている)のですから,その専門性を活かした職に就くべきだと思います.

また,本記事では具体的な給与額を含めて,できるだけ詳しく就活内容に関して書きました. こういう記事だとあまり給与を明示しているものが多くないのですが,

雇用される側からすると給与は切実かつ重要な要素なので,学生側がアクセスしやすいようにきちんと明示すべき

という考えのもとで出来るだけ明記しました. これから就活をする人の参考になれば幸いです.

最後になりましたが,就活を通して多くの企業の方(特に人事の方)にお世話になりました. この場を借りて御礼申し上げます. もし本記事の内容に問題がありましたら,ご連絡下さい.

【NAISTでの生活】ビジネスコンテスト・シリコンバレー編

どうも,接点QBです.最近修士論文の執筆に追われています. そんな中ですが,ふと思い立って大学院での生活をトピックごとに振り返る記事を書いてみようと思いました. なお,本当は紹介しようと思っていたNIPSの論文がまだ読み込めてないから,暇つぶしに記事を書こうとか思ったわけでは無いですよ.

今回は,タイトルに有る通りビジネスコンテストとそれに関連してシリコンバレーに行った時の話を書こうと思います. これからNAISTへの進学を考えている方や,「シリコンバレーって今どんな感じ?」といった方々,「大学院生がシリコンバレーで何してきたの?」という方々に,僕のドヤ顔体験記に興味ある方(←日本に一人ぐらいいてもいい)がメイン対象です. 上記以外の方も興味があればぜひ読んでみて下さい. 写真が多いのですぐ読み終わると思います.

何でビジコン?

僕はNAIST情報科学研究科に所属している大学院生なわけですが,そんな自分が何故突然ビジコン(ビジネスコンテスト)の話を書き始めたかということをまず説明します. NAISTではGEIOT (Global Entrepreneurs in Internet of Things)というプログラムが設置されています. これは,IoT分野での起業家を育成しようというプログラムで,文科省のEDGEプログラムに採択されていました. 現在はEdgeプログラムが終了して,EDGE-nextというプログラムになっているそうです. それに伴い,crossXcrossというプログラムがNAISTで設置されたようです(こっちはあまり知らない). つまり,僕はこのGEIOTに参加していたわけですね. プログラムの殆どが大阪イノベーションハブで開催されていたので,毎週土曜日にグランフロント大阪に行ってドヤ顔する生活を送っていました.

立命館大学学生ベンチャーコンテストで優秀賞

脱落していくチームも多い中,僕はチームメンバーに恵まれてなんとか製品のプロトタイプを作ることが出来ました. 実際に某お店で製品の実証実験もさせてもらい,かなり上手く行ったチームだと自負していますw

チームで考えたビジネスプランで国内のビジコンに応募して,2016年の立命館大学学生ベンチャーコンテストで優秀賞をもらいました(これ,検索すると一発で本名バレしてしまうのでは…).

f:id:setten-QB:20180107174556j:plain

それで,国内のビジコンで優秀な成績を収めたということで,大学院からお金を出してもらったお金とビジコンの賞金でシリコンバレーでの研修に連れて行ってもらいました!

シリコンバレー研修

さて,本題のシリコンバレーです. 研修は大阪イノベーションハブが主催するシリコンバレー・アントレプレナー・ネットワーキングプログラム2017に参加するという形でした.

研修の中身

  • 現地の日本人起業家や現地で働いている人達の前で自分のビジネスプランのプレゼンをする
  • 起業家の人たちからレビュー
  • 起業家の人たちの講演

というのが基本的な研修形式でした.研修場所は色々で,起業家の方たちにホテルまで来ていただく時もあれば,研修参加者が講師の方が働いている場所まで行って見学+研修という形式になることも多かったです. 以下,有名所の写真と共に現地でのことを振り返ってみます.

f:id:setten-QB:20180107180439j:plain

はい,まずは皆さん大好き「Apple」ですね. 実は宿泊していたホテルのすぐ近くにAppleの本社がありました. 道を歩いているとどこもかしこもAppleの看板だらけでした.

f:id:setten-QB:20180107180949j:plain

次はFacebookです. この看板を見るとこの構図で記念写真を撮るのは万国共通の模様. ちなみに,この裏面はサン・マイクロシステムズのロゴが入っています. 時代を感じますねぇ…

f:id:setten-QB:20180107181330j:plain

次はGoogleです. Googleでは日本人エンジニアの方のお話を聞かせてもらいました. ちなみに,Googleはマウンテンビューというエリアに本社があるんですが,そこら辺一体の土地を殆ど買い占めてるそうです. 社内が広すぎるので,移動するようの自転車(Googleカラー)がそこら辺に置いてあって,みんなそれに乗って移動するそうです(写真見たい人はTwitterFacebookで聞いてね).

f:id:setten-QB:20180107181903j:plain 次はスタンフォード大学です. 全然大学っぽくないですねw 個人的には,ここの医学部の先生から「リーダー像とは」みたいな講演をしていただいたのが一番面白かったです. ちなみに,医学部キャンパスの食堂でお昼を食べたんですが,noodleが不味すぎて衝撃でした. 皆さん,スタンフォードの学食ではnoodle以外を食べましょう.

f:id:setten-QB:20180107182304j:plain

最後はこちら,サンフランシスコの日本領事館. 当時,大阪市とサンフランシスコ市は姉妹都市だった(はた迷惑なお隣さんから来た人たちが頑張って某像を設置したおかげで,提携を解消すると大阪市長は言っていますが,どうなるのでしょうか?)ので,その繋がりもあり最終日は日本領事館でプレゼン+懇親会でした. アメリカでは色々食べましたが,ここで出てきた料理が一番美味しかったです. というか,日本と比べるとどこの国も食べ物が美味しくない. 別件で中国に行った時に比べるとアメリカはマシでしたが…

GEIOT勢は優秀

研修中のプレゼンは全て採点されて,最終日に順位発表があったのですが,上位3人は全てNAISTから参加した人でした. ちなみに,僕は2位でした( ・´ー・`)どや 自分で言うのも何ですが,NAISTのGEIOTから研修に参加した人たちは優秀な人ばかりで(そりゃ,みんな国内のビジコンで優秀な成績を収めた人だからね),心なしか引率の先生もドヤ顔でしたw 京大をはじめととする他の大学からの参加者や,社会人の人など色々な人が参加する中でも好成績を収められたことは,GEIOTというプログラムの素晴らしさを物語ってる気がします.

まとめ

NAISTでの生活を振り返るシリーズの第1段として,ビジコン・シリコンバレー編でした. 書ききれてないことや書けないこと(具体的なビジネスプランとか)もたくさんありますので,興味がある方は個人的に聞いてください. 出来る限りお答えします.

この活動をしている中で色々な起業の方・起業家の方・現場の方・省庁の方から意見を伺うことが出来ましたが,結構好評でした. なので,もしかすると将来的には僕達のプロダクトが皆さんに使われる日が来るかもしれません(←なお,現状は微妙な模様w)