ワードエンベディングモデルしか触らないNLPエンジニアとしての仕事の紹介

この記事は、自然言語処理 Advent Calendar 2019の16日目の記事です。
https://qiita.com/advent-calendar/2019/nlp

この記事では、私が勤めるLuminosoという会社及びその技術、そこで私がどのような仕事をしているか、ということを紹介します。

どんな会社なの?

アンケートや口コミなどのデータを解析して顧客の声や従業員の声を解析したり、業務報告書などを解析してあいまい検索を行うようなサービスを提供するボストン発のMITスピンアウトのスタートアップです。

もう少しNLPの技術者向けに説明すると、セマンティック辞書に基づいて補正したワードエンベディングベクトルモデルを、ドメインデータでfine-tuningすることで、少量のデータで前処理込でユーザ毎のモデルを高速に作成するサービスを提供している会社です。

何をやっているの?

ソリューションアーキテクトとして、会社製品の活用についてコンサルティングしたり、出力結果を活用するツールを開発してお客様に提供したりしています。

自社ワードエンベディングモデルの概要

ConceptNet という、人間の常識を蓄積したオープンナレッジグラフをセマンティック辞書として、従来手法によって作成されたワードエンベディングモデルにレトロフィッティングやバイアス除去などを適用して作成したオープンデータのワードエンベディングモデル、 ConceptNet-Numberbatch をベースとしています。

詳細はこのビデオのこのあたりを観てください。
https://youtu.be/IEZxMhm1kV0?t=1289

ワードエンベディングについてはこのアドベントカレンダーの読者のほとんどには既知の話だと思うので省略します。

ConceptNetは、人間世界における常識をナレッジグラフとして集積したオープンデータです。例えば、「りんご」は「果物」の類型の一つであり、「赤い」や「赤または緑」という要素を持ち、「🍎」という記号で表される、などです。
ConceptNetは公開Webサイトで誰でも試すことができます。りんごの例は以下のURLからアクセスして確認することができます。
http://conceptnet.io/c/ja/%E3%82%8A%E3%82%93%E3%81%94

レトロフィッティング(Retrofitting)というのは、ワードエンベディングモデルをセマンティック辞書を使って意味的な情報に基づいて補正をかけるという手法です。例えば、「実行」と「実施」は類義語の関係にあるので、データソースにおいて文脈上何も関係がなかったとしてもベクトルの距離を近づける、などです。

バイアス除去というのは、元データに存在する様々な偏見を除去するための手法です。例えば、ある国におけるマイノリティがネガティブな単語と結びつくというのはバイアスの一つなので、これの除去を行います。

こうして作成されたものが ConceptNet-Numberbatch で、出力結果のモデルはGitHub上で公開されています。
https://github.com/commonsense/conceptnet-numberbatch

製品版はここからさらに拡張していて、ドメインデータを取り込んだ後、前処理を自動で実施した後にfine-tuningしてドメイン毎のモデルを作成します。

どういうメリットがあるの?

数千行のデータで、辞書作成や前処理をせずに、非常に小さい計算リソースしか利用せず(GPUも使わない)、数分から数十分という単位でベクトルモデルを作成できます。

最大のメリットは、未知語、表記ゆれ、略語などに非常に強いということです。たとえば「自然言語」と「NLP」は、適切な例文さえ用意できれば辞書がなくても容易に類義語だと見分けることができるでしょう。社内の専門用語も、他のどの用語と意味的に関連が深いかということを見分けることができるようになります。

銀の弾丸なの?

残念ながらそうは甘くありません。

skip-gram モデルによって基礎となる単語ベクトルを作成している以上、単語の出現順番が大きく影響します。そのため、テンプレート文に非常に弱いという特徴があります。「いつもお世話になっております。」という文章が繰り返し出現するだけで、「いつも」と「お世話」が非常に関連が高いと解釈してしまうでしょう。

文単位での解析しか行わないため、パラグラフ単位や章単位などの大きな単位のメタ情報を考慮できないという問題もあります。しかし、こうした長文を解析したいというニーズはあるため、色々な工夫をしてお客様にご提供しています。(業務に深く関わる話なのでこの辺は省略)

どうやって仕事をしているの?

私は、業務としてはNLPを扱うエンジニアではありますが、辞書作成もモデル作成も全くしていません。ひたすらベクトルを扱い続けます。 ELMo や BERT といった流行りの技術も全く扱いません。

扱うライブラリはほぼ pandas と numpy です。
たとえば一番高頻度に実施する処理は、ドット積を取ることによるベクトルの距離計算です。これはそのまま類似度に使うことができるため、この結果をもとに様々な処理に応用できます。

テンプレートの削除など、現場では結局のところ前処理が必要になります。不要なテンプレート文の削除などの処理を行わないと、効率よく解析できなくなります。前処理はほとんどPython標準の文字列関数や正規表現で行っていますが、たまに spaCy を使うこともあります。

解析した結果を使いながら、お客様が望むような仕組みを作るためにコードを書いたり仕組みを設計したりするということを行っています。

多分、NLPと名のつくエンジニアの中でもかなり特殊な仕事をしているでしょうし、NLPのエンジニアの中には、私のような仕事はNLPではないと言う人もいるかもしれません。

製品としてモデルを勝手に作ってくれるので、そのモデルをいじるのではなく、そのクセを考えながら、お客様が望むようなシステムを提供するにはどうすればいいかを検討するというのが普段私がやっている仕事になります。

仕事の一例として、ベクトルデータを使った検索アプリケーションというものがあります。

明日の情報検索・検索エンジン Advent Calendar 2019ではそちらについて簡単に触れたいと思います。
https://qiita.com/advent-calendar/2019/search

