スキルアップゼミ | AI tech studio https://cyberagent.ai AI事業本部は、サイバーエージェントグループのデジタルマーケティング分野におけるサービス開発を行う組織です。 Fri, 20 May 2022 07:52:59 +0000 ja hourly 1 https://wordpress.org/?v=5.3.26 AI Lab の研究 skill-up ゼミ! https://cyberagent.ai/blog/research/16595/ Fri, 20 May 2022 07:52:59 +0000 https://ai-blog-admin.cyberagent.ai/?post_type=blog&p=16595 ゼミの紹介と論文の書き方

こんにちは!サイバーエージェント AI Lab のリサーチサイエンティスト、アントニオです。サイバーエージェントでは、ゼミ制度というものがあります。ゼミでは、社員の興味があるテーマについて勉強するために勤務時間の一部を使うことができます。幅広いテーマのゼミが開催されており、AWSやARアプリ開発などに取り組んでいます。本記事では、私が運営する研究 skill-up ゼミを紹介したいと思います。

研究 skill-up ゼミ

研究skill-upゼミは研究に関するスキルを強化してより良い研究者になることを目的としています。研究活動には、論文の調査や執筆、手法の開発と実験など、様々なタスクがあり、分野や経験に関わらず以下のような悩みは多くの研究者が共有していると思います。

  • 説得力のある論文のストーリーを作るにはどうしたらいいか
  • 実験結果の効果的な見せ方
  • 査読の書き方
  • 論文調査で得た情報の整理

研究skill-upゼミでは、メンバーが研究活動を改善していくために、今まで下記のトピックについてノウハウを調査し共有してきました。

  • 論文の書き方(abstract, introduction, etc.)
  • レビュー(査読)の書き方
  • 研究ネタの作り方
  • 論文やポスター作成のためのレイアウト/図表のデザイン
  • 文献管理ツール
  • 研究時間管理のノウハウ

上記のトピックについてまとめた資料は今後ブラッシュアップして公開を予定していますが、とりあえず、論文の書き方の概要を簡単に紹介したいと思います。

論文の書き方

ゼミで使っている論文ライティングについての教科書を紹介します。採用した教科書はScience Research Writing for native and non-native speakers of Englishの第2版です(図1)。この本は他の教科書と違って、論文の書き方に関する一般的なガイドラインを提供していません。この本では、読者が選んだ論文の構造を分析することで、具体的なライティングのパターンを学び自分の論文に活用できる様になることを目指します。例えば、イントロダクションを書く際に、論文の主なアイデアを強調する書き方や、結果を提案手法に関連付けて説明するパターンを具体例から学びます。

おすすめの教科書

図1:おすすめの教科書、Science Research Writing for native and non-native speakers of Englishの第2版

次のセクションでは、実際の論文のイントロダクションを分析した例を紹介します。具体的には、教科書で解説されている技法(提案手法の重要性を強調する表現など)が使われている箇所をチェックし、どのようにイントロダクションが構成されているかを分析します。

イントロダクションの書き方

この本ではイントロダクションでは一般的な、あるいは解りやすい問題から、論文が扱う具体的な問題まで、漏斗の様な構造があることを示しています(図2)。基本的なイントロダクションの目的は以下のようなものであると説明されています。

  • 冒頭で論文のトピックを紹介する
  • 関連研究を紹介し、既存研究と本研究の違いを明確にする(論文が扱う問題)
  • イントロダクションで読者はモチベーションやメインアイデアを把握し、続く詳細が理解しやすくなる
論文の構造とイントロダクション

図2:論文の構造とイントロダクションのイメージ

今回はコンピュータビジョンの論文を使って、教科書に基づき論文の構造を下記のように分析しました。注目すべき箇所は太字で強調しました。

Siarohin et al. (2019) “Increasing image memorability with neural style transfer”. ACM Transactions on Multimedia Computing, Communications, and Applications, 15(2), 1-22.

まずは、背景情報が提供されています。研究トピックの重要性を強調する表現が使われているところがポイントです(enormous, greatly overwhelmed)。

We live in a society where everything has to be fast and in which the enormous amount of visual stimuli we receive daily has greatly overwhelmed the human capacity.

次に一般的な問題が述べられています。新しい情報が追加されるので現在形が使用されています。また、因果関係を表すのに as a consequence が使われています。

It is impossible to absorb all visual information which we are daily exposed to. As a consequence, designers are continuously struggling for capturing consumers’ visual attention.

この論文では関連研究に現在完了形を使っています。関連研究は一般知識を提供するものから本研究に近いものまで順番に紹介されます。

Previous research studies have shown that memorability is an intrinsic image property (…). Other works have demonstrated that image memorability can be measured.

次の文ではこの研究が取り組む問題とその解決方法が述べられています(while 〇〇 it would be desirable 〇〇)。

While research studies in cognitive neuroscience are used to derive general rules for reshaping visual contents, it would be desirable to reduce human intervention and devise technological solutions to automatically modify images and videos accordingly.

以下の文では提案手法の重要性が強調されています。

The specific case of memorability is interesting in practice, since it has not only a commercial impact in marketing and fashion as well as in the way visual content influences people

この文では本研究のゴールが紹介されています。現在形を使っていることに注意してください。

This work introduces an approach to automatically modify images

次の文では図を使った説明をしています。提案手法のアイデアを示す図はイントロダクションの1ページ目に配置することが効果的です。特にコンピュータビジョンの論文ではよく見る構成で、読者の注意を引く効果もあります。初めて提案手法の概要を見せる際には、入力と出力、関連研究との違いなどを明確にすることによって、論文が扱う問題とその問題の大切さが伝わりやすくなります。

The main idea behind the proposed method is illustrated in Figure 1. Given a generic image, our approach provides as output a list of suggested style images sorted by the estimated increase in memorability.

提案手法の概要の後、実験の設定が簡単に説明されています。また主な結果の説明に、この研究による成果を強調する表現が使われていることに注意してください。(”happy words” の例、effective, successful)

We evaluate the proposed approach conducting experiments on the publicly available LaMem dataset, showing that our method is effective in increasing image memorability.

イントロダクションの最後ではこの研究のコントリビューションが3つのポイントで要約されています。

To summarize, the contribution of our work is threefold:

・We introduce a novel framework to (…)

・We demonstrate the flexibility of our framework with respect to (…).

・We propose an extended version of the method (…)

最後に、重要なポイントの1つは、段落の構造、つまり paragraphing です。基本的に一つの段落では一つのアイデアを説明します。読者は最初の文章をチェックするだけで段落の内容がわかるような書き方をすべきです。イントロダクションの段落の構造は、下記の具体例の様な構造に従うことが多いと言われています。

1. We live in a society where (…) 

2. In order to tackle this problem, previous works (…)

3. The main idea behind the proposed method is (…)

4. To summarize, the contributions of our work are (…)

まとめ

このブログではゼミ活動の紹介として、ゼミで勉強したイントロダクションの書き方をまとめました。教科書に沿って、コンピュータビジョンの論文を分析し、重要な言葉や構造を洗い出し、イントロダクションのモデルを作成しました。このモデルは他の論文にも適用することができます。今後もブログで論文の書き方や、効率的な研究のためのヒントなど、ゼミで扱っているトピックを紹介したいと思います。

 

]]>
Gradient Reversal LayerではじめるPyTorchカスタム関数 https://cyberagent.ai/blog/research/11863/ Tue, 28 Jan 2020 10:08:58 +0000 https://ai-blog-admin.cyberagent.ai/?post_type=blog&p=11863 Gradient Reversal Layer

