2004年11月26日

「欠点克服停滞率」OO百韻

「Ryo.Matsudaのほろ酔い徒然」の11月24日の日記「人のアサイン」に面白い話があった。

* Aさん(スキルA=100点、スキルB=80点、スキルC=20点)
* Bさん(スキルA=30点)

次の二つの仕事がある場合、どうアサインするか?

* スキルAが必要な仕事
* スキルCが必要な仕事
第一印象で答えれば、Aさんのスキルの合計点は200点なのに対して Bさんのスキルは高々30点なので、Aさんがすごすぎだとしても Bさんは明らかに半人前に見受けられる。 半人前の人間はベテランの下に付けるのが無難だろうということで、 Bさんを単独で仕事にはアサインしないというのが考えられると思う。 するとAの仕事もCの仕事も両方とも、Aさん中心+Bさん補佐と いうアサインメントはありがちなやり方ではないかと思う。

Cの仕事はどちらにアサインしても20点とか30点とか しかできないのだから、そういう仕事は受注しないという選択子も 十分考慮にいれるべきなのかもしれない。 実際問題としてはこれが正解だろう。 そうやってたらいまわしにされた仕事は私のようなところにまわってくるのだが。

上の答は、どちらかをどちらかに割り当てるといったデジタルな ものではなく、アサインメントが按分できることを前提にしている。 それではどのような比率に按分するのが最適解なのだろうか。

AさんをスキルAを必要とする仕事に比率rで割り当て残りはBさんにやらせるとし、 同時にAさんとBさんの余力をスキルCを必要とする仕事に割り当てるとする。 すると、

スキルAを必要とする仕事の合計点数=100r+30(1-r)
スキルCを必要とする仕事の合計点数=20(1-r)+0r
となるから、二つの仕事の合計は単純に足して50r+50となる。 rは0以上1以下なのだから、この合計を最大にするのはr=1のときである。 つまり、AさんをスキルAを必要とする仕事に全力投球させ、 Bさんにはなにもさせない(いずれは首にする)という解釈になる。

しかし、人間というものは向上するものである(逆もあるが)。 よって、各人とも仕事が終わるとスキルが上がるとしよう。 テレビゲームでいえば戦闘が終わると経験値をゲットするようなものだ。 ただAさんのスキルAがすでに100点なので、 スキルが青天井だと面白くないからちょっと凝ったシステムを考えてみる。 仕事が終わって向上するスキルは100点までの足りない分が 仕事の点数に比例して減るとしてみよう。 例えば、AさんをスキルCを必要とする仕事に按分率50%でアサインした場合、 その仕事の点数は10点なのだから、AさんスキルCの100点までの 残り80点のうち10/100が減って72点になり、つまりAさんの スキル20点が28点に向上するとする。 こうやって何回か仕事をこなしていけば、 最初は会社にとってリスクではあるが、 メンバーのスキルがだんだんと向上していくのでうれしいという ことにはならないだろうか。検証してみよう。

しかしながら、このモデルには致命的な欠陥があって、 BさんはいつまでたってもスキルCを向上させることができない。 その理由は、初期条件のBさんのスキルCが0点であることに起因する。 よって、かなりインチキではあるが、 BさんのスキルCは最初は例えば1点とか10点とか、0点以外の 点数をもっていたのであると設問を変更させてもらおう。