まとめ

Luminosoは、自社製のワードエンベディングモデルを提供する会社です。そこで働くエンジニアである私は、辞書作成やモデル作成といったことを行わず、ベクトルばかり触っているという、NLPのエンジニアとしてはちょっと変わった仕事をしていますよ、ということを紹介しました。

超予測力: 未来を予測する技術を学べる本

今年読んだ本の中で一冊を挙げるならば、間違いなく本書でした。


本書は、非常に予測能力の高い人達はどのように予測をしているのか、ということに注目した本です。

米国では、情報先端研究計画局(IARPA)による、情報分析予測トーナメントが開催されています。 本書で登場する「超予測者」は、この予測トーナメントで非常に高い成績を収めた人達です。この超予測者達を調査し、その予測手法についてまとめあげたものが本書です。

その中から、特に汎用性が高く、すぐに使える手法をいくつか紹介しましょう。

予測手法1: 確率についての正しい理解

「天気予報だと降水確率80%だったんだけど、雨は結局降らなかったよ」

我々は普段、このような会話をしますが、大抵は「天気予報が外れた」という意味を込めています。

確率という観点に立てば、本来は「天気予報が正しかったかどうか、これだけではわからない」というのが正しいはずです。

降水確率は「80%」なのですから、逆に言えば20%は外れる可能性があるわけです。しかし、我々一般人は、80%という数字を100%であるかのように錯覚してしまいます。

超予測者達の特徴の一つとして、この確率の粒度が非常に細かいというものがあります。一般人は、ものごとを「はい、いいえ、どちらともいえない」といった粒度で予測を行います。しかし、超予測者は1%刻みで予測を行うのです。

頭の中に選択肢が三つしかない人は確率を判断しろと言われると、50%という数字を使いがちだ。50%を「どちらとも言えない」と同義に考えているからだ。このため頻繁に50%を使う人は、予測の正確性が低いと考えられる。(p.204)

まず、この確率に対する認識を改めることが、予測力を高める最初の手法となります。

予測手法2: フェルミ推定

「なんだフェルミ推定か」と肩を落としてしまったかもしれません。しかし、本書のフェルミ推定は、一般に知られている基本的な手法よりも少し奥が深いです。それは、「外側の視点」と本書で呼んでいる手法です。

「レンゼッティ家には44歳の父親と35歳の母親、5歳の息子がいる。父は引っ越し会社の経理担当、母は保育士をしている。父親の母も同居している。このとき、レンゼッティ家がペットを飼っている可能性はどれくらいか。」という問題が本書に書かれています。

一般人は、上記の家族構成や背景についてまず考え始めますが、超予測者は、こうした情報を最初は無視します。その代わり、全国でペットを飼っている世帯の割合を調べます。それはインターネット上で検索すればすぐに答えが見つかります。(本書の記載時点では62%)

このように、背景を無視した上で得られる、完全に客観的なデータや、それに基づいたフェルミ推定を行い、その確率を「基準値」とすることが本書で記載されている手法です。

基準値がない場合、誤った予測に結びつく可能性が非常に高くなります。「このようなことが起こる確率は高い」と、「通常はこのようなことが起きる確率は5%だが、今回は通常に比べて起こる確率は通常に比べて高い」では、大きく印象が違うでしょう。前者は少なくとも50%以上であるかのように判断してしまいがちですが、後者であれば20-30%であると予想するのではないでしょうか。このように、人間の心理は基準となる値にひきずられてしまいがちです。なので、最初に基準値を設定することは非常に有効なのです。

予測手法3: 逆の意見に耳を傾ける

「X国が3ヶ月以内にY国に軍事侵攻する確率はどのくらいか」という質問があったとします。あなたがX国に詳しくて、X国が政治的にも経済的にもY国に軍事侵攻することを簡単に予測できる場合、この問題は非常に易しくみえてしまうでしょう。超予測者は、そのような場合でも、「X国が3ヶ月以内にY国に軍事侵攻『しない』」という意見に耳を傾けたり、あるいは、どういう条件であれば自分の意見を翻すか、という可能性を考えます。

本書では、こんな研究が紹介されています。
予測精度の低い人ほど持論に自信を持っていて、さまざまな事象について「起こり得ない」「確実」などと言い切る傾向が高く、一方で、予測精度の高い人ほど、自らの誤りを認め、考えを変える傾向があり、「しかし」「だが」「とはいえ」「それに対して」といった転換語を多用する、というのです。

さらに、面白いのはこの一文です。

知名度と正確さには逆相関が見られたのだ。有名な専門家ほど、その予測の正確さは低かった。(p.109)

メディアや一般大衆は、シンプルで好きのない明快なストーリーを好むため、断言しない専門家はメディアでは成功しない、とまで書いています。

予測はできない、だからこそ予測する

本書は、8章までは先述のような超予測者の予測手法にフォーカスを当てていますが、9章以降はチーム論や組織論、リーダーシップ論などにフォーカスを当てて、予測をどのように活用するかを述べています。

そこで述べられている最も重要なことは、「結局のところ完全な予測はできない」というものです。

2001年4月11日、当時の米国国務長官ドナルド・ラムズフェルドが、ジョージ・W・ブッシュ大統領とディック・チェイニー副大統領宛に、リントン・ウェルズ博士が執筆した、1900年から2000年までの、10年ごとの戦略的状況の分析メモを送付しました。

その内容は、10年ごとの戦略分析は「全て」的外れであるということを示していました。例えば、1930年の国防計画基準には「今後10年は戦争はしない」と記されていますが、実際には9年後に世界大戦が勃発しています。1960年の時点では、まだ米国国民の大半はベトナムという国を知らず、1990年にはインターネットという概念を国民の大半が知らない、という状態でした。
「2010年の状況は、我々の想定しているものとは全く異なるものだから、それを前提にして計画を立てるべき」とそのメモは締めくくられていました。