AI Labの大田(@ciela)です。近頃の機械学習モデルにおいて、敵対的な学習を行うことで有名なのは生成器ネットワークと識別器ネットワークが互いに競い合うように学習するGenerative Adversarial Networks (GAN) かと思いますが、転移学習の一種であるドメイン適応においても敵対的な学習を行うモデルが提案されています。ドメイン適応の目的は、学習データ(ソースドメイン)とテストデータ(ターゲットドメイン)におけるデータ分布が異なるような状況においてもうまく機能するようなモデルを学習することです。ターゲットドメインのデータ分布をソースドメインのデータ分布に近づけるように学習するのですが、これを敵対的なやり方で行うというわけです。ドメイン適応自体についてはAI Labの安井もブログ記事を書いていますのでこちらも併せてお読みいただければ幸いです。

Ganinらは教師なしドメイン適応モデルであるDomain-Adversarial Neural Network (DANN)を提案しており、異なる画像表現を持つ画像データセットでの有効性を示しています。

Domain-Adversarial Training of Neural Networks [Ganin, JMLR2016]

DANN

論文よりDANNのアーキテクチャ図

上図を参照してみると特徴抽出CNNを経たあとクラス分類とドメイン分類の2つのサブネットワークに分岐していますが、ドメイン分類のサブネットワークにおいてはGradient Reversal Layer (GRL)という層を通していることが分かります。この層は誤差逆伝搬時にのみ前段の層へ伝わる勾配の符号を反転させるのですが、これによってクラス分類能力を高めつつもドメイン分類能力は落とすという敵対的な学習が行われます。その結果、前段の特徴抽出層においてドメイン不変性のある特徴獲得能力が向上するという仕組みになっています。

このGRLはGANの学習にも利用できます。生成器と識別器を交互に学習させる実装が主流かと思いますが、下記の記事においてはGRLを利用して生成器へ伝搬される勾配を反転するだけで目的関数がシンプルになり実装が簡単になるという利点が紹介されています。

Gradient reversal layerを使うとGANの実装が簡単になる – Qiita

さて、今回は私もドメイン適応モデルを構築する機会があり、ベースモデルとしてDANNを実装する上でGRLについても理解・利用する必要性が出てきました。普段使いしているDNNフレームワークはPyTorchなのですが、2020年1月現在の最新版である1.4.0にはこのGRLの実装は含まれていないようです。これまで活性化関数などを独自実装した経験がなかったこともあり、本記事ではPyTorchでGRLの実装を行い実際に簡単なモデルに組み込んで挙動を確認してみたいと思います。

PyTorchでのGRL実装

PyTorch において、誤差逆伝播時に勾配情報を制御するためには

torch.autograd.Function
 クラスを利用して独自関数を定義することになるかと思います。

PyTorch: Defining New autograd Functions — PyTorch Tutorials 1.4.0 documentation

上記ページを参考にして定義してみた場合、下記のようになります。

class GradientReversalFunction(torch.autograd.Function):
    
    @staticmethod
    def forward(ctx, input_forward: torch.Tensor, scale: torch.Tensor) -> torch.Tensor:
        ctx.save_for_backward(scale)
        return input_forward

    @staticmethod
    def backward(ctx, grad_backward: torch.Tensor) -> Tuple[torch.Tensor, torch.Tensor]:
        scale, = ctx.saved_tensors
        return scale * -grad_backward, None

順伝播時の挙動を

forward
 関数内に、誤差逆伝播時の挙動を
backward
関数内にそれぞれ記述します。先述した通り、GRLはニューラルネットワークにおける誤差逆伝播時に勾配の符号を反転させる層です。基本的に必要なことはそれだけなのですが、DANNアーキテクチャ図における偏微分式を素直に実装するのであれば、勾配の符号反転と同時に行うスケーリング用の係数\(\lambda\)も指定できるようにしておくことが望ましいでしょう。このスケーリング係数は
forward
 関数の2つ目の引数として指定し、順伝播時にコンテキストオブジェクトに保存しておきます。そうしておくことで逆伝播時にコンテキストオブジェクトから参照でき、勾配のスケーリングを行うことが可能となります。
forward
 関数の入力が2つとなったため、
backward
 関数の戻り値も2つとなりますが、スケーリング係数に対して逆伝播させる勾配はないため
None
 を返しておきます。

GRLの関数実装自体は以上で完了です。簡単ですね。PyTorchでの独自関数実装の入門に最適な題材かと思います。あとはお作法的な問題ではあるのですが、次に行うネットワーク実装の見通しを良くするために

torch.nn.Module
でラップして利用しやすくしておきます。

class GradientReversal(nn.Module):

    def __init__(self, scale: float):
        super(GradientReversal, self).__init__()
        self.scale = torch.tensor(scale)

    def forward(self, x: torch.Tensor) -> torch.Tensor:
        return GradientReversalFunction.apply(x, self.scale)

これでPyTorchでのニューラルネットワークからGRLを利用する準備が整いました。次は実際にGRLの有無での挙動の違いを確認してみましょう。

GRLの挙動確認

ここではDANNモデルのネットワークアーキテクチャを抽象化した下記のようなシンプルなニューラルネットワークを考えます。

BranchReversalSiameseNet

入力として任意のベクトルを受け取り共通層を経たあとTrunk層とBranch層へと分岐するのですが、Branch層のみ直前にGRLを配置することでBranch側から逆伝搬された勾配のみ符号反転を行うアーキテクチャです。また、GRLの有無に伴う逆伝播の確認を簡単にするため、Trunk層とBranch層における出力値への影響が等しくなるように両者間での重みを共有するSiamese構造にしています。GRL以外の隠れ層は入力・出力テンソルの次元が全て1次元でバイアス項なしの全結合層とし、GRLのスケーリング係数は1.0を設定しておきます。GRLが正しく機能していれば、Trunk側から逆伝搬されてくる勾配が相殺され、共通層に届く勾配値が0となるはずです。

このアーキテクチャの実装コードは下記になります。

class BranchReversalSiameseNet(nn.Module):

    def __init__(self, use_grl: bool = True):
        super(BranchReversalSiameseNet, self).__init__()
        self.use_grl = use_grl
        self.shared = nn.Linear(1, 1, bias=False)
        self.trunk_branch = nn.Linear(1, 1, bias=False)
        self.grl = GradientReversal(scale=1.0)

    def forward(self, x: torch.Tensor) -> Tuple[torch.Tensor, torch.Tensor]:
        y_shared = self.shared(x)
        y_trunk = self.trunk_branch(y_shared)
        if self.use_grl:
            y_shared = self.grl(y_shared)
        y_branch = self.trunk_branch(y_shared)
        return y_trunk, y_branch

それではGRLの有無による誤差逆伝播を実際に確かめて行きたいと思います。上記クラスをインスタンス化し、ランダム値を入力してTrunk層とBranch層からの出力を合算した値から誤差逆伝播を行い、共通層へ届いた勾配情報を表示するようなスクリプトを記述してみました。最初にネットワーク初期化時の各層の重みも確認のために表示しています。

print('===== BranchReversalSiameseNet Parameters ======')
torch.manual_seed(0)
model = BranchReversalSiameseNet()
print(f'Shared Weight: {list(model.shared.parameters())[0].data}')
print(f'Trunk/Branch Weight: {list(model.trunk_branch.parameters())[0].data}')
print()

print('===== BranchReversalSiameseNet w/o GRL =========')
torch.manual_seed(0)
model = BranchReversalSiameseNet(use_grl=False)
x = torch.randn(1)
print(f'Input: x={x.data}')
y_trunk, y_branch = model(x)
y_out = y_trunk + y_branch
print(f'Output: y_trunk={y_trunk.data}, y_branch={y_branch.data}, y_out={y_out.data}')
y_out.backward()
print(f'Shared Gradient: {list(model.shared.parameters())[0].grad}')
print()