まずはこのモデルのアイディアをグラフの形にしてみた。 /yuntanach/blog/000093_1.gif 話を単純化して、単独で仕事をしたと限定して考えた時の スキルCの点数が向上していく様子がプロットされている。 グラフは縦軸がスキルの点数、横軸が仕事の反復回数で、上側の折れ線から順に、90、50、30、10、5、1、0.1の初期値で始まっているものである。 Bさんは最初スキルCの点数が30(上から3番目の折れ線)であるが、 仕事をこなす事7回目にはほぼパーフェクトなスキルを身につけていることがわかる。 また、同様に初期値が1のほとんど素人同然の人の場合(下から2番目)だとパーフェクトなスキルを身につけるまで 10回以上の仕事をこなす必要があることがわかる。 この場合、3~4ヶ月かかる仕事なら一人前になるまで実に3年の年月が必要ということになる。 私の見聞きした範囲でほぼ素人同然の人でも1年後にはいっぱしのプロジェクトメンバーとしてそれなりの仕事を任されてしまっている現状を考えるに、 3ヶ月で終わるような小さな仕事だと、この3年という年月はちょっと長いかもしれない。 このような極端な例はおいていくにしても、 自分を振り返って新技術には日頃から唾をつけておいていざというときのために 最低でも初期値0.5はクリアしたいところである。

ここで、人物を表すA、Bとスキルや仕事を表すA、B、Cが紛らわしいので、 人物はa、b、スキルをu、v、wと表すことにす。 またスキルと仕事はとりあえず同一視して、スキルuを必要とする仕事も 仕事uと表すことにする(実際には仕事は複数のスキルを必要とするだろう)。 まだ、n回目の仕事が終わったときのaさんのスキルuの点数をS_{au}(n)と表すことにしよう。 初期値n=0の場合がもともとの設問となる。

すると、n回目の仕事uとwの点数J_v(n)J_w(n)は、aさんを仕事uにアサインする按分率をr(n)と すると次のようになる。

n回目の仕事uの点数=J_u(n)=S_{au}(n-1)r(n)+S_{bu}(n-1)(1-r(n))
n回目の仕事wの点数=J_w(n)=S_{aw}(n-1)(1-r(n))+S_{bw}(n-1)r(n)
そしてこの仕事をこなした後、各人のスキルは次のようになる。
n回目の仕事の後のaのスキルuの点数=S_{au}(n)=S_{au}(n-1)+(100-S_{au}(n-1))\large\frac{J_u(n)}{100}
ここで、式にいちいち満点を表す100が入ってくるのがうっとうしいので、 またもや設問を変えて、点数は0点~100点ではなく、0~1の値をとるとする。 すると、上記の各人のスキルの式は次のようになりすっきりする。
n回目の仕事の後のaのスキルuの点数=S_{au}(n)=S_{au}(n-1)+(1-S_{au}(n-1))J_u(n)
同様にメンバーa、b、スキルu、wのそれぞれについて点数値を 列挙すると次のようになる。
S_{au}(n)=S_{au}(n-1)+(1-S_{au}(n-1))J_u(n)
S_{bu}(n)=S_{bu}(n-1)+(1-S_{bu}(n-1))J_u(n)
S_{aw}(n)=S_{aw}(n-1)+(1-S_{aw}(n-1))J_w(n)
S_{bw}(n)=S_{bw}(n-1)+(1-S_{bw}(n-1))J_w(n)
これらの式に仕事の点数Jを代入すると次の式が得られる。
S_{au}(n)=S_{au}(n-1)+(1-S_{au}(n-1))(S_{au}(n-1)r(n)+S_{bu}(n-1)(1-r(n)))
S_{bu}(n)=S_{bu}(n-1)+(1-S_{bu}(n-1))(S_{au}(n-1)r(n)+S_{bu}(n-1)(1-r(n)))
S_{aw}(n)=S_{aw}(n-1)+(1-S_{aw}(n-1))(S_{aw}(n-1)(1-r(n))+S_{bw}(n-1)r(n))
S_{bw}(n)=S_{bw}(n-1)+(1-S_{bw}(n-1))(S_{aw}(n-1)(1-r(n))+S_{bw}(n-1)r(n))

ちょっとめんどうだが、これらの式は次のように変型できる。 ここで、式がごちゃごちゃしてきたので、 n-1で一回前のアサインメントを表すのではなく、 プライム'をつけることで前回を表すようにした。