そしてその半年後、911が発生したのです。


ファストアンドスローで有名なダニエル・カーネマンや、ブラック・スワンで有名なナシーム・ニコラス・タレブが本書に何度か登場します。

ブラック・スワン[上]―不確実性とリスクの本質

ブラック・スワン[上]―不確実性とリスクの本質

カーネマン、タレブ、そして著者の三者は、「10年先の地政学的状況あるいは経済を予測できるというエビデンスは存在しない」という点で意見が一致しています。

では予測は役に立たないのか?そうではなく、予測できないからこそ、細かく予測をして準備をするのです。

予測についてしっかりと考える人は少ない、だから「20年先の地政学的状況を予測する」とか、「次の一世紀を占う」などの本がべストセラーになるといったバカげた現象が起こる、と本書は断じています。

特に、以下の二つの文が印象に残りました。

わかっていないという現実を認識するのは、わかっていないことをわかっていると思い込むよりましである。(p.337)

宇宙規模で考えれば、人間の予測能力などちっぽけなものだ。だがちっぽけな人間の世界で生きている以上、それを軽んじるのは筋違いだ。(p.342)

本書は、予測する人だけでなく、他人の予測を評価するための予測リテラシーを養うための教科書としても非常に優れています。本書の締めくくりの一部を引用します。

本書を読まれたみなさんもそれに気づき、そこから大きな変化が生まれることが私のひそかな願いである。予測にお金を払う人々は、魅力的なストーリーを語る評論家に騙されず、彼らに過去の予測の実績を尋ねてほしい。相手が自慢話や華やかな経歴ばかりを並べたら、それでは答えにならないと突っぱねてほしい。いまではわれわれの口にする医薬品は全て実験で有効性が確認され、ピアレビューを受けている。それと同じように予測を受け入れる前に、それを立てた者が厳格な検証を通じて自らの予測が正確であると証明しているか確認するべきだ。(p.346-347)

我々が普段目にする情報には、読みやすく、素晴らしいロジックを持って、「こうに違いない」と確信できるような華やかな「予測」にあふれています。そして、それらを信じる人や、信じない人が言い争うという光景も幾度となく目にしているでしょう。予測リテラシーを高めれば、まず一歩引いた状態で情報を分析し、その予測が注目に値するかどうかを確認する武器となることでしょう。

年末にこの本に目を通してから、「2020年を占う、予測する」といったテレビ番組を眺めてみる、というのも悪くないかもしれませんよ。

Freeleticsで半年間自宅トレーニングしたら食制限なしで6kg痩せた

2021年版のFreeleticsガイドができました!この記事より新しいので、そちらを参照してください。

shiumachi.hatenablog.com

前回の投稿からさらに四ヶ月弱経ちましたが、未だにFreeleticsを継続できています。

shiumachi.hatenablog.com


半年間自宅で運動を続けた結果、なんと体重がピーク時差分で6.2kg、7日移動平均で4.5kg減りました。画像はFitbitの体重の記録です。

f:id:shiumachi:20190915105757j:plain:w300
半年で体重6.2kg減

ジムも行かず、何かを我慢するような食制限を一切せず(食生活の変化はあり、後述)、毎朝30分程度、自宅で運動するだけでここまで痩せることができたのは自分でも驚きました。

なぜ継続できているか

「そりゃ毎日運動してたら痩せるだろ」って思うかもしれないでしょう。それはその通りで、この生活を継続できた理由が一番重要です。

理由は主に3つあります。

理由1: 時間が短い

開始から終了まで30分、ジムへの移動等の時間消費は一切なしというのが、忙しい自分の生活にとてもよくマッチしました。

理由2: 頭を使わなくていい

メニューを自動で組んでくれるので、運動に集中できます。

理由3: 楽しい

自分の記録を視覚化できるので成長を実感できます。

どういう運動をしているか

前回の記事で紹介した、Freeleticsというアプリを使って、毎朝運動しています。起きてから時間をおいて運動するときは、運動の30分から60分前にプロテインを一杯飲んでいます。そして、運動の直前にコップ一杯の水を飲んで、スタートします。終わったらシャワーを浴び、プロテインを飲みます。これ以外の運動は一切行いません。
基本的には毎日運動していますが、サボりたいときは一日ならサボっていいことにしています。その代わり、その翌日はどんなにつらくてもやります。過去の経験上、2日空くと途端に継続率が下がったと感じていたので、今回はこの2日目を頑張ってやることに注意しました。

Freeleticsで選択したジャーニー(12週1セットのトレーニングプラン)は以下の通りです。

食生活の変化

よく友人に「食制限してないの?」と聞かれるのですが、私は何かを食べるのを我慢したり、お酒を飲むのを控えたりしているわけじゃないので、自分としては食「制限」という意識はありません。なので、あえて「食生活の変化」という表現をしています。
少しづつ、3つの食生活の変更を行いました。

プロテイン

運動してから3ヶ月目くらいから、プロテインを飲み始めました。運動前後に飲む他、おやつ代わりに一日2回ほど飲むようになりました。プロテインマイプロテインというサイトで、Impactホエイプロテインを購入しています。

頻繁にキャンペーンをやっていて、特にゾロ目の日や給料日(25日前後)には40%オフなどのセールもやっていますし、一定金額以上購入すると送料無料になるため、購入するときはこうしたセール日を狙ってまとめ買いするのがオススメです。