print('===== BranchReversalSiameseNet w/ GRL =========')
torch.manual_seed(0)
model = BranchReversalSiameseNet()
x = torch.randn(1)
print(f'Input: x={x.data}')
y_trunk, y_branch = model(x)
y_out = y_trunk + y_branch
print(f'Output: y_trunk={y_trunk.data}, y_branch={y_branch.data}, y_out={y_out.data}')
y_out.backward()
print(f'Shared Gradient: {list(model.shared.parameters())[0].grad}')
print()

自分の環境において、上記スクリプトの実行結果は下記になりました。いずれも順伝播時の出力自体は等しいものの、GRLありの場合は誤差逆伝播後に共通層へ伝搬されてきた値は0になっており、GRLを利用していない場合とで違いが現れたことが確認できました。

===== BranchReversalSiameseNet Parameters ======
Shared Weight: tensor([[-0.0075]])
Trunk/Branch Weight: tensor([[0.5364]])

===== BranchReversalSiameseNet w/o GRL =========
Input: x=tensor([-0.2905])
Output: y_trunk=tensor([0.0012]), y_branch=tensor([0.0012]), y_out=tensor([0.0023])
Shared Gradient: tensor([[-0.3117]])

===== BranchReversalSiameseNet w/ GRL ==========
Input: x=tensor([-0.2905])
Output: y_trunk=tensor([0.0012]), y_branch=tensor([0.0012]), y_out=tensor([0.0023])
Shared Gradient: tensor([[0.]])

共通層に逆伝播されてくる勾配の値を手計算でも求めてみたいと思います。出力\(y_{\mathrm{out}}\)に対する共通層の重み\(w_{\mathrm{shared}}\)での偏微分\(\frac{\partial y_{\mathrm{out}}}{\partial w_{\mathrm{shared}}}\)を連鎖律を使って展開し、実行時に表示されていた入力値と各層の重みを代入してみましょう。

GRLなし

$$
\begin{eqnarray}
\frac{\partial y_{\mathrm{out}}}{\partial w_{\mathrm{shared}}}
&=& \frac{\partial y_{\mathrm{out}}}{\partial y_{\mathrm{trunk}}} \cdot \frac{\partial y_{\mathrm{trunk}}}{\partial w_{\mathrm{shared}}}
+ \frac{\partial y_{\mathrm{out}}}{\partial y_{\mathrm{branch}}} \cdot \frac{\partial y_{\mathrm{branch}}}{\partial w_{\mathrm{shared}}}\nonumber \\
&=& \frac{\partial y_{\mathrm{out}}}{\partial y_{\mathrm{trunk}}} \cdot \frac{\partial y_{\mathrm{trunk}}}{\partial y_{\mathrm{shared}}} \cdot \frac{\partial y_{\mathrm{shared}}}{\partial w_{\mathrm{shared}}}
+ \frac{\partial y_{\mathrm{out}}}{\partial y_{\mathrm{branch}}} \cdot \frac{\partial y_{\mathrm{branch}}}{\partial y_{\mathrm{shared}}} \cdot \frac{\partial y_{\mathrm{shared}}}{\partial w_{\mathrm{shared}}}\nonumber \\
&=& 1 \cdot w_{\mathrm{trunk}} \cdot x + 1 \cdot w_{\mathrm{branch}} \cdot x\nonumber \\
&=& 0.5364 \cdot (-0.2905) + 0.5364 \cdot (-0.2905)\nonumber \\
&=& -0.3116
\end{eqnarray}
$$

GRLあり

$$
\begin{eqnarray}
  \frac{\partial y_{\mathrm{out}}}{\partial w_{\mathrm{shared}}}
&=& \frac{\partial y_{\mathrm{out}}}{\partial y_{\mathrm{trunk}}} \cdot \frac{\partial y_{\mathrm{trunk}}}{\partial w_{\mathrm{shared}}}
+ \frac{\partial y_{\mathrm{out}}}{\partial y_{\mathrm{branch}}} \cdot \frac{\partial y_{\mathrm{branch}}}{\partial w_{\mathrm{shared}}}\nonumber \\
&=& \frac{\partial y_{\mathrm{out}}}{\partial y_{\mathrm{trunk}}} \cdot \frac{\partial y_{\mathrm{trunk}}}{\partial y_{\mathrm{shared}}} \cdot \frac{\partial y_{\mathrm{shared}}}{\partial w_{\mathrm{shared}}}
+ \frac{\partial y_{\mathrm{out}}}{\partial y_{\mathrm{branch}}} \cdot \frac{\partial y_{\mathrm{branch}}}{\partial y_{\mathrm{GRL}}} \cdot \frac{\partial y_{\mathrm{GRL}}}{\partial y_{\mathrm{shared}}} \cdot \frac{\partial y_{\mathrm{shared}}}{\partial w_{\mathrm{shared}}}\nonumber \\
&=& 1 \cdot w_{\mathrm{trunk}} \cdot x + 1 \cdot w_{\mathrm{branch}} \cdot (-\lambda) \cdot x\nonumber \\
&=& 0.5364 \cdot (-0.2905) + 0.5364 \cdot (-1) \cdot (-0.2905)\nonumber \\
&=& 0
\end{eqnarray}
$$

ちゃんとコード実行時に表示された勾配値が得られました。GRLありの途中式2項目、Branch側の逆伝播に含まれている符号反転スケーリング係数\(-\lambda\)がポイントですね。

おわりに

本記事ではPyTorchでGRLの実装を行い、実際にモデルに組み込んで誤差逆伝播時の挙動を確認しました。これで無事DANNの実装へ進むことができそうで一安心です。今回のコードの全体については下記のGistにまとめてありますので、よろしければこちらもご参照ください。

https://gist.github.com/ciela/2656510f15d2a1e7c5cef206f8328cb2

ちなみに今回の件はサイバーエージェントAI事業本部にて本業の20%の時間を自分の好きな研究活動に費やすことができるゼミ制度での取り組みに端を発するものです。半期ごとに成果目標を掲げて活動計画を提出することで運営から予算を取得し、本業ではなかなか触れることの出来ないデータやモデル検証に挑戦する時間を業務中に得ることが出来る貴重な制度となっています。

]]>
【 HCIゼミがHack賞を受賞】Yahoo! JAPAN Hack Day 2019 https://cyberagent.ai/blog/pr/11511/ Fri, 20 Dec 2019 02:20:48 +0000 https://cyberagent.ai/?post_type=blog&p=11511  
皆さんこんにちは!
 
今年も残すところあと少し💡皆様にとってどんな1年だったでしょうか?
 
さて、先日Yahoo社が行なっているYahoo! JAPAN Hack Day 2019にて、
 
AI事業本部 AILab研究員の岩本がゼミ長を務めるHCIゼミがHack賞を受賞しましたので
 
お知らせします!なんとこちらは昨年に引き続き連続での受賞となっております!🎉🎉
 
 
Yahoo! JAPAN Hack Day 2019
 
「テクノロジーを、もっと身近に、もっと楽しく。」をコンセプトに行われる300人以上が参加する
Yahoo!Japan主催の日本最大級のハッカソンです。
 
総勢300人以上、78チームに分かれた一般公募のクリエイター(エンジニアやデザイナー)が、24時間以内に開発した作品をプレゼンテーションして競い合う“ハッカソン”では、AR・VRやAIなどの様々なテクノロジーや、電子工作などを駆使したユニークな作品が発表されました。