1-S_{au}=\{(1-r)(1-S_{bu}^\prime)+r(1-S_{au}^\prime)\}(1-S_{au}^\prime)
1-S_{bu}=\{(1-r)(1-S_{bu}^\prime)+r(1-S_{au}^\prime)\}(1-S_{bu}^\prime)
1-S_{aw}=\{r(1-S_{bw}^\prime)+(1-r)(1-S_{aw}^\prime)\}(1-S_{aw}^\prime)
1-S_{bw}=\{r(1-S_{bw}^\prime)+(1-r)(1-S_{aw}^\prime)\}(1-S_{bw}^\prime)
まだ、ごちゃごちゃしてみずらいので、1-S_{au}D_{au}と置き換えてみよう。
D_{au}=\{(1-r)D_{bu}^\prime+rD_{au}^\prime\}D_{au}^\prime
D_{bu}=\{(1-r)D_{bu}^\prime+rD_{au}^\prime\}D_{bu}^\prime
D_{aw}=\{rD_{bw}^\prime+(1-r)D_{aw}^\prime\}D_{aw}^\prime
D_{bw}=\{rD_{bw}^\prime+(1-r)D_{aw}^\prime\}D_{bw}^\prime
かなりすっきりとしてずいぶんきれいな式になった。

このD_{au}=1-S_{au}はなにを意味するのかというと、 1つまりスキルがパーフェクトな状態から現在のスキルを引いたわけだから、 自分のスキルで今後向上する余地、 言い換えると現在の自分の欠点を表していると考えることができる(前提として、だれもがパーフェクトな存在になることを目指しているとしている。 現実はそうではなく、自分は不完全なまま少ない労力で なるべく多くをゲットしようと腐心するのが大多数であるが)。

最終的には各DをJの式に代入して仕事の点数の合計を比べられるように なれば良いのだが、その前にこの式をもう少し掘り下げてみよう。 まず両辺をD^\primeでわって、右辺から右側にあるD^\primeを 取り除いてみる。 本当はこの漸化式をnについて解きたかったのだが、 難しいので断念した。 で、急遽比率を調べてみることにしたわけである。

\large\frac{D_{au}}{D_{au}^\prime}=(1-r)D_{bu}^\prime+rD_{au}^\prime

\large\frac{D_{bu}}{D_{bu}^\prime}=(1-r)D_{bu}^\prime+rD_{au}^\prime

\large\frac{D_{aw}}{D_{aw}^\prime}=rD_{bw}^\prime+(1-r)D_{aw}^\prime

\large\frac{D_{bw}}{D_{bw}^\prime}=rD_{bw}^\prime+(1-r)D_{aw}^\prime
この式は、前回の欠点に対する今回の欠点の割合を示している。 この値が0に近付くほど多くの欠点が克服され、 1に近付くほど欠点の克服が停滞してそのままになっていることを表している。 もしかしたら1を越えてしまい、欠点が増えるようなこともあるかもしれない。 これを、ちょっと長いが、欠点克服停滞率と名付けよう。 ちなみに、 1からこれを引いて1-\frac{D}{D^\prime}=\frac{D^\prime-D}{D^\prime}を計算したならば、 それは停滞しなかった分、つまり、前回の欠点に対する克服した欠点の比率を表すので、それは欠点克服率といってもいいだろう。