公式サイトから購入した方が先のセールなどでかなり安くなるのでオススメです。Amazonで買うこともできますが、セール時価格からは割高になりますので、どうしてもAmazonから買いたい(あるいは別のECサイトから買いたくない)場合はあまりオススメしないです。

ストウブ

ストウブを使った無水調理を行うようになりました。ストウブは、食材を買ってきて放り込むだけで、簡単においしい料理が作れるようになる調理器具です。毎週末にストウブで鶏むね肉を3枚と野菜を買ってきて調理し、タッパーに入れて保存しています。これを一週間で消費していきます。

f:id:shiumachi:20190819181428j:plain:w300

ストウブを使うときは、下記の本とセットで買った方がいいでしょう。手軽においしい料理を作れるレシピがたくさん載っています。最初は一番上の本だけ購入し、慣れてきたら二冊目、三冊目と購入するのがいいと思います。

サラダごはん

さらに、最近はサラダごはんを食べるようになりました。野菜を何種類か買ってきて(葉物の野菜、トマト、たまねぎなど)、ゆで卵、アボカド、先程の鶏むね肉を載せ、後は好きなドレッシングをかけるという食事です。ボリュームたっぷりで、食材を変えることで全く飽きない、とてもおいしい料理です。サラダごはんは、以下の本を参考にしていますが、あまりレシピ通りに作ることはなく、その日の食材や気分で色々とアレンジしています。

ミックスサラダ

ミックスサラダ

  • 作者:中村 奈津子
  • 発売日: 2017/03/24
  • メディア: 単行本(ソフトカバー)
毎日続ける やせる サラダごはん

毎日続ける やせる サラダごはん

  • 作者:中原美香子
  • 発売日: 2016/07/09
  • メディア: 単行本(ソフトカバー)

食生活を変える

サラダごはんは作るのにそれなりに手間がかかるので、ここまでやる必要はないと思います。こうした食生活の変化を導入するなら、プロテイン→ストウブ→サラダごはんの順に取り入れるのがオススメです。

もちろん、上記のような食生活を毎日しているわけではなく、他の物が食べたくなったら普通に食べていますし、お酒や揚げ物、甘いものなど一切制限していません。食制限してストレスがかかって継続できなくなるより、長期間継続できる形を優先しています。

Freeletics 利用時のポイント

友人達からもらった質問や、自分で調べたことを元に、Freeletics を使うときのベストプラクティスをいくつか紹介します。

フォーム優先、それから速度

FreeleticsはHIITのコンセプトを用いた、短時間のトレーニングを行います。HIITの後のアフターバーン(EPOC)という効果によって、運動していない間もカロリー消費を行うことができるようになります。なので、短時間に高負荷をかけることが重要です。だからといってただ速くやるだけでは高い負荷は得られません。とにかくフォームを優先して、完璧なフォームができてからタイムを短くするようにします。

フィードバック

フィードバックは厳し目に行った方がいいです。フィードバックを元に次のトレーニングプランが組まれるので、緩めに書くと翌週からやたらときついメニューが組まれ、モチベーションを大きく下げてしまいます。

公式ヘルプに書いてある、気をつけるべき点は以下の通りです。

  • タイム計測。適当にポチポチ押してスキップすると、「すごい速さで終わらせた」とみなされて翌週の負荷が上がります。面倒でもきちんと1つのワークアウトが終わるたびにきちんとクリックして記録を取ってください。
  • 「どれだけきつかったか」「正しいフォームでできたか」。この二つのフィードバックの違いはヘルプに書いてないので詳しくはわかりませんが、おそらく前者が持久力的なフィードバックで、後者が筋力的なフィードバックではと推測しています。「正しいフォームでできたか」のフィードバックで「できた」とつけると、そのワークアウトにスターがつきますが、これは明確に「翌週の負荷を上げる」とヘルプに書いてあるので、本当に正しいフォームができたと自信を持って言えるまでは選択しない方がいいです。
  • 身長、体重、年齢(生年月日)、性別。メニュー作成に必要なので正しく入力してください。
ウォームアップ、クールダウン

レーニングで一番怖いのがケガで、その次が筋肉痛や筋疲労によるモチベーションダウンです。なので、サボらずやることが非常に重要です。

フォロワーを増やし、いいねを押しまくる

Freeleticsコミュニティは互いに褒め称え合ういい文化で、しかもそれ以上の馴れ合いもない大変ストイックな文化です。他の人がやってるのを見るとモチベーションアップにつながるし、他の人からいいねをもらってもやる気が出てくるので、積極的にフォローするのをオススメします。

自分は、主なフォロー相手は「日本でトレーニングしている人」「Lv100以上の高レベルアスリート」に絞っています。
Freeleticsはフォロワーを探す機能が貧弱なので、どういう人をフォローしたらいいかわからないという人は、とりあえず私のアカウントを検索して、そこからフォロワーをたどっていけばいいと思います。

私のアカウントは、私の名前で検索すれば以下のように出てきます。

f:id:shiumachi:20190915130204p:plain:w300

まとめ

  • Freeleticsを毎日続けたら、きつい食制限なしで半年で6kg痩せた
  • 続いた理由は、短時間で頭使わず運動できて、楽しいから
  • 食事の変化はいきなり行わず、徐々にやった方がいい。プロテインとストウブは買おう
  • Freeleticsはいいぞ!


Freeleticsを始めてみたいという人は、下記のリンクから購入すれば20%オフで買えます。 Coach と Nutrition (食生活改善)の二種類が出てきますが、Nutrition は自分は試していません。運動だけなら Coach で十分と思いますが、誰か Nutrition を試した人がいたら感想教えてください。

https://www.freeletics.com/r/124871187

14日間の返金期間がありますので、気になったら一週間くらい試してみるといいでしょう。