ニコニコ生放送、YouTube Liveでの中継ののべ視聴数は約5.5万人で過去最多となりました。

 

 
HCI(Human Computer Interaction)ゼミ
 
サイバーエージェントの「スキルアップゼミ制度」のうちのゼミの一つで、
HCIゼミはコンピュータと人とのインタラクションを研究するゼミです。
 
研究者やエンジニアがただ便利なだけではなく、可能性を感じるシステムの開発を主に行なっています。開発したシステムは実験し、国際学会で発表するのを目標にしています。
 

 

※サイバーエージェント スキルアップゼミ制度

参加自由の任意の勉強会とは異なり、大学における研究室やゼミのように少数メンバーにて研究テーマに沿って活動を行う制度です。研究を通して得られる成果(技術力や知見の向上)を事業に活かすことを目的の1つとしており、業務時間の一部を使ってゼミ活動が可能です。

 

今回、Yahoo! JAPAN Hack Day 2019では以下8つの賞がありましたが、総勢300人以上、78チームのうち、HCIゼミは、名誉のあるHack賞を受賞することができました!

最優秀賞(WakuWaku、Tech、Hackのすべての観点において優れた作品)

WakuWaku賞(楽しく、使ってみたいと思わせる魅力がある作品。ゲスト審査員のわくわくさんこと久保田雅人さんが選定。)

Tech賞(技術力がすぐれている作品)

Hack賞(他の人が思いつかない用途開拓や応用力に優れた作品)

Data賞(データを活用して最も新しい体験を生み出した作品)

O2O賞(オフラインデータを利活用し、最も新しく魅力的な体験を生み出した作品)

UI/UX賞(優れたUI/UXデザインにより、最も新しく魅力的な体験を生み出した作品)

Happy Hacking賞(ニコ生投票、出場者投票の最多票数獲得作品)

※各受賞作品詳細リンク先

 

Hack賞を受賞したHCIゼミの作品は下記です!

Hack賞受賞!HCIゼミの作品

「TNデジタル試着システム」

鏡越しだと違った映像が見えるディスプレーシステム。液晶と鏡を並べることで、洋服試着のBefore/After比較などに。液晶パネル特性の弱点を逆に活用。

▶︎発表の動画はこちら(外部リンク)

 

ゼミ長 岩本からのコメント

 

とても素晴らしい賞をいただけ、メンバー一同とても喜んでおります!ハッカソンに参加すると、周りは物作りが好きな方達と同時に開発を行うので、とても刺激をもらうことができました。今後より応用的なアプリケーションを開発し、実用化の検討を行なっていきます。

  参加ゼミメンバー:岩本拓也・西康太郎・鵜口大志・石橋弦樹・山口舞

 

今後もHCIゼミをはじめ、様々な取り組みをお伝えしていきます!!

]]>
【アドテクスキルアップゼミ】GANで手画像生成 https://cyberagent.ai/blog/research/computervision/2779/ Tue, 15 Oct 2019 02:25:31 +0000 https://cyberagent.ai/research/?p=2779 AI事業本部(旧アドテク本部)にはアドテクスキルアップゼミという制度があります。これは事業に関連する技術を少人数で調査、研究する活動を支援する取り組みです。今日はマルチメディアデータゼミで私が取り組んできたプロジェクトを紹介します。

手の画像生成

「スキルアップ」ゼミとのことなので、これまで手をつけていなかった技術を使ったプロジェクトに取り組みます。今回はGANを使った簡単なツールの開発をしてみることにしました。GANは画像生成の定番手法です。これまで自分の研究でGANを扱ったことはありませんが、バナー広告生成の観点からも注目されているので、ゼミでやってみることにしました。

今回は手画像の生成に取り組みます。手は広告デザインによくあるモチーフです。商品を持った画像やハンドジェスチャーなどは定番デザインの1つです。そのようなバナーの制作では、デザイナーがイメージに近い手の素材を探したり、自分で撮影することが多いようですが、好きなポーズの手画像をすぐ入手することができれば便利でしょう。そこで指定したポーズのリアルな手画像を生成するモデルを学習してみます。

手のポーズからフォトリアリスティックな手のRGB画像を作りたい(右は本物の手の写真)

最近の研究ではポーズや服装を指定して全身画像を生成する取り組みなどがあります。そのような問題に比べると手の生成はだいぶ簡単そうです。

データセット

手のポーズと手画像のペアを用意します。今回は自分の手の動画を撮影し、ポーズ推定をすることでポーズ画像を生成しました。ポーズ推定にはここの実装と学習済みモデルを使いました。RGB画像から手のポーズを推定することができます。今回のようなシーンであればなかなか精度良く推定することができます。

モデル

ポーズ画像で条件付けした手画像を生成したいので、UNet-likeなモデルを構築します。入力はポーズ画像、出力は同じポーズのRGB手画像です。このモデルでは手画像を生成していく過程の特徴マップに、ポーズ画像から抽出した特徴マップを連結しています。なんとなくポーズに沿った画像が描画できそうです。

手画像生成モデルのイメージ図

最初の手画像生成実験

上記のモデルを学習してみます。今回は入力のポーズ画像に対して正解画像が存在するので、通常のGANの損失関数に加え、生成画像と正解画像の二乗誤差も最小化するように学習します。Chainer-GAN-libをベースに開発しました。Chainer-GAN-libではいろいろなGANアルゴリズムの実装が公開されていて、簡単に試すことができます。

結果

なんだかそれっぽい手画像が生成されるようになりました。

入力ポーズと生成された手画像

しかし、人間の手の動きはそれほどバリエーションがないので、ほぼ同じポーズが学習データに含まれているかもしれません。ポーズを人手で編集して画像を生成してみましょう。

関節の位置をちょっとずらして手画像を生成した例

関節位置が本物の手のバランスからちょっとでも外れると画像が崩壊します。ある種の過学習状態のようです。

画像崩壊対策

過学習のまっとうな対策はデータの増量(例えばいろいろな人の手画像を集めたり)ですが、撮影が面倒なのでやりません。今回はdata augmentationでなんとかならないか試してみます。前回の結果では指定したポーズのバランスが本物と異なる場合に画像が崩壊するという問題がありました。今回は多少ポーズの指定が適当でも、ボーンに沿って手を描画するようなモデルの学習を目指します。いくつかの方法を試しましたが、比較的軽量で効果があったのは入力ポーズ画像からランダムな領域を欠損させる方法です。

ポーズ画像のランダムな領域を隠す。実際には背景と同じ色で塗りつぶし。

いっそのこと入力を大幅に隠してしまえば、最終出力画像が全体としてもっともらしくなるよう、補完して描画する方法を学習してくれるのではないかと期待して、このような変換を取り入れてみました。またランダムに入力ポーズ画像を操作することで、入力と出力画像のペアを暗記するような学習を避けることができます。

結果

手画像生成ツールの編集画面

最初の結果と比べてだいぶロバストになりました。簡単な処理で結果が変わると嬉しいですね。非現実的な指の長さを指定しても、ボーンに沿って描画してくれるようになっています(そんな画像が必要になるバナーがあるとは思いませんが…)。しかし21個もある関節を一つ一つユーザが指定するのは非常に面倒です。UIの側面からもこのような技術の使い方を考える必要があるでしょう。

最後に