実はこの欠点克服率はだいたいスキルの曲線と同じような曲線を描くということがわかっている。 なぜなら、r=0のときを考えればD_{au}(n)=D_{au}(0)\prod\limit_{i=1}^n{D_{bu}(0)^2^iとなるので、どういう初期値で始めようともDが0以上1以下である限りはnが大きくなればなるほど0に近づくからである。 欠陥Dがそのように解けるなら、欠点克服率は1-D_{bu}(0)^2^nとなる。 これと上のグラフを見比べてみて欲しい。 二乗がある分だけグラフが下側に歪むが 二乗の部分以外はほぼ同じような形をしたものになるはずだ。 本来なら一般のrについて論ずるべきだが、 それを説明するには漸化式を完全に解かねばならず、 いずれパワーのありあまっているときにでも再チャレンジしてここを埋める ことにして、今回はお茶を濁す(実はこの部分が重要だったりするのだが)。

この式は一見してちょっと常識からずれた変な部分があるように見える。 例えば、aさんならこう考えるであろう。 「自分の欠点の克服の度合が、なんであんな半人前のb君の欠点に依存するんだ?」

この疑問を追及するには、まず、rと欠点克服停滞率の関係をよくみきわめなければならない。一般性を失わない範囲で、仮定としてaさんのスキルuはb君のそれより高いとしてみる。\frac{D}{D^\prime}はrについてまとめると次のようになる。

\large\frac{D_{au}}{D_{au}^\prime}=(D_{au}^\prime-D_{bu}^\prime)r+D_{bu}^\prime

\large\frac{D_{bu}}{D_{bu}^\prime}=(D_{au}^\prime-D_{bu}^\prime)r+D_{bu}^\prime

\large\frac{D_{aw}}{D_{aw}^\prime}=(D_{bw}^\prime-D_{aw}^\prime)r+D_{aw}^\prime

\large\frac{D_{bw}}{D_{bw}^\prime}=(D_{bw}^\prime-D_{aw}^\prime)r+D_{aw}^\prime
aさんのスキルuの欠点克服停滞率はrが小さいほど小さくなる。 aとbのスキルに差が大きいほど、スキルの低い方を比重を大きくして アサインしたほうが、最終的にメンバー全員のスキルの延びは停滞が 少ないことを表している。 逆にスキルの差があまりない場合は、rをどう調節しても大した違いは生じない。 また、b君のスキルuの欠点克服停滞率はaさんのそれと同じになる。 各人が別個にスキルを伸ばすのではなく、 チームとしていっしょに伸びることを示唆している。 aさんとb君はスキルの向上に関して運命共同体なのである。 運命共同体、これがaさんの疑問に対する答だ。

ひとつ残念なことに、このモデルではrの次数が1次なので、 r=0のときが最適解、r=1が最悪解ということになり、 当初前提にもってきたアサインメントを按分する意味が 失われてしまっている。

最後に、いよいよJに代入して会社としてトータルで何点の仕事をこなせる ようになるかを考えてみよう。J_uJ_wを足してDについて表したらどうなるかみてみよう。

\begin{eqnarray}J_u+J_w&=&(1-D_{au}^\prime)r+(1-D_{bu}^\prime)(1-r)+(1-D_{aw}^\prime)(1-r)+(1-D_{bw}^\prime)r\\&=&r+(1-r)+(1-r)+r-(rD_{au}^\prime+(1-r)D_{bu}^\prime)-((1-r)D_{aw}^\prime+rD_{bw}^\prime)\\&=&(1-\frac{D_{au}}{D_{au}^\prime})+(1-\frac{D_{bw}}{D_{bw}^\prime})\end{eqnqrray}
式の最後では、仕事の点数の総合計は前回の仕事からの欠点克服率の合計になることが判る。 意外にも簡単な式になったので、当の本人もびっくりである。 下らない計算ミスなどしていなければいいのだが…。 この式の解釈は、最初はトータルの点数は悪かったとしても、 経験を積めば積むほどそれに応じて点数も上がるということになる。 上のグラフでは単独で一つの仕事をした場合の話だったが、 チーム全体でも同様のことが起こる。

要するに、

  • 欠点の多い部分にこそ戦力を投入せよ
  • 直近の利益より、長期的視点にたて
  • 個々のスキルはみんなで一丸になって伸ばそう
  • 何度でも反復して精進することが大事
  • さすれば、いつかはパーフェクトな存在になれれる

ということだ。 学校などで、「苦手科目の克服こそが勉強の王道」などとできの悪い生徒に 渇を入れる熱血教師とかが言いそうな内容である。

rの按分については、Ryo.Matsuda氏の日記だと、r=0の場合とr=1の場合が 挙げられている。r=0の場合とは、AさんをスキルCの仕事に割り当て、 BさんをスキルAの仕事に割り当てた場合に相当し、r=1の場合とは、 AさんをスキルAの仕事に割り当てもう一方の仕事は事実上断わる というものであった。 ちなみに、仕事の点数はそれぞれ合計50点と合計100点になる。 だから後者のr=1のケースを採用したほうが、 会社としてはトータルでは高い点数の仕事をしたことになる。 その場合、Aさんはいつでも100点の仕事をし、 会社としては二つの仕事で合わせて100点平均して50点の 仕事を延々と行ない、 おそらく首になったであろうBさんはいつまでたっても30点のスキルしかもてず、 自分よりスキルの低い人ばかりのところにたどりつくまではいつまでたっても日の目をみれず転職を繰り返すというのがこのケースの解釈である。

一方、r=0のケースでは、最初は二つの仕事で合わせて50点 平均して25点の結果しかだせなかったが、 同じ仕事を何回も行なううちにだんだんとちょっとづつ良い点数で行なえる ようになり、十分時間をかければ合わせて200点平均して100点の仕事を こなせるようになる。 メンバーにスキルが低い人がいて、 たとえ点数の低い仕事しかできなかったとしても、 しばらくの間はおたがい融通しあって辛抱強く仕事をこなしていきけば、 いつかは必ずむくわれるという非常にハッピーエンドな世界が このモデルの結論である。

このモデルでは、前提として仕事をするたびに欠点が克服されるという 非常に楽天的な仮定が根底にあった。 しかも、欠点が多い人ほど克服する分が多いというきわめて乱暴な 条件でつくられたモデルである。 しかも、最も奇妙キテレツなこととして、 チームのだれかがある割合で欠点を克服しスキルを向上させると、 他のメンバー全てが同じ克服率を達成できてしまうことだろう。 向上したスキルのレベルは人それぞれだが、 仕事が終わるたびに同じ割合だけ欠点が克服されていくのだ。 これはまったくもっておかしい話に聞こえる。 現実の世界はそういう具合いに簡単なものではないので、 そういう意味でここでの結論は数字遊び以外のなにものでもないだろう。

上で欠点克服率の漸化式は一般のrについては解かなかった。 もしかすると、漸化式を完全に解き、 毎回仕事をアサインするたびにrを変えるなどすると、 より現実的な解が得られるのかもしれない。 こういうところにもモデルが現実的でないように感じる原因がある。 また、自分のスキルが相手の欠点克服に依存するのは、 仕事が終わってスキルの点数を増加させるときに、 r=0のときなど実質上自分が関与していない仕事の場合でも 自分の経験値に加えてしまうあたりが原因にあるのだろう。 このあたりは改良の余地がたくさんある。 しかし、この単純だがあまり現実的でないこのモデルが、 社会主義的な結論に導かれたのはある意味示唆的であるとも思う。

ちなみに、十分に検算をしているとはいい難いので、 どこかで下らない計算ミスをしていて、 そのため結論が全く間違ったものである可能性もかなりある。 その場合は悪しからずご了承願いたい。

この記事のトラックバック用 Ping URL: http://www.mediaware.jp/blog/mt-tb.cgi/96
「欠点克服停滞率」へのコメント  コメントを書く
「欠点克服停滞率」へのトラックバック
Title: 欠点克服停滞率(改)
Excerpt: 前回の「欠点克服停滞率」では その時の都合で条件を限定したモデルを作った。 その結果は主観的に実状とは即しているとは言いがたいようなものであった。 少なくとも自分としては
From: 祈祷連歌
Date: 2004.11.29
コメントを書き込む









メールアドレスを記憶する?


この記事の評価
悪い あんまり 普通 まあまあ 良い





@@@@