AIパーソナルトレーナーFreeleticsを使って、自宅で毎日トレーニングしよう

2021年版のFreeleticsガイドができました!この記事より新しいので、そちらを参照してください。

shiumachi.hatenablog.com

Freeleticsは、言い訳をさせないことに特化した、硬派なAIパーソナルトレーナーアプリです。とりあえず3ヶ月(15週間)続いたので、紹介してみることにします。

Freeletics: トレーニング&フィットネス
Freeletics: トレーニング&フィットネス
開発元:Freeletics GmbH
無料
posted withアプリーチ


Freeleticsは、ユーザにとって最適なトレーニングプランを提供してくれる、いわゆるAIパーソナルトレーナーアプリです。数分単位の短い時間にきついトレーニングをこなす、いわゆる高強度インターバルトレーニング(HIIT)をベースにしています。

長所1: 部屋の中でできる

2m * 2m のスペースさえあれば、部屋の中でトレーニンができます。感覚的には、0.9m * 1.8m のヨガマットを引き、その上に立った状態で自分の腕を自由に振り回せるくらいのスペースです。
ヨガマットは買った方がいいです。自分の体と床の両方を傷つけずに済みますし、階下への振動を押さえるためにも必要でしょう。
私は、定番のALINCOのマットを使ってます。

外に出なくていいということは、身支度を一切する必要がないということです。簡単なスポーツウェアを着るだけでいいので、気軽にスタートできます。
例えば、スキッピングジャンプ(要するに足踏み)は基本的な運動の一つですが、このような感じでその場でできる運動が揃っています。

f:id:shiumachi:20200727080316p:plain

長所2: 時間が短い

ウォーミングアップとクールダウン含めて20-30分程度で、一番きついメインのトレーニングは5-10分程度。短い場合は3分で終わります。
近所のジム行ってちょっと運動して帰ってきたり、ランニングしたりしても、移動時間や着替えなども含めて1時間はかかることを考えれば、圧倒的に時間が短いです。

f:id:shiumachi:20200727080407p:plain

長所3: 自分だけのトレーニングメニューを作ってくれる

ウェイトトレーニングをやると、どうしても「次に何をするか」を考えながらやらなければならず、それが結構面倒と思っていましたが、Freeleticsを使えばメニューは全部自分用に作ってくれるのでレーニングメニューを考える必要がありません
今日は腹筋メインだったので明日は足メインのメニューなど、ちゃんと順番を考えて作ってくれます。
面白いのは、ウォーミングアップもその日によって変えてくれるので、飽きがきません。

f:id:shiumachi:20200727080529p:plain

長所4: 言い訳させない

今日は時間が15分しかない、出張中なので器具がない、など色々な「言い訳」に対応してメニューを変えてくれます。とにかく「言い訳させない」ことを目的しているのがよくわかります。
もし筋肉痛だったとしても、その部位を使わないという選択ができます。「諦めるという選択肢はありません」というキャッチフレーズの通り、言い訳させない仕組みがたくさん備わっています。

f:id:shiumachi:20200727080552p:plain

欠点

もちろん良い点ばかりでもありません。私が気になった点をいくつか挙げておきます。

  • 過去のデータを見返したいときのUIが貧弱。
  • アプリでしか見れず、PCでログインはできるがほぼ無意味。
  • アプリとしては日本語対応してるが、先述のクーポンを配ってもグッズがもらえるキャンペーンが対象外だったり、EU/US以外でのマーケティングが貧弱。
  • 日本でやってる人がほぼいないので情報がほとんどない

価格

年間1万円。自分としてはトレーニングジム行くことに比べたら圧倒的に安いと感じたので即購入しました。

Freeleticsを始めてみたいという人は、下記のリンクから購入すれば20%オフで買えます。 Coach と Nutrition (食生活改善)の二種類が出てきますが、Nutrition は自分は試していません。運動だけなら Coach で十分と思いますが、誰か Nutrition を試した人がいたら感想教えてください。

https://www.freeletics.com/r/124871187

14日間の返金期間がありますので、気になったら一週間くらい試してみるといいでしょう。


レーニングの流れ

コース選択

最初に、運動の目的について質問されますが、その選択内容によって推奨されるコースが変わります。私が選んだ場合では以下の6種類が表示されました。
このコースは、ダイエットしたいという人から筋肉をつけたいという人まで、色々な目的に合わせることができます。
私が表示されたもの以外の全てのメニューについては後述します。


目標選択画面

f:id:shiumachi:20200727080721p:plain

初級編: スタートストロング

f:id:shiumachi:20200727080755p:plain

f:id:shiumachi:20200727080805p:plain

f:id:shiumachi:20200727080842p:plain



カロリー燃焼


f:id:shiumachi:20200727080826p:plain

f:id:shiumachi:20200727080853p:plain

f:id:shiumachi:20200727080914p:plain



バランス燃焼

f:id:shiumachi:20200727080950p:plain

f:id:shiumachi:20200727081003p:plain

f:id:shiumachi:20200727081014p:plain

筋力&スタミナ

f:id:shiumachi:20200727081028p:plain

f:id:shiumachi:20200727081038p:plain

f:id:shiumachi:20200727081108p:plain

筋トレダイエット

f:id:shiumachi:20200727081246p:plain

f:id:shiumachi:20200727081301p:plain

f:id:shiumachi:20200727081314p:plain

ハイブリッド筋力

f:id:shiumachi:20200727081338p:plain

f:id:shiumachi:20200727081355p:plain

f:id:shiumachi:20200727081409p:plain

f:id:shiumachi:20200727081418p:plain