アドテクスキルアップゼミで取り組んでいる手画像生成の試みを紹介しました。先日あった社内向け報告会ではデザイナーの人たちからもフィードバックをもらえたので、今後はそれらを参考にしたツールへ改良していきたいです。こういうプロジェクトに興味のある学生さんがいたら連絡ください。
マルチメディアデータゼミでは他にもステガノグラフィ技術の検証や映画タイトルの生成、対話データの個人情報マスキングなどいろいろなプロジェクトに挑戦しています。他のプロジェクトの成果報告にもご期待ください。

]]>
【スキルアップゼミ】Regional Scrum Gathering Tokyo 2019フィードバック会レポート https://cyberagent.ai/blog/pr/5276/ Thu, 31 Jan 2019 04:00:32 +0000 https://cyberagent.ai/?p=5276 こんにちは!アドテク人事の鈴木です。
1月24日にアドテクスキルアップゼミのre:WorkゼミとLean/Agileゼミの共催で
「Regional Scrum Gathering Tokyo 2019 フィードバック会」を開催しました。

※スキルアップゼミ制度とは
 アドテクスタジオの独自制度で、興味関心のあるテーマの研究に一定の業務時間を
 割り当てることができ、現在は10のゼミが開催されています!
 re:Workゼミは、エンジニアマネジメント系ゼミの1つで
 「働く」ということに関わる色々なことを研究しています。
 Lean/Agileゼミでは、Lean/Agile 原理探求とプラクティス実践による
 プロダクトのアウトカム向上に取り組んでいます。

Regional Scrum Gathering Tokyoとは、スクラムの初心者からエキスパート、
ユーザー企業から開発企業、立場の異なる様々な人々が集まり、
世界最前線の情報から日本の現場での工夫まで多くの知見を得られる
日本最大級のスクラムカンファレンスです。
8回目となる今回は、1月9日~1月11日の3日間で開催されました。

フィードバック会では、RSGT2019に参加した三浦さん、茅野さん、陶山さんより発表がありました。
軽食を囲んで、質問もカジュアルに飛び交いながら進んでいきました。

まずは三浦さん。
今回、ボランティアスタッフとして参加しており、
メンバー内で情報の不均一性をなくしていくことの効果についてお話してくれました。


続いては茅野さん。
RSGTには何度か参加していますが、働き方とは・会社とは・サービスとは、と
年々スクラムの域を越えたトピックに広がり、非常に刺激的だったそうです。


最後は陶山さん。
成果を生み出す組織を作るために必要なこと・やめるべきこと、
エンジニアと営業の関係、経営層を動かすには、など、
実務に直結する話題がたくさんありました。

発表後の懇親会では、RSGT2019のワークショップでも紹介されていた
「心理的安全性ゲーム」にチャレンジ!
カードゲームですが勝敗を決めるものではなく、
チームで仕事を進める中での悪い状況に対する様々な反応を
体験することによって、チームにおける心理的安全性の意味と作り方の理解を
深めるものだそうです。

参考:https://confengine.com/regional-scrum-gathering-tokyo-2019/proposal/7840

悪い状況を作る役の方も、反応する役の方も迫真の演技!!
大ピンチな状況に、冷たい反応という組み合わせも・・・  😯 
ゲーム終了後は、それぞれの発言をどう感じたか振り返りを行い、
実際の業務ではどうなるか、よりよいチームを作るにはどうすればいいのか、など、
前向きな議論が起こりました。

学びや刺激をアウトプットすることで、より良い組織を作っていきたいという
ゼミメンバーの思いが伝わってくるフィードバック会でした。
好奇心がスキルを向上させ、さらにアドテクスタジオ全体のレベルアップにつながるような
サイクルが活発に回るよう、運営としても工夫を重ねていきたいと思いました。

アドテクスキルアップゼミの活動は、このブログやtwitterで
随時お伝えしていきますので、今後ともぜひご覧ください!

]]>
Management3.0 実践!プラクティス! https://cyberagent.ai/blog/tech/4263/ Thu, 20 Dec 2018 07:08:00 +0000 https://cyberagent.ai/techblog/?p=4263 こんにちは、re workゼミ生のshokotaです。

以前このブログでもお伝えしいる、Management3.0について、その後スタジオの一部メンバーで振り返り会を実施したり、実際に自分がその後実践できたことなどを今日はお話させていただこうと思います。

 

小さな実験をしよう!Management3.0研修を開催しました!

adtechstudio では2回研修を実施していますが、この振り返りは参加者が実施後各々でどんなことを試して
どんな成果があったのか、共有のための実施でした。
また、その後個人的に試してみたことなどもあり、
今回はプラクティスにフォーカスして、少し深掘りをしてみようと思います。

 

Personal Maps

Personal Maps

研修では、研修最初のメンバー同士のコミュニケーションツールとして使われました。
チームを立ち上げた際などの最初のメンバーのコミュニケーションツールとして使えるという点で、研修を受けたメンバーも、その後継続して利用している人が多かったです。
途中でJoinした際には自己紹介がわりに使っても良いですね。
また、絵にはしていないけれどマップを作る思考を使って、面接時に、候補者に自分を表すキーワードをあげてもらうなど発展した使い方をしている人もいました。

 

業務外な話にはなりますが、実は先日スタジオ内でエンジニア女子ランチがありまして、その際の自己紹介の代わりに使ったらとても面白くて盛り上がりました!
同じキーワードを持っているメンバーがいるとそこから繋がりが発展し、コミニュケーションのきっかけになって良いですね。

 

Moving Motivators

Moving Motivators

こちらもスタジオ内では人気でした。意外な人が同じカードを選んでいたり、、メンバーの新しい発見ができるツールでした。
業務ではみんなで使うというタイミングよりは、1 on 1など1対1の場面で継続して使っているメンバーが多いです。
面接時に使っている人もいました。どんな志向の持ち主なのか、今チームに求めている人材なのかを面接という短い時間の中で判断するのはなかなか難しいことです。面接の会話の出だしで使うと、その後の会話のやりとりがスムーズになるようでした。

Celebration Grids

Celebration Grids

KPTの代わりに振り返りをするツールとしての利用を研修時には考えていましたが、

KPTより複雑な仕組みのため、チームへの導入は難しい人が多かったです。
どちらかというと、KPTをしたあとでその内容を整理するのに使ったりすることの方が現実的でした。

Delegation Poker

Management 3.0 Product: Delegation Poker

一番実用的に使われていそうなツールです。実際業務過多になっている人は、大体がデリゲーションができていないことが多いです。
そういう場面での会話の流れでさらっと「デリゲーションしないとダメだよね」って単語が出て来るようになりました。 単語が先に一人歩きする、ってことはよくあると思うのですが、Management3.0の研修を受けてからはこの単語の威力が増した気がしています(笑)

 

KUDO Cards

Management 3.0 Products: Kudo Cards

感謝、賞賛をボードで伝える&他のメンバーも賛同できるという機能が簡単にできる点で使われているチームが多いです。私の所属しているチームでも、「サンクス ボックス」という箱を用意して、朝会でカードを発表、壁に貼る、という運用を数ヶ月してみたのですが、いつもは見えないメンバーの業務が見えたり、なかなかあえて言えなかった感謝が言えたりするのはとても良いですね。

最近は、上記アナログなカードから、Fringe81社のuniposを導入、移行しました。ベースの考え方としてKUDOと繋がるものがあると思うのですが、導入してよりチームの利用率が加速したように感じています。

https://unipos.me/ja/

12 Steps to Happiness

https://management30.com/practice/happiness-steps/
12 Steps to Happiness
登山をした、というチームがありました(笑)一緒に体を動かすということが良い効果を生んでいるのでしょうね。

こうしてみると弊社の福利厚生は、全てここに紐付くものがあると感じました。

  • 月に1回のピザの日 => 食事(健康じゃないかもしれないですが…気持ちは満たされるのできっと体にもいい)
  • 月に1回の懇親会、社内勉強会など => 社交
  • 年1回の休んでファイブ休暇 => 休息

自分のチームに足りていないステップが見つかり補うことで、よりメンバーのコンディションをよくすることができるツールだと思います。
https://nuworks.jp/ja/2017/10/02/importance-of-happy-employees/
こちらの記事にもありますが、日本は海外に比べ、幸せな労働者が少ない現状があります。確かに海外に比べると上記のようなStepが足りてないのだと感じます。最近の企業ではこの問題を打開する方法を模索しているように感じられますが、これが世の中的にも、法律的にも一般的になると嬉しいなと、日本で働く身として思いました。

Competency Matrix

Team Competency Matrix

振り返りにの時に、やって見たチームとこれから試して見たいけどなかなか進まないというチームがありました。

必要な能力項目をあげ出すのが一番難しいところで、そのハードルが高い印象を受けました。現在の運用稼働しているプロダクトよりは、何か新しい立ち上げのタイミングなどで利用する方が良いかもしれません。(実際研修では、「新しくカフェを作る」というシチュエーションでワークをやりました)

NikoNiko Calendar

ニコニコカレンダー自体は、結構古くから存在しているのでご存知の方、利用されている方も多いのではないでしょうか。

試してはみたけれど、継続が難しかった人が多く、スタジオ内ではあまりまだ継続して利用されている実績はないのですが、振り返りの時にでた話として、例えば期間限定のプロジェクトなど期間の決まった中で成果を出すときなどに、メンバーやチームのコンディションをキープするのには使えるかもしれません。

また、弊社は全社的にGeppoを利用しているので、そこで表現している天気マップが似たような働きにすでになっているのもあります。

http://blog.geppo.jp/blog/cyberagent_geppo_ca

Happiness Door

Happiness Door

こちらも試してみたが継続できない、試してみづらいという意見が振り返りで多かったです。
1,2時間のMTGで準備して記入する余裕がない、など。
会議室の扉にデフォルトであるといいかもしれません(笑)

 


以上、ざっと駆け足ですが各プラクティスの感想でした。
Management3.0自体勉強になることが多く、エンジニアに限らず、マネージャーだけでなくメンバーも感じて欲しい内容が多かったので受けてとても良かったと感じています。
プラクティスはあくまで一例ですが、これらのツールを使ってより自分たち組織やチームのメンバーが幸せになれると良いなと思います。

それではまた。

]]>
【イベントレポート】HCIゼミ、Yahoo!JAPAN Hack Day 2018で課題解決賞を受賞いたしました! https://cyberagent.ai/blog/pr/report_event/5075/ Tue, 18 Dec 2018 10:29:05 +0000 https://cyberagent.ai/?p=5075  

12/15-16に開催された日本最大規模のハッカソンイベントであるYahoo!JAPAN Hack Day 2018にHCIゼミのメンバーであるAI Lab 岩本、ロボットサービス事業部 鵜口が参加し、課題解決賞を受賞しました!

※HCIゼミ… アドテクスタジオには一定の業務時間を割り当てることができる、ゼミ制度があります!
今回はそのなかのHCIゼミ(Human Computer Interaction)の活躍!
HCIゼミはこれまでも論文投稿から学会やコンペへの参加、合同企業研究カンファレンスの共催など対外的な活動も含めて幅広く活動しています‥!

当日の表彰の様子がこちら 🙂


(1名は恥ずかしいとのことで、顔出しは控えています…!)

24時間という時間制限の中、何かしらの動くプロトタイプを作り上げ発表するハードなイベントですが、
大変な盛り上がりでした!

今回メンバーは「複数人と同時に会話ができるロボットシステム」を開発しました。

このシステムがあると、ロボットを使う順番待ちがなくなり、1台のパフォーマンスが向上するそうです!

(写真の黄色のエリアと緑色のエリアでしか聞こえない音をロボットが同時に話しています)

たしかに、何人もの相手をロボットがしてくれたら、順番待ち渋滞が緩和されますね 🙂 

後日、当日参加したメンバーが技術解説ブログを公開する予定です。
また、今回の「複数人同時接客ロボットシステム」は2019年1月に開催される第181回HCI研究会での発表を予定しているのでとても楽しみです!

]]>
【アドテクスキルアップゼミ】2018年度下半期★Semicon(ゼミコン)レポート★ https://cyberagent.ai/blog/pr/4879/ Fri, 16 Nov 2018 07:39:35 +0000 https://cyberagent.ai/?p=4879 皆さまこんにちは、
11月に入社しましたアドテク本部人事の鈴木・佐藤です!

今後はアドテクスタジオの魅力を
沢山お伝えしていきたいと思いますので、どうぞ宜しくお願いいたします!

さて今回は11月13日に行われた「Semicon(ゼミコン)-スキルアップゼミ成果発表会-」の
様子を各ゼミの魅力を含めてレポートします!

そもそも…

※スキルアップゼミ制度とは…?
 参加任意の勉強会とは異なり、大学における研究室やゼミのように
 1チームあたり4~7名程度でテーマに沿って研究活動を行う制度です。
 所属部隊に関わらず、興味関心のある研究テーマを軸にゼミ生が集まり活動しています。
 ゼミは業務時間の内、80時間の使用が許可されており、
 研究範囲としてはアドテク領域を対象とし、事業成果につなげることを目的に、
 スキルアップゼミを通して、通常業務では扱わない技術への挑戦や
 アドテクノロジー知識の向上への取組みを積極的にサポートしてます!
 
 

今期の発表会では7つのゼミが登壇しました!

(1)エンジニアマネジメントゼミ(ゼミ長:西部さん)

まずはエンジニアマネジメントゼミ・ゼミ長の西部さんより発表がありました!

本ゼミでは「エンジニアリングマネジメントとは?」「どんな工夫ができるのか?」

「開発責任者にはどんな能力が必要なのだろう?」など、

様々な文献や自身の体験談を元に研究と実践活動を行っています。

 

活動成果のひとつとして、今年の夏に作成された「開発責任者ハンドブック」は

非常に好評で、7月に開催された配布会では約50人もの方々が手にしました!(写真右)

(2)リーン/アジャイル開発プロセスの研究(ゼミ長:吉田さん)

ゼミ長の吉田さん、陶山さん、後藤さん3人からそれぞれ発表がありました。

まずは吉田さんからで、Scrum of Scrumsというテーマで、

吉田さんが所属するチームのケースをまとめてくださいました。

今回の研究を通して、チームの拡張の方法としてScrum of Scrumsは有効である、

ただし、結束の手段であるかというとそうではなかったという結論が出ました。

陶山さんからはAgileに関して、改めて「アウトプット(成果物)からアウトカム(成果)」を提言。

課題感を持ち続けて、探求している様子は私たちも非常に刺激をうけました!

後藤さんからは、後藤さんが所属するAIRTRACKでLeSSを導入した話として発表がありました。

LeSSとは「Large-Scale Scrum」のことだそうです。

上手くいった点もあったものの、フレームワークを利用する際はよく検討してから

導入をするべきだという結論がありました。

(3)re:Workゼミ(ゼミ長:三浦さん)

次は「働く」に関すること全部が研究対象という三浦さんがゼミ長を務める「re:Workゼミ」。

チーム分析、偏見の調査、Job Description作成 、Management3.0研修実施等活動してきた中で、

全社イベントとして「Engineer LeaderShip Meetup」を

企画・実行した際のことを発表してくれました。

「Engineer LeaderShip Meetup」とは、アドテクスキルアップゼミと