(2019/06/05 追記) Freeletics のヘルプに、コース一覧があったので簡単にまとめました。

Choose your Freeletics Training Journey – Help Center


ダイエット目的

レーニングコース名 有酸素運動 筋力 コース期間 説明
スタートストロング/Start Strong □□ □□ 6週間 初級者や長期間運動してなかったけど復帰した人向け。インターバルトレーニングメインで、持久力と筋力を手に入れるのが目的
カロリー燃焼/Cardio Burn ■■■ □□ 12週間 初級者や長期間運動してなかったけど復帰した人で、易しめの運動でレップ数多めで、有酸素運動メイン。ライフスタイルを変えるのが目的
バランス燃焼/Balanced Burn ■■ ■■ 12週間 有酸素運動と筋力トレーニングがバランスよく混ざっている。易しめでレップ数多めの運動と、難しくてレップ数少なめの運動が混在。ダイエットの目標体重達成を支援するのが目的。
筋トレダイエット/Shred & Burn □□ ■■■ 12週間 筋力の限界を試し、脂肪の最後の一絞りを実現し、6つに割れた腹筋を獲得するためのコース。難しくてレップ数少なめの運動がメインで、爆発的な筋力トレーニングも含み、しばしば難しい高強度のトレーニングが含まれる。懸垂バー推奨


運動目的 (あるレベルのスポーツの経験やトレーニング経験があり、運動能力を高めていきたい人向け)

レーニングコース名 有酸素運動 筋力 コース期間 説明
Fit For Life ■■ ■■ 6週間 Freeleticsの基礎を学び、身体を若く活動的に保つためのコース。比較的低強度の運動と短時間のメニュー。ランニングありを推奨
Legs, Curves & Core ■■ ■■ 12週間 (女性向け) 脚とお尻と体幹の運動をメインとした、強靭でパワフルな引き締まった身体を作るためのコース。レップ数多めのインターバルトレーニングで、引き締まった体型を手に入れるのが目的。
Active Endurance ■■■ □□ 12週間 持久力とスタミナを試すための、速いペースの有酸素運動メインのコース。スプリント&ランニング推奨。
筋力&スタミナ/ Strength & Stamina ■■ ■■ 12週間 有酸素運動と筋力トレーニングがバランスよく混ざっている、全身運動のコース。健康的なライフスタイルを維持するのが目的
Everyday Strength □□ ■■■ 12週間 技術的に高難易度の運動を行い、筋力の限界を試すためのコース。レップ数少なめで爆発的な筋力トレーニングがメイン。しばしば難しい高強度のトレーニングが含まれる。懸垂バーを強く推奨
Freeletics Hardcore ■■■ ■■■ 8週間 十分な経験を積んだアスリートが、身体的・精神的な困難に立ち向かうためのコース。上級者向けの高強度の運動を含む。このコースのみ、最終週はクールダウンのためそれまでの週よりも軽くなる(Hell Weekがない)。懸垂バー必須

筋トレ目的

レーニングコース名 有酸素運動 筋力 コース期間 説明
Explosive Strength ■■ ■■ 12週間 技術的にも身体的にも難易度の高い運動と、高強度の有酸素運動の混ざったコース。懸垂バーを強く推奨
Everyday Strength □□ ■■■ 12週間 筋力の限界を試すためのコース。レップ数少なめで爆発的な筋力トレーニングがメインで、最後の1レップを絞り出すのが困難なトレーニングを含む。懸垂バーを強く推奨
コースの実施

週のはじめにメニューを決めます。毎週何日トレーニングするかを選ぶことができます。
また、利用可能な器具(懸垂バーなど)も選ぶことができますので、自宅に懸垂バーがある人も安心です。

f:id:shiumachi:20200727081514p:plain

f:id:shiumachi:20200727081537p:plain

f:id:shiumachi:20200727081548p:plain

1日のメニューにはウォーミングアップからクールダウンまで含まれているので、寝起きにいきなり開始できます。
もし時間がない場合や出張中でいつもと環境が違う場合でも、その日だけの特別メニューに変更されます。

f:id:shiumachi:20200727081713p:plain

一つのワークアウトを完了すると、フィードバックを送ることができます。どれだけきつかったかを5段階評価で、正しいフォームでできたかを5段階評価で送ります。フィードバックの結果は翌週のメニューに反映されます。
12週間(初級のみ6週間)の最終週はヘルウィークが待っています。この週は毎日(つまり7日)連続でトレーニングしなければいけません。といっても、トレーニングの負荷そのものは通常時とさほど変わらないので、名前に反してそこまで怖いメニューではないです。

f:id:shiumachi:20200727081841p:plain

f:id:shiumachi:20200727081918p:plain

12週間のコースが終わると、また最初に戻り、5つのコースタイプから選んでいきます。

まとめ

Freeleticsは硬派なデザインで、飾りっ気はありませんが、毎日運動を継続させるための工夫が行き届いていて、とても気に入ったアプリです。
忙しいけど効率よく運動する習慣をつけたい、という人は試してみる価値はあります。

Freeletics: トレーニング&フィットネス
Freeletics: トレーニング&フィットネス
開発元:Freeletics GmbH
無料
posted withアプリーチ

2019年GWに読んだ本

とりあえずざっと読んだ程度で、細かくは読んでいません。内容の理解が間違っている可能性がありますのでご注意ください。


高次元の統計学 (統計学One Point 11)

高次元の統計学 (統計学One Point 11)

d次元のデータについて標本数nのとき、従来は n >> d を仮定していたが、この本では d >> n を仮定しています。
例えば10000次元のデータでサンプル数100とかのケース。
これを分析するのに、標本共分散行列ではなく双対標本共分散行列というのを使うというのがメインの手法です。
d x d 次元の標本共分散行列の固有値固有ベクトルを、 n x n 次元の双対標本共分散行列の固有値固有ベクトルから計算できるということを最初に紹介しています。