弊社メディア事業部のゼミとコラボして運営をしたエンジニアマネジメントのミートアップです。

運営をしていく上で、本番〇か月前にやること、〇日前にやることなどのToDoから、

単純にToDoを行うだけでなく意識するポイントやコツの伝授がありました。

直近、他ゼミでも全社を横断しての取り組みやコラボが増えてきているので、

聞いている私たちにとっても非常に興味深いお話になりました。

(4)ビジネスモデル図解ゼミ(ゼミ長:菅原さん)

ビジネスモデル図解ゼミ ゼミ長の菅原さんは、なんとシンガポールからの中継での参加でした!

ビジネスモデル図解ゼミは、ビジネスモデル図解を通じて、

複雑なサービスを理解し新規事業案を考えてきました。

アドテク本部のプロダクトや世界中のユニコーン企業等

いくつかのビジネスモデルを図解していくことにより、

成果として社内のスタートアップチャレンジ企画に応募ができたということでした。

(5)HCIゼミ(ゼミ長:岩本さん)

HCIとは、Human Computer Interactionの略のこと。

つまり、HCIゼミはコンピュータと人間の相互作用について研究をしています。


ゼミ長の岩本さんからは、SNSのプロフィール写真と対面した際の

ギャップを埋める方法やロボットが代弁してくれる婚活パーティーなど、

身近な場面でのHCIの応用について発表がありました。
現在は1台のロボットで複数の人を接客する方法について研究を進めているようです。
ロボットが身の回りに当たり前のようにいる世の中も、もうすぐ実現するのかもしれません!

(6)アドテク自然言語処理ゼミ(NLP)(ゼミ長:馬場さん)

ゼミ長の馬場さんから、「SNS横断プロフィールデータの収集」「低頻出語の分散表現獲得の

手法検討」「タスク指向型対話システムの自動構築」の3点について発表がありました。

SNSのプロフィールデータや普段何気なく使っている言葉についての研究が

ここまで奥深いものなのかと驚きました!

タスク指向型対話システムの自動構築では、人間同士の対話のログから

自律的に学習するチャットボットを目指しています。

人間の会話や振る舞いを理論に落とし込むことはとても大変で、

課題の解決に向けて、これからも研究を進めていくそうです。

(7)画像処理・会話データ研究ゼミ(ゼミ長:大田さん)

ラストを飾る画像・会話の研究を行っている画像処理・会話データ研究ゼミからは、

ゼミ長の大田さんからGAN(Generative Adversarial Networks(敵性的生成ネットワーク))を使った

画像生成や、広告クリエイティブとしての画像生成の成果の発表でした!

 

以前PR BLOGでもご紹介しているコンピュータビジョンの国際会議「CVPR 2018」で

開催されたビジュアル広告理解のワークショップ「ADS」での技術コンペ1位通過は

実は今回のゼミ研究の一環でした!!

CVPR はコンピュータビジョン分野において ICCV, ECCV と肩を並べるトップカンファレンスなのです!

(https://cyberagent.ai/archives/4135)

 

ゼミ制度については知っていましたが、

ゼミ長、ゼミメンバーのみなさんが自分で設定した研究テーマについて、

こんなにも意欲的に研究し、活動している姿に感動しました!!!

今回も、幅広い分野の研究発表がずらりと並びました。

発表者の皆様、参加者の皆様、ありがとうございました。

2018年10月~3月のスキルアップゼミもすでに開始しており、

今期は量子アニーリングや、Rust、オルタナティブデータなど新たなテーマで3つがスタート!

合計10ゼミが活動していきます!こちらも随時ブログでご紹介していきます!

]]>
【登壇お知らせ】IT人材ラボDay 2018 Summer に、LODEO開発責任者の西部が登壇致します! https://cyberagent.ai/blog/pr/skill_up/4564/ Tue, 21 Aug 2018 10:35:15 +0000 https://cyberagent.ai/?p=4564 こんにちは、技術広報の田爪です。
本日は、当社エンジニアの登壇のお知らせです!

株式会社翔泳社 IT人材ラボ編集部が主催する、IT人材ラボDay 2018 Summer に、
スマホ特化型動画アドネットワーク「LODEO」の開発責任者を務める
西部が登壇致します!

▼公式ページはこちら
IT人材ラボDay 2018 Summer 


▼講演タイトル
現場でのエンジニアタレントマネジメント  信頼関係構築への道のり

▼詳細
西部は、スマホ特化型アドネットワーク「LODEO」の開発責任者を努めており、
日々エンジニアマネジメントを実践しつつ、
アドテクスタジオの社内ゼミ制度※を活用し、「エンジニアリング・マネジメントゼミ」を実施。
主にピープルマネジメントについて研究を行っています。

 ※好奇心とチャレンジがスキルを磨く。「アドテクスキルアップゼミ」が生み出すカルチャーとは

エンジニアのタレントマネジメントの観点から、その過程を紹介すると共に、
そこから得られた現場マネージャーが持つべきマインドセットと実践についてお話しいたします!

どうぞご参加ください!

公式サイトはこちら→ IT人材ラボDay 2018 Summer

]]>
小さな実験をしよう!Management3.0研修を開催しました! https://cyberagent.ai/blog/tech/4189/ Wed, 08 Aug 2018 02:45:14 +0000 https://cyberagent.ai/techblog/?p=4189 こんにちはアドテクスタジオのエンジニアマネジメント系ゼミの1つ、re:Workゼミでゼミ長をやっている三浦です。

先日行われた「開発責任者ハンドブック配布会&Engineering Management Meetup」に続き、
Management3.0の研修を開催してきました。

開発責任者ハンドブック配布会&Engineering Management Meetupの様子は こちら からご覧いただけます。

マネジメントの話をTechブログに?と思う方もいるかもしれませんが、「マネジメントも技術」と尊敬する先輩が言ってましたので、堂々とアウトプットしてみようと思います。

re:Workゼミってなに?

re:Workゼミは「働く」ということに関わる色々なことを研究するゼミです。
かなり広い範囲を研究対象としており、これまでには「採用」「ピープルアナリティクス」「マネージャー」「チーム」「偏見」といった内容を取り扱ってきました。

ちなみに元ネタはGoogleが提供しているサイトなので、是非一度のぞいて見てください。

英語サイトはこちら
日本語サイトはこちら

Management3.0って?

研修の内容をお伝えする前に、Management3.0がどんなものかを整理しておこうと思います。

公式ページ には以下のように書かれています。

Management3.0は「人ではなく、システムをマネージするべき」という思想のもと、
Jurgen Appelo氏によって出版された本に基づいたクリエイティブ企業が実績を挙げるための進歩的なアプローチです。

 

難しいですね。

私はManagement3.0はマインドセットとプラクティスがまとめられたものだと思っています。
3.0があるということは、1.0 も 2.0 もあります。

それぞれのマインドなどを簡単に僕の解釈でまとめると

Management1.0

  • コマンド&コントロールしようとする
  • ヒエラルキー型の組織構造になる
  • 人を交換可能な部品として扱う状態になる

Management2.0

  • 人は重要であるという認識になる
  • サーバントリーダーシップの重要性を認識する
  • マインドは良いが、組織構造ややり方に失敗している状態
    • 「能動的に行動しろ!」と命令するみたいな感じ

Management3.0

  • コミュニティや都市のように全員が部分的な責任を負う状態
  • 目的のために人ではなくシステム(やり方)をマネジメントする
  • 能動的に行動できる組織構造や仕組みを作る

といった感じだと思います。
他にも色々と要素はあると思うのですが、ここでは割愛します。