従来のPCAは本書で書かれているようなデータには適用できないので、本書ではノイズ掃き出し法(ベクトルの各次元のパラメータが互いに独立)とクロスデータ行列法(互いに独立と仮定できない場合)という2つの手法を紹介しています。
高次元ベクトルにおける平均ベクトルの推定も説明されています。さらに、高次元データに対する二値分類の方法も紹介しています。
私の扱うデータではこの手法を活かせる機会がかなり多そうなので、どこかで試してみようと思いました。


全くの初学者向けなのに、Dockerでコンテナ起動するとこから始めるし、チャットボットのアプリをローンチするためにテキスト解析回り(MeCabとか正規表現とか)をやったりWebアプリを作るためにDjangoJQueryに触ったりと、意図してたくさんのライブラリやツールに触れさせる作りになっていて、なかなかおもしろい本でした。
とはいえ自分は初学者ではないので、誰かこれからPython始めたいという人でこの本を読んだ人の感想を聞いてみたいものです。


統計解析が主体で、機械学習等の流行りの技術の話はあまり出てこないですが、従来の商品売買の分析ではなくサービスの分析というところに主体を置いて概要を説明するというスタンスの本なので、切り口が違って面白いです。
アンケート結果からの統計解析から始まり、6章ではベイジアンネットワーク分析を紹介しています。
全くの初学者向けの入門書ではなく、既に他分野である程度の知識がある人向けの入門書になっていて、内容はそこそこ高度な割に、実際に使えるようなテクニックが書いているわけじゃないので、人によっては役に立たない本って判断するような書籍かもしれないです。
内容的には「きちんとした、サービスデータの解析についての有料まとめブログ記事」に近い感じです。

私の場合、まさにこの分野の解析手法について知りたかったのでとても有益な本と感じました。


人気の本だけあって、非常にわかりやすいいい本でした。
グラフの使い方とかも書いてあるのでダッシュボード作成とかの参考にもなりそうです。


ペーパープロトタイピング 最適なユーザインタフェースを効率よくデザインする

ペーパープロトタイピング 最適なユーザインタフェースを効率よくデザインする

これを真面目に実践しようと思うと、想像以上に手間がかかって、簡単なデモアプリとかだと、この手間より普通にアプリ作った方が早そうな気がしてきます。
とはいえ、手法としてはとても面白いので、どこかで試してみたいです。

今年はラグビーワールドカップもあるということで、読んでみたラグビー漫画。手にとってから初めて、「ここから今は倫理です。」と同じ作者の作品だと気づきました。

「ここから今は倫理です。」は、独特な雰囲気の教師漫画でしたが、ALL OUT!!は正統派のスポーツ漫画。絵にクセはあるので好みは分かれるでしょうが、この作者の勢いのある表現は私はとても好きですね。

面白いなと思ったのは、コーチや教師目線のエピソードが結構散りばめられていることです。自分も年なのか、こういう高校生のスポーツものを見ると保護者視点で見るようになってきて、そういう自分にはこの視点はとても興味深く感じました。

なので、個人的に一番好きなエピソードは、8巻のコーチ・顧問による飲み会の回ですね。

指導者は常に、子供を驚かせる張本人じゃなきゃならない。……突然、海に連れてったりしなさい。突然、相撲させなさい。もちろん明確な意図を伝えてね。"この人についていけば、なにか起きるかも"って思うだけで、意外とみんなついてきてくれるもんですよ。
(ALL OUT!! 8巻 p159-161


17歳の日本人の少年を主人公にした、アイスランドでの生活と人々とのやりとりを描く漫画。一応ストーリーがあったり、主人公の少年が機械の心を読み取れる超能力者だったりしますが、メインはなんといってもアイスランドの紹介で、とてもいい観光漫画です。

データサイエンスレガシーコード

Repro Tech Meetup #7 にて、「データサイエンスレガシーコードに立ち向かう」というタイトルで講演しました。



データサイエンティスト全てというわけではありませんが、データサイエンスのコードは試行錯誤の連続であり、様々な手法を連続して試すことを考えると、最初からきちんとテストを書いた保守性の高いコードを書く、というのはそう簡単ではありません。

しかし、そうした試行錯誤を経て出来上がったデータサイエンスのコードを、「動いているから」という理由でそのまま実戦投入していくケースを目にしたことある人はいるのではないでしょうか。

このような状況に直面したとき、私が思い出したのは、10年前の、あるプロジェクトのことでした。


当時の私はある社内システムの開発に携わったのですが、既存コードには一切テストがなく、かなりの分量の改修が必要で、そして期日が迫っている、という状況でした。

このとき私のバイブルとして助けになったのが、「レガシーコード改善ガイド」でした。


レガシーコード改善ガイド (Object Oriented SELECTION)

レガシーコード改善ガイド (Object Oriented SELECTION)


まさか10年経ってからこの本を再び開くことになるとは思いませんでした。しかし、そこに書かれている内容は、まさに今の私にとって役に立つ内容ばかりでした。


この本の冒頭には、以下の一文が記されています。

レガシーコードとは、単にテストのないコードです

この一文を読んで、私は「データサイエンスレガシーコード」という言葉を思いつきました。


データサイエンティストの考えたモデルがもし本当に有用であれば、コードはきちんと整備され、あるいは書き直されることになるでしょう。しかし、そうなる前の段階、つまり、データサイエンティストの頭の中から一歩踏み出した状態は、保守性の低い、レガシーコード同様となっていることが多いでしょう。このようなときに、この古い書籍は大変役に立ちます。


とはいえ、この本で取り上げている例やツールは現代から見ればかなり古く、また、コードもJavaC/C++で書かれているため、私が使うPythonの世界にはそのままでは適用できません。

Pythonでテストを書くための本として、テスト駆動Pythonがあります。この本は2018年に出たばかりの新しい本であり、内容もわかりやすく、Pythonでテストを書くのに慣れていない人にとってはかなり有益な本でしょう。


テスト駆動Python

テスト駆動Python


ソフトウェアエンジニアと違い、短期間のうちに様々な小さいコードを実装しなければいけないソリューリョンアーキテクト(あるいは、プリ・ポスト含む全てのフィールドエンジニア)がよく口にするのは、「テストなんて書いている時間がない」というものですが、テストを書けば、バグ探しや確認作業のための工数が減り、改修作業のときの手戻りを減らし、同僚や他プロジェクトで自分が書いたコードが再利用されるときに発生する質問や支援依頼もぐっと減り、その結果、自分の時間を大きく節約することができます。なので、私は小さなコードであってもなるべくテストは書くべきと考えています。


テストを忌避する理由として考えられるのは、推測ですが、「テストが品質向上のためのものであり、テストを書くには分岐網羅などを全て行った、カバレッジの高いものにしなければいけない」という考えがあるからでは、と思っています。私は、特にソリューションアーキテクトのような立場でコードを書く場合のテストは、単に確認作業の自動化くらいの意味合いで考えれば問題ないと考えています。普段自分が実行しているコマンドや作業を自動化するというくらいの軽い気持ちでテストを書くだけで、必要最低限のテストでの保護は可能となります。そしてそのためのテストコードは数行で書くことができます。


新しいアイデア、素晴らしい機械学習モデル、こうしたものを作ることそのものは確かに誰にもできないことであり、その業績は褒められるべきものです。しかし、せっかくのその傑作を素早く広めていくには、保守性の向上は常に考える必要があります。そのためにも、テストがないコードにテストをかぶせていく手法を学ぶのはとても有益と考えています。


テストの話とは外れますが、こうした発想がソリューションアーキテクトという仕事において有益である、という話を、4/24(水) 開催の SA Night #1 で少しだけ触れますので、興味がある人は是非ご参加ください。

健全な危機感と過剰な成功体験の危険性

先日、あるお客様を訪問しました。そのお客様はかなり先進的な企業で、社員の方達の能力も高く、企業の業績も大変良好なのですが、そのお客様はとても印象深い一言をおっしゃっていました。

「確かに我々は日本では先進的だと言われているようだが、グローバルの企業に比べれば足元にも及ばない。なんとかしないといけない」

この言葉に、私は非常に驚きました。今まで多くの優れた企業の方とお会いしてきましたが、トップ企業の方で、社員レベルでここまでの危機意識を徹底されている会社は多くありません。

もう10年ほど前になりますが、大学のある先輩がある企業に就職した後、一度会う機会があって、そのときに聞いた話を思い出しました。その先輩が勤めている企業は、日本を代表する有名な企業でしたが、デジタル化の波に飲まれて主要事業が急激に縮小するも、新しい事業を次々に創出して生存に成功した企業でした。その先輩と話をしたのは、ちょうどその業績回復で話題になっていた頃でしたが、そのときその先輩はこのような話をしていました。

「とにかく危機感がすごい。誰一人として、このままでいいとか思っていない。新しいことはすぐに始めるし、自分みたいな若手にも仕事はバンバン任せてくれる」

多くの会社では、社内外に向けて鼓舞するようなメッセージを発信します。自分たちはすごい、自分たちはできる、自分たちは偉大だ、といったようなメッセージです。当然ながら、会社というのは常に様々な危機や試練がつきまとうので、士気の向上のために、こうしたメッセージは重要と思います。

では、もし本当にうまくいってしまったら、その後はどうなるのでしょう?自分たちはすごい、ということを本当に証明してしまったら?私はここに一つの落とし穴があるのではと考えました。成功体験に基づく自尊心は、その後の失敗に対して正常に対処できなくなるのでは、と、ふと思いました。

もちろんこれも難しい話で、危機感を煽るばかりだと、「この会社本当にヤバイんじゃないか」と勘違いする人が出てきて、退職者が続出したり、いい人材を採用できなかったり、株価に影響を与えたり、と、ネガティブな効果ももちろん少なくないでしょう。しかし、健全な危機感を抱き続けるというのは、特に予定通りに計画が進まなかった場合に問題解決に柔軟になれるのではないか、と思いました。

では、どうすれば健全な危機感を抱き続けることができるのでしょう?一つは、適切な高いゴールを決めることではないかと思います。ハードルが低すぎては成功体験が過剰になってしまい、ハードルが高すぎては誰も真面目にそのゴール達成を考えなくなるでしょう。しかし、ゴール設定だけでは健全な危機感を持つというのは難しそうな気がします。そもそも、健全な危機感とはどのようなものか、まずこの定義を明確にする必要があるでしょう。いずれにせよ、まだ自分の中で答えの出ていない話です。

関連書籍

こうした、失敗から学ぶという書籍は何冊か読んだことがあります。そのうちの一冊、「名経営者が、なぜ失敗するのか?」は面白い本ではありますが、あくまで経営者視点の話で、現場の意識のような話には言及していません。

国家の失敗というテーマで有名な書籍としては、「失敗の本質」や「大国の興亡」がありますが、いずれも組織論、あるいは大組織に関連する機能についての言及が主体で、やはり現場の意識という観点ではあまり言及はされておりません。(いずれも名著なので本件とは別に読む価値はあります)