研修の様子

今回の研修は2日間で参加者16人で行いました。

参加者の中にはマネージャーとして業務を行なっているメンバーもいれば、開発チームでバリバリコードを書いているメンバーもいますので、実に多様な視点のある研修となりました。

現在のManagement3.0では8つのモジュールが定義され、多くのプラクティスが提案されています。
研修内容は 2日間Management 3.0ワークショップ に記載されているものを実施しました。

 

このブログでは、いくつかのモジュールとプラクティスをピックアップしてお伝えします。

パーソナルマップ

研修は **パーソナルマップ** のプラクティスを利用しての自己紹介から始まりました。

同じアドテクスタジオで働くメンバーが集まったわけですが、
普段は別のプロダクト開発に携わっていて関わらないメンバーもいますので、
非常に有益な時間になりました。

パーソナルマップはマインドマップで自分のことをまとめていくものです。
「趣味」「居住地」など一般的なものから「夢」「重視する価値観」など、
普段はまず聞くことのない情報をシェアできるのが面白いと思いました。

とはいえ、これだけであれば割とありがちなコンテンツです。

今回の研修ではいくつかのチームに分かれて、
互いの共通点を見つけてチーム名をつけるというワークを行いました。

このワークの面白いところは、
パーソナルマップ上に記載されたものだけでは、共通点が見つからないかもしれないというところです。
その場合は、共通点を探すために会話をする必要が出てきます。

この会話の中で相手が何に興味があるのか、どんな価値観を持っているのか知ることができます。

実際にいくつかのチームでは共通点が見つからず苦労していたようですが、
そういうチームの方が得をするワークだったように思います。

面白いワークでしたので、チームビルドの初期やタスクフォース的なチームを編成するときに試してみると良いのではないでしょうか?

デリゲーションとエンパワーメント

続いては、デリゲーションとエンパワーメントです。

Management3.0では、個人は不完全なメンタルモデルや知識しか持っていないので、
コントロールはシェアするべきという考えを提唱しています。

例えば、マネージャーが業務の全ては理解していない(できない)というのは普通の話だと思います。
なので、適切な人が判断できる環境にした方がより良い状態になるという考え方です。

Management3.0のプラクティスで権限移譲を行いたい時に有用な デリゲーションボード というものがありますので、気になる方は調べてみてください。

ここでは、デリゲーションボード以外の学びをお伝えしようと思います。

自己充足的予言の罠

自己充足的予言(self fulfilling prophecy)とは、
根拠の無い見立てや思い込みを持つと人は無意識にその予言に沿った行動をとるために、
予言が現実のものとなる現象を指す言葉です。

特にマネージャーは「人の態度は、自分がどう扱われるかによって変わる」ということを意識する必要があると思います。

セルフコントロールできない集団として扱うと、彼らはセルフコントロールしようとせず、
マネージャーはさらに自分でどうにかしなけばと躍起になるという
負の連鎖を生んでしまいます。

マイクロマネジメントの罠

自分が管理した方が早いという理由から、権限移譲を行わないケースがあります。
この時に意識しないといけないのは、権限移譲を行ってもすぐには成果が出ないケースが多いということです。
ある程度の時間が必要となります。これを投資として捉えることがマネージャーに求められるように思います。
これはとても勇気のいる判断だと思いますが、始めなければいつまでもできるようにはなりません。

これらは、組織、ビジネス、メンバーなど、いろいろなコンテキストに依存するものなので、
一律でこうすれば良いというものではないのだと思います。

基本として頭に入れながらも、自分たちのコンテキストを分析して、
どのようにするかを考えることが非常に重要だと思います。

成功と失敗

続いては、成功と失敗です。

セレブレーショングリッド のプラクティスを使ってワークショップで振り返りを行いました。

Management3.0では「実験して学ぶことにこそ一番価値がある」としています。

そして、実験を促進する(何をして、何を学んだかを可視化する)仕掛けとして非常に面白いやり方だと思います。

セレブレーショングリッドでは、縦軸は【成果】を表し、成功と失敗に分けます。横軸は【行動】を表し、間違いと実験と習慣に分けています。

それぞれのブロックは以下のような意味になります。

  • 間違いを実行すると多くの場合失敗しするが、全てが失敗するわけではなく、時に成功する
  • 習慣を実行するとほとんどのケースで成功するが、時に失敗する
  • 一番重要な行動は実験で、成功もするが失敗もする

それぞれの行動結果のブロックの下には【学習】の表があり、実験の部分の面積が大きくなっています。

これは、

  • 習慣を実行しても、間違いを実行しても、学びは少ない
  • 実験を実行し、結果を見た時に学習が最も大きくなる

ということを表しています。

セレブレーショングリッドのポイントは上手く行った(成功)したか否かではなく、どれだけ 学び があったかを重視するところです。これによって学習が促進されます。

ただし、実験を実行するためには安全に失敗できる環境を作る必要があります。

実験を行うために必要なマインドをManagement3.0では以下のように表現しています。これらは学習する上で非常に重要なことなので、日々実践したいと思います。

  • 新しいことに挑戦しましょう。そのうちいくつかは失敗をすることを想定します。そのため、実験と言うラベルをつけて周囲に理解してもらいます。
  • 失敗を生み出して生き残りましょう。それは日常的なことです。
  • そして、あなたがいつ間違えたかを忘れずいることです。間違いを繰り返すのではなく実験することです。

グラフィック

講師のステファンさんの提案で全員で綺麗なグラフィックの書き方を教えてもらいました。
ほぼ全てのメンバーが初めて描いたのですが、最後にはびっくりするほど綺麗なグラフィックが出来上がっていました!

研修をどうやって生かすのか?

こういった研修を行なった時によく聞くのが、
研修を行なってそれ以降何もしない、よく言えば個人の自主性に任せるような対応をしてしまうということです。

私自身も過去に経験があるので、今回は色々な工夫をしてみましたのでご紹介しようと思います。

研修参加メンバーの選定

今回の研修は16名の参加者がいたわけですが、
全員が同じチームで働いているわけではありません。

なので、参加者が研修から帰った時に
チームに2人以上の受講者がいるようにメンバーを選定しました。

もし、チームで試してみたいとなった時に自分一人だけの状況と
仲間がいる状況ではできることが違います。
(やるかやらないかは、自由です)

研修後に振り返る場を作る

研修とは別に参加者で振り返る場を作りました。
研修中はわかったような気がしても、実はきちんと理解できていなかったり、
解釈に戸惑っていたことがあったりするものだと思います。

結果的にその場では、「実際に自分のチームで取り入れるにはどうしたら良いか?」
といった話にも発展し、全員で意見を出し合う場に発展しました。

研修内容を周りに公開する

参加メンバーのアイデアで研修時に講師の方が書いたポスターをオフィスに張り出しました。
「興味があれば研修参加者に聞いてください!」と全体告知も行いました。

意外と足を止めて見てくれる人もいるので、会話や実験のちょっとしたきっかけになるのではないかと思っています。

コピー機の隣に…

オフィス内に…

まとめ

今回Management3.0の研修を受けてみて思ったのは、
冒頭に書いた通りManagement3.0は基本となるマインドセットであり、
各組織のコンテキストを分析して、その組織にあった形で適用する努力が一番大切だと感じました。

そして、小さく、失敗しても大丈夫な規模で実験して計測していくことが、
良い環境を作るために必要なのだと思いました。

また、少しでも実施しやすい環境を作っていくことで、
一番多くの学びを得ることができるのだと思います。

今も小さな実験をしようと計画中なので、
またこういった形でアウトプットできればと思います。

 

]]>