東大 生物情報学科、学部生の備忘録

東京大学の学生です。日々の気づき、学び、つまづいたことをメモにします。

MENU

朗報!DiffusionBee for Mac. 今後にさらに期待!

はじめに

Mac 用のアプリケーションである DiffusionBee が 2023/6 上旬にアップデートされました!(報告遅い) twitter とかみてる感じ、あまり知られていないような気がするので、ページ作って広めます。

DiffusionBee icon

本題

DiffusionBee が 2023/6 上旬にアップデートされ、

  • 以前まで ckpt モデルしか利用できなかった
  • これから safetensor も利用できる

といった強力な改良がなされました。 これによって、最新の有名なモデル(Chilloutmix とかが有名ですね)を利用できることになる。 時代は safetensor であり、ckpt しか使えなかった DiffusionBee は時代の敗北者だと思っていましたが、なんと追いつきました!

しかし、Lora は利用できないようです。。。 Lora の利用は Discord をチラチラ見ているところ、バージョン2.0.0 以降から実現されるみたいです。しかし、まだ実装日がいつか判明していません。また、beta version の配布もまだなので、絶賛開発中というわけです。

ワクワクしている理由

私としては、多くのユーザに画像生成 AI の威力を思い知ってもらい、 AI の素晴らしさ、強力さと共にその恐ろしさも実感し、 「情報」に対する姿勢を養って欲しいと思っています。 そのために、no code で Stable Diffusion を動かせる DiffusionBee は欠かせない存在なのです。 そしてその機能が拡張され、これからも開発されていくことがほぼ確定している状況は、ワクワクせずにはいられません。

ただ、怖い気持ちもあります。犯罪利用も増えるかもしれません。 しかし、そういった気持ちも、多くのユーザに知って欲しいと思っています。

フェイク画像やフェイクニュースが横行する世の中で、流れてくる情報が正しくないことがあるという当たり前の事実を、自らの手で生成 AI を動かすことで実感して欲しいのです。

chatgpt

実際に chatgpt が嘘をつく、ということは話題になったと思います。 これは世間一般的に、

  • AI はほぼ 100 % いつも正しい

と信じられていたことの裏付けです。ああ、恐ろしい。 しかし、ChatGPT が嘘をつきまくることから、この常識が覆りつつあります。 そして DiffusionBee の活躍も加われば、

  • 簡単にフェイク画像を作れる

ということに気がつき、

  • twitteryoutube で表示されるコンテンツは必ずしも真実ではない

という至極当然だが見逃しやすい事実も世の中に広まると思います。 そうすることによって世界中の情報リテラシーが高まれば良い。

今後の姿勢

周りの友人等に DiffusionBee を勧めてみようと思う。 そして、その威力を知って欲しいし、恐れて欲しい。 そうすることで日本の地盤を、固めたい。 あるいは youtube で活動をしてもいいなぁ。 協力者、求む!

最後に

話が逸れかけたけど、要は画像生成 AI の民主化に欠かせない no code ツールがアップデートされ、機能が拡充されたということである。 ぜひ light user の方々は利用してみてほしい。

追記

2023/6/21 (水) の正午に ver2.2.0 がリリースされました。 超大型アップデートになります。

ut-bioinformatic.hatenablog.jp

ぜひこちらの記事を読んでください!!!!!

関連ページ

ut-bioinformatic.hatenablog.jp

ut-bioinformatic.hatenablog.jp

ut-bioinformatic.hatenablog.jp

ut-bioinformatic.hatenablog.jp

ut-bioinformatic.hatenablog.jp

生成AI と法律

はじめに

都度、書き足すつもり。 メモ書き程度のまとまり。 理系の自分、実際に利用したみた自分だからこその観点があれば。

Stable Diffusion が急速な勢いで成長していく中、著作権問題や児童ポルノ問題、名誉毀損など問題が山積みだと思っている。 法整備が行き届いていないせいで、手書きイラストレータの作品や名誉が踏み躙られている現状と見ている。

生成AI の善悪

論争を引き起こすものというのは、メリットデメリットが揃っていて、どちらも社会に与える影響が大きいものなのだろう。もちろん生成 AI も同様だ。 他にまとまったサイトがあるので、そちらも参考にされたい。

非実在児童ポルノ

興味深い問題。

前提

実在児童ポルノは断じて許されるべきではない。それは現行の法律で、きっちり裁くことができる。問題は非実在児童ポルノである。

児ポの定義

非実在人物であれば、児ポ画像を作って良いのか。 wikipedia をソースにして申し訳ないのだが、法律の引用をどこからすべきか不明だったので、

を参考にしてみると、どうやら定義が曖昧らしい。 定義がはっきりしないのが、現実世界とサイエンスの世界の違いだよなぁと思う私。 そしてそれが社会問題の面白さだとも思う。

解決するために

私としては、 児ポの定義をはっきりしない限り話は一切進まないだろう、ということである。 現在は曖昧ながらも、 * 衣服の全部または一部を着けない児童の姿態であって性欲を興奮させ又は刺激するもの と定められているらしい。

私としては、児ポ法が存在する意義は、というか法律が存在する理由は「被害を受ける人間を減らすこと」にあると思っている。表現の自由と対立してしまうと思うのだが、児ポの規制を強化し、未来ある子どもたちの人生を守ってあげるのが大人として、国としての筋だと思っている。確かにおじさんの表現の自由も大事だが、それよりも性的虐待を受けて精神的ダメージ受けてしまう児童を予防することの方が日本の未来のために重要なのではないか。国家とは、国が国として未来永劫機能するように働くものなのではないか。若者、子供は国にとっての宝であり、それを守るのが我々大人の役割ではないか。そしてそれを代表し、法律を制定するのが国の役割ではないだろうか。今述べたように、日本の未来を支える児童を守るために、児童の性的虐待の様を再現し、見世物とする生成AI の非実在児童ポルノの画像には規制をかける必要があると思っている。

ただ、難しいのが、

  • 大人より子供を優先したこと
    • 大人の表現の自由より、児童の未来が大事だと言い切った
  • 非実在児童ポルノのコンテンツが実際のところ児童の性的虐待を促すかどうかがわからない。
    • wiki によれば 2009 くらいに研究調査が行われたとか。
    • 暇な時があったら、研究結果を見てみようと思う。

結論 for 児ポ

結局、最後は、「自分が何を優先したいか」に落ち着く気がする。そうではなくとも、自分の意思が重要な問題であることは明らかだろう。 したがって、政治に積極的に関わっていかねばならない。

法律についてはあまり詳しくないが、サイエンスの方面で一流を目指し、いつか政治の世界に関わりたいなぁ。

肖像権

これについては多分はっきりしていて、

  • 非実在人物なら問題なし
  • 実在人物にかなり似ていて、かつ使用目的がよろしくないもの
    • 名誉毀損になるかも
    • 黙って local に保持しているだけなら問題なし
    • model の upload だけでは罪にならないが、良くない image の upload は犯罪。
    • 逆に model の install やその model を用いた画像生成は許されるであろうが、アップロードは許されないケースがある。

という形で良いと思われる。

著作権侵害

これは本当に甚大な問題。 仮に法律が整備されたとしても、Stable Diffusion のソフトウェアが各 local にインストール済みのため、根本的に廃絶することは難しいだろう。画像生成自体を阻止するのは無理だと判断するべき。どう考えても。(それを言ってる人がいたら、IT のこと何も知らんのやなと。)

イラストレータの画像を学習し、往々にしてそれを上回る画像を生成し、市場にて逆襲してくる問題を何とかしたい。要は、恩を仇で返さないで欲しいということ。

恩を仇で返させまい。

僕は一つの解決策を提案したい。 恩返しさせる方法が、あるかも。非常に難しいが。 それは、

  • 国が AI クローリング用のサイトを用意する。
    • 国が猥褻な画像を保管することになるというのは、自他国ともに非難が殺到するかもだが。
  • 前提として
    • 当該 AI クローリングサービスが、他のイラスト共有サービスより圧倒的にクローリングしやすくなければならない。
      • そうでなければ、AI 利用者は確実に他のサービスを利用し、イラストレータ情報を含まない画像をクローリングすることになってしまう。
  • AI ユーザは、画像クローリング時に製作者情報も取得するようにする。

    • イラストレータは、AI クローリングサービスに登録し、そこにイラストをアップロードする。そして、アップロードされたイラストにはその作者の名前や ID が付与される。
  • AI ユーザはモデル作成時(&画像作成時)に、必ず参考にしたイラストレータ情報やイラスト ID を吐き出さなければならない。

    • それをしていないAI コンテンツを随時違法にするとか
    • Civitai にもかけあって、LoRa のフォーマットにイラストレータ属性を追加するように頼むとか

こういった方法を取ることができれば、自然と、生成された画像がどのデータを学習に使ったのかがはっきりし、ある程度イラストレータの広告にも繋がるはずである。

もちろん、これは一切、根本的な解決策じゃないし、実現可能性も低い。 しかし、一つの方法なのかなと思う。

まとめ

法律や権利が絡んだ社会問題って難しいなぁ(非制限用法のwhich。つまり、全社会問題は法律や権利が絡んでいるだろうということ)。

新たな問題提起

それにしても、国は本問題に関して対応が遅れすぎだと思う。 その理由は国会に文系ばかりが集まっているからなのではないか? 知識の少ない文系の議員等が専門家の話だけを聞いて、何ができて何ができないのか大局的なものの見方ができず、したがって、一手二手と遅れているのではないか? 無論、難しい問題であることは確かだ。しかし、それは対応が遅れてよいことの理由にはならないだろう。

私は、文系の政治家に対して怒っているのではない。理系を排斥するなとか、文系のくせにとか、言ってるわけではない。 私が思っているのは、 「理系の学者こそ、興味の幅を広く持って、政治世界に足を踏み入れるべきである。」 ということである。

無論、私は広い視野を持ち、政治にも踏み込んだ人生を送るつもりである。

関連記事

ut-bioinformatic.hatenablog.jp

ut-bioinformatic.hatenablog.jp

ut-bioinformatic.hatenablog.jp

ut-bioinformatic.hatenablog.jp

ut-bioinformatic.hatenablog.jp

ut-bioinformatic.hatenablog.jp

Stable Diffusion for M2 mac (in Japanese)

はじめに

M2(/M1) Mac における "Stable Diffusion" の環境構築について、説明する。 この方法に辿り着くまで、数日ほど費やした。 まだ最適解かはわからないが、局所最適解にはたどり着いたと思う。 ある程度 PC の知識があり、ここまでで試行錯誤し、苦しんだ人向けの内容になると思われる。私がここまで到達するのに苦しんだ過程を共有したい。 あまり知識がない or Lora を使用しないライトユーザは、 DiffusionBee についての記事を参考にしてもらいたい。 かなり熱いアプリであり、2週間ほど前に .safetensors が使えるようになり、今後は Lora の利用もできることになる見込みである。そちらが発展していけば、わざわざ面倒な環境構築を行う必要はなくなる。

English version is available here: ut-bioinformatic.hatenablog.jp

環境

Automatic1111

installation

"M2 Automatic1111 installation" でググればわかる。

Errors about xformers and torch

Automatic1111 は local で実行できるのだが、Mac は cuda に対応していないので、 torch.cuda.* で必ずエラーが発生する。 このための解決策が

などで提示されているのだが、どうも うまくいかない。 --xformers を COMMANDLINE_ARGS に追加することや、 文字列 "cuda" を全て"mps" にするといった方法があったのだが、この方法は「torch.mps.empty_cache() が存在しない」ということなど、正確な書き換えとは言えないだろう。 そして、次に続くようなエラー文が一向に消えない。

これを解決するために色々な対策を講じたが、このエラー分を消去することはできなかった。 しかし、Mac の Application の Activity Monitor から GPU の使用履歴を確認すると、Stable Diffusion で画像を生成している際に GPU 使用率が 100 % になっていたので、MacGPU が使われているとわかった。要は、xformers や torch のエラー文が出てきたとしても、GPU 使用率が 100 % に近くなっていれば特に気にす ることはないのである。 最終的には Commandline_args の --xformers を取り除いた。 注意: --skip-torch-cuda-test を指定する等の必要はある。

Usage for Automatic1111

Automatic1111 には多くの有用な拡張機能が存在している。それを確実に利用するのが良い。 ControlNet, Adetailer, Openpose-editor and sd-dynamic-prompts は便利なので、オススメ。

Training Lora (How to create Lora) with M2/M1 mac

M2

はじめに、Automatic1111 にて Extensions の一つである sd-webui-train-tools を install し、

に示されるような方法で training を開始したのだが、信じられないほど遅い。 それもそのはず、GPU 使用率が 30% 程度に過ぎず、GPU が利用されていなかったのだ。 GPU を利用するための方法を探り、いくつかの文献を見つけたのだが、

ここに示されているように、 kohya_ss/library/train_util.py に含まれるすべての "cuda" を "mps" に書き換えているだけである。 この方法は先ほど述べたように怪しい点があるし、Lora の学習はそもそもかなり時間と計算リソースがかかることから、Local での作業は諦めた。

colab

以下の動画を参考にするとすぐに学習ができるだろう。 youtu.be

colab notebook の URL は

https://github.com/Linaqruf/kohya-trainer/blob/main/README.md

に記載されている。 しかし Google Colab の無料版では、リソースに限界があり、また数時間に及ぶような学習は途中でランタイムが途切れてしまう。 そのことから、Google Colab pro を契約してしまうのが良い。 また、Google Drive の容量もある程度拡張しておくのが望ましい。Google Colab には使ったリソース分だけ支払うというオンデマンドな支払い体系があるようだが、詳しく調べるのが面倒だったので、月ごとのサブスクリプションにした。(ここは改善の余地があるだろう。しかしまだ使用し始めて 1ヶ月経っていないので、理想がどうかわからない。) Lora の学習一回でコンピューティングユニット数が 6.0 ほど減少してしまうのだが、colab pro では1ヶ月あたりの使用可能なコンピューティングユニット数が 100.0 であるので、1ヶ月に 20 回以上 Lora の学習を行う人には向いていないと考えられる。これ以上使う方は Pro+ にするか、私が断念した "training Lora in M2 Mac" を行う以外術はない。

Conclusion

M2 Mac StableDiffusion Decision Tree

これが今の時点の答えだ。 異論は、もちろん認める。というか、教えていただきたい。

関連記事

ut-bioinformatic.hatenablog.jp

ut-bioinformatic.hatenablog.jp

ut-bioinformatic.hatenablog.jp

ut-bioinformatic.hatenablog.jp

ut-bioinformatic.hatenablog.jp

ut-bioinformatic.hatenablog.jp

Stable Diffusion for M2 mac

Introduction

I will explain the process of setting up "Stable Diffusion" on an M2/M1 Mac. It took me several days to reach this method, and while it may not be the optimal solution, I believe I have reached a local optimum.

This content is intended for those with a certain level of PC knowledge who have struggled and experimented up to this point. I want to share the process I went through to reach this stage.

For those with limited knowledge or who do not use Lora, I recommend referring to the article about DiffusionBee. It is a very popular app, and it became compatible with ".safetensors" about two weeks ago, with the possibility of using Lora in the future. If that development continues, there will be no need to go through the trouble of setting up the environment.

The Japanese article is available here:

ut-bioinformatic.hatenablog.jp

Environment

Candidates for Stable Diffusion Interface

There are three candidates:

Automatic1111

installation

Please search for "M2 Automatic1111 installation" on Google to find an easy installation guide.

Errors about xformers and torch

While Automatic1111 can be run locally, Mac does not support CUDA, so errors will always occur with "torch.cuda.*". Solutions for this issue are suggested in resources such as:

Methods like adding "--xformers" to "COMMANDLINE_ARGS" or replacing all occurrences of the string "cuda" with "mps" were suggested, but they are not accurate replacements. Furthermore, the following error message continues to appear:

Despite trying various solutions to resolve this issue, I could not eliminate the error message.

However, when checking the GPU usage history in the Activity Monitor of the Mac's Application, I found that the GPU utilization reached 100% when generating images with Stable Diffusion. This means that the Mac's GPU is being utilized. So, even if error messages related to xformers and torch appear, it is not a significant concern as long as the GPU usage is close to 100%.

In the end, I removed "--xformers" from "Commandline_args". Note: It is necessary to specify "--skip-torch-cuda-test".

Usage for Automatic1111

Automatic1111 には多くの有用な拡張機能が存在している。それを確実に利用するのが良い。 ControlNet, Adetailer, Openpose-editor and sd-dynamic-prompts are really useful. I recommend that you should install it and learn how to use as soon as possible!

Training Lora (How to create Lora) with M2/M1 mac

M2

Training Lora (How to create Lora) with M2/M1 Mac M2 First, in Automatic1111, install the "sd-webui-train-tools" extension and start the training process as described in the following link:

遂に登場!!待望のWebUI上でLoRA学習可能な拡張機能を使いトレーニングする方法 | 経済的生活日誌 However, the training process was incredibly slow. This was expected because the GPU utilization was only around 30%, indicating that the GPU was not being utilized. I explored ways to utilize the GPU and found several references suggesting a solution like the one mentioned here:

Apple Silicon(M1 / M2)MacのGPUでStable DiffusionのLoRAを学習 - Planaria Work Log It involves simply replacing all instances of "cuda" with "mps" in the "kohya_ss/library/train_util.py" file. However, this method has its drawbacks, as mentioned earlier, and considering that Lora training already requires a significant amount of time and computational resources, I gave up on working locally.

Colab

I recommend using Colab instead. You can quickly start training by referring to the following video:

  • youtu.be
  • The URL for the Colab notebook can be found in the following link:

https://github.com/Linaqruf/kohya-trainer/blob/main/README.md However, the free version of Google Colab has resource limitations, and long training sessions may be interrupted. Therefore, it is advisable to subscribe to Google Colab Pro. It is also recommended to expand the storage capacity of Google Drive. Although Google Colab offers an on-demand payment system where you pay for the resources used, I found it inconvenient to investigate the details, so I opted for a monthly subscription. (There is room for improvement in this aspect, but I haven't used it for more than a month yet, so I'm not sure what the ideal option is.) Each Lora training session consumes around 6.0 computing units, and Colab Pro provides 100.0 computing units per month. Therefore, it may not be suitable for those who plan to perform Lora training more than 20 times per month. In such cases, upgrading to Colab Pro+ or resorting to the previously mentioned "training Lora on M2 Mac" are the only alternatives.

Conclusion

Here is the current answer based on the decision tree for M2 Mac Stable Diffusion:

M2 Mac StableDiffusion Decision Tree
If you don't use Lora, it is recommended to use DiffusionBee. If you use Lora for training frequently, it is advisable to use Colab Pro+. Otherwise, you can use Automatic1111 on your local machine or perform Lora training on Colab Pro.

This is the current answer at this point in time.

related article

DiffusionBee has been updated! It can has LoRA and ControlNet with better UI!!

ut-bioinformatic.hatenablog.jp

挫折の重要性。謙虚になるための挫折、成功するための謙虚さ

はじめに

弟やその友達が、大学受験に失敗し、浪人が確定しました。 僕も僕で、四年前に同じように東京大学の受験に失敗し、駿台大阪校に通ったことがあるので、その時を振り返り、挫折の重要性をつらつらと書いていきたい。

僕の人生と挫折

僕は、中学受験で 6 校(including 六甲... ややこしい)ほど受験したが、全て不合格になり、散々見下していた地元公立中学に行かざるを得なくなった。その時に信じられなくらい絶望し、一人寒い部屋の端で、体育座りしながら一日中泣き続けたことは10年以上経った今でもまだ、忘れられない。 その挫折を胸に、「もうあんな辛い思いはしないぞ」と強く近い、中学校では鬼のように勉強し、なかなか良い高校に入学できた。 そして高校では、塾に行かずに学校の勉強だけで東大に行ってやる!と誓い、クラスメートのほぼ全員が塾に行っている中、自分だけ塾なしで東大を受験した。そして、不合格になった。不合格になった原因としては、塾に行って勉強しなかったことが考えられる。ただ、塾に行かなくても高校ではかなり上位をキープできていたことは確かだ。したがって、塾に行かなかったことが直接的な原因ではないだろう。僕が考える、大学受験失敗の要因は、「謙虚さ」が足りなかったからである。

成功するための謙虚さ

表題にもしたように、成功するための謙虚さ、について述べたい。 論を進めるために、謙虚さの意味の確認は欠かせない。

謙虚さとは

ここでの謙虚さとは、謙遜とは異なり、 「驕らず、慢心せず、自分はまだまだだと自覚し、ひたむきに努力し続けることができるような精神状態」 である。 謙虚さとは、ただただ外向きに「僕なんてまだまだですよ〜」とアピールすることではなく、自分自身の内側で「自分は半人前だ」と理解・自覚することである。口だけではなく、心で理解することが必要なのである。

謙虚さと成功

謙虚さがなければ、成功するのは難しいと思っている。どうしてか。謙虚さの対義語として、「傲慢」を引き合いに出して、話を進めていく。

傲慢な人は、「自分は優秀だ、完璧だ、周りに負けていない」と考えたり、さらには「自分のやり方は合っている、周りに自分のやり方をとやかく言われる筋合いはない、自分が一番正しいのだ」と思ったりしているだろう。 こういった傲慢さを持っていると、そのプライドが邪魔してしまい、他者からのアドバイスを受け入れたり、自主的に自分の手法を変更したりすることができなくなる。勉強を例に取るのなら、このような状態では、最善の勉強方法には辿りつかないし、最高の学力にも近づかないであろう。たどり着けるとしても、それは局所最適解で、我流の域を出ないものである。

それに対して、謙虚な人はこのように考える。すなわち、「僕のやり方はまだまだ改善できるだろう、誰かにアドバイスをもらいたい、自分より成績が低い人からでも参考になる姿勢や手法があるかもしれないからそれを探してみよう」、と。 このような、素直な気持ちを備えた謙虚な人は、その素直さを以って無限の吸収力を発揮し、大域最適解に辿り着けるだろう。他人のアドバイスを柔軟に受け入れ、都度自分のやり方を変更し、「より良い方法、姿勢」を模索し続けることができる。その結果、いつの間にか、てっぺんに立っているのである。

ここまでで述べたように、謙虚さがなければ、我流に囚われ、たかだか局所最適解しか得ることはできない。謙虚さが合って初めて、他者のアドバイスを受け入れたり、我流へのこだわりを捨てて柔軟に方法や姿勢を変更したりでき、最終的に大域最適解に辿り着くのである。

謙虚さを得るための挫折

謙虚さを身につけるためには、思いっきり挫折するのが手っ取り早いだろう。本気で全力でやって失敗した時、人は自分が完璧ではない、一番ではないということを嫌というほど理解する。その結果、どうしても謙虚にならざるを得ないのだ。「自分は全力でやって失敗したのだから、完璧なわけがないのだ」と心の底から理解できるのである。このようにして、本気の挫折から人は謙虚さを得るのである。

勝負には本気で取り組まなければ全く成長できない

手を抜いた結果失敗に終わったときはどうだろうか。これは、挫折とは言えない。このような状況は一番まずい。本気で取り組まずに失敗した場合、以下のようなマズイ心理状態になる。すなわち、

  • 今回は手を抜いてしまったから失敗したのであって、手をぬかければ成功できたわ。
  • やりたくて挑んだわけじゃないし、本気出してないぜ。やりたいことなら全力で行けるし、本気出せるし、その結果絶対成功できるもんね。

このような精神状態では、内省はできないだろうし、その結果当然謙虚にはなれない。 まとめると、本気で取り組まずに失敗した場合は、人は自分自身の至らなさ以外を理由にしようと言い訳し、己の弱さを認めることができない。その結果、どうしてもプライドが残ってしまい、謙虚さを身につけることは難しい。

テキトーに取り組んで成功してしまったら?

また、別のケースとしてテキトーに取り組んで成功してしまった場合を考えよう。これは本当にタチが悪い。 手を抜いて成功してしまったら、その成功体験が今後の心理に悪く働く。つまり、

  • 手を抜いても成功できたことから、万能感を抱き、自分の力を過信してしまう。傲慢になってしまう。
  • 今後の本気で取り組まなければならない局面でも、手を抜いて取り組んでしまう可能性がある。そして、より重要な局面で重大な失敗をしてしまうかもしれない。

手を抜いて下手に成功してしまった場合、このようなデメリットがある。テキトーな勉強で偶然難関大学に合格してしまった読者の方には、くれぐれも慢心し、鼻高にならないようにしていただきたい。謙虚さを備えなければ、浪人生にあっという間に追い抜かれてしまうぞ。

まとめ

ここまでで議論したことから、以下のような結論が導かれる。すなわち、

  • 大きな成功を収めるためには、さらには、より深い人間性を身につけるためには、謙虚さと素直さが欠かせない。
  • 全身全霊をかけて本気で頑張って失敗したとき、人は本当に謙虚になれる。
  • どんな時でも全力で努力しなければならない。そのためには、全力で努力したいと思えるような目標や、努力できるような環境に身を置くことなど、重要な要因が数多くある。
    • 勝負に手を抜き、それで失敗したとき、人は自分の落ち度を振り返ろうとせず、言い訳に逃げる。そのとき、謙虚さは身につかない。
    • 勝負に手を抜いても成功してしまった場合、その成功体験が今後の人生に悪い影響を与えてしまう。つまり、慢心や傲慢がついてまわり、謙虚に直向きに努力できなくなってしまう恐れがあるのである。

どうやって生きたらいいだろう。

最後に、本当の意味での挫折を味わったことがある人、そうでない人のそれぞれに、どう生きれば良いのか、伝えていきたい。

本当の意味で挫折をした人、まさに今挫折を味わっている人

さぞかし辛い経験だったと思う。もしや、死をも覚悟したかもしれない。しかしそれは、非常に勿体無い。ここまでの議論から分かるように、「全力で一生懸命やって失敗する」という経験は、なかなか得られない。全力でやったら成功してしまうことの方が多いかもしれない。「全力でやって失敗する」ためには、ちょうど良い実力を備えていたり、目標の難易度がちょうど良かったりと、かなり運が必要である。受験で言えば、親に志望大学のレベルを低く設定させられてしまうような高校生は、そもそも全力でやって失敗するということができないだろう。 以上のように、そもそも本当の意味での挫折を味わえるのは、ラッキー中のラッキーなのである。僕らだけの特権なのである。こんなことはなかなかない。感謝して喜びを噛み締めようではないか。

人生で一番若いのは、今である。一番若い、このタイミングで挫折を味わい、謙虚さを身につけることができたのは、ラッキーと言い切ることができるであろう。 謙虚さ無くしては、成功はあり得ないと思っている。挫折なくして、謙虚さを得るのは非常に難しいと思う。挫折をせずに謙虚でいるには、そもそもの環境や性格、多くの要因が偶然噛み合う必要がある。挫折を味わえたら、基本的には謙虚になれる。挫折を味わっている(味わった)あなたの将来は間違いなく明るいだろう。謙虚さを持って、直向きに頑張り続けてください。

今まで挫折をしたことがない人

こういった人々は、自分は多かれ少なかれ、慢心している可能性が高いということを肝に銘じてください。謙虚さを持って、人に接してください。自分よりも低学歴であったり、役職が低い人と話すときに、「こいつより俺(私)の方ができるし」とか心の中で思ってはいけません。自分にも必ず至らぬところがあり、それを自覚して初めて一人前になることができ、大きく成長できるようになるのです。挫折をしたことがないというのは、危険な状態です。

そして、挫折をしろとは言いませんが、全力で取り組まないと成功できないような、ちょうど良い目標を見つけてください。そして、それに向かって全力で努力してください。全力で取り組んで成功した場合、それは確かな自信になるでしょう。全力で取り組んで失敗した場合は、先ほども述べたように、謙虚さを得ることができ、今後の人生の大きな糧となります。しかし、全力で取り組まなかった場合、結果がどうであれ、その挑戦がもたらす良い影響はほとんどないはずです。慢心になるか、内省を避けて言い訳をし、今後も本気で挑むのを避け続けるような生き方になります。

慢心せぬよう人一倍気をつけ、高い目標を設定し、努力し続けるということが人間性を高めることに重要なのはずです。

最後に

ここでは、僕が小学生から 10 年以上思い悩んでいた「挫折の価値」をまとめた。 一つの疑問として、本当の意味での挫折を味わったことのない人々が謙虚さを身につけるためにはどうしたら良いのか、ということがある。これについては、いずれ紹介したい企業がある。 成功しかしてこなかったような学生に内省の機会を与え、謙虚さを身につけさせるという取り組みを頑張っている企業がある。その企業のことを紹介したいと思う。

とにかく、かなり記事が長くなってしまったが、ここまで読んでくださり、ありがとうございます。

医学部は理系なのか

はじめに

本記事では、理系のトップとされている医学部について、述べたい。 私の意見はこうだ。すなわち、

医学部は理系だけでなく、文系の学生も入って良いのではないか。

医学部の実態

今からのべる話は、僕の友達の医学部勢(15人くらいはいる)の様子を見て思うことであり、その情報は特に新しいものでもないだろうし、公平な調査のもとで得られた結果でもないと断言する。しかし、それでもある程度は事実に準拠していることだとわかってほしい。

医学部の友達や、高校・予備校の先生などはみんな口を揃えていう。「医学部の勉強は暗記暗記暗記!数学なんてこれっぽっちもやらなくなったよ。いかに効率よく暗記をするか、つまりは効率のよい暗記方法の勉強が始まるのだ」、と。

このことからわかるように、医学部では数学や物理を扱うことはほとんどなく、基本的に暗記をしているのである。実際の臨床の練習では、手を動かしての演習があると思うが、それも別に数学を利用しているとは言い難いだろう。若干の理科の知識は必要とされるかもしれないが、そういった解剖に必要な知識等は医学部に入ってから学べるだろう。

医学部受験の実態

医学部受験について、述べたい。医学部を受験する学生は様々だ。

  • 両親や親戚が医者であり、その後継となるように教育され、医者を志す学生
  • とりあえず成績が良く、プライドが高いため、最難関と言われる医学部を目指すことになった学生
  • 自分や身内が医者にお世話になったり、ドラマに影響を受けたりして、医者に憧れ、医学部を志す学生
  • 年収目的で挑む学生

のようなタイプに分かれると考えられる。 ここで注目したいのは、二番目に書いたタイプの医学部受験生である。こいつは厄介であり、医学に対して特段のモチベーションがない状態で、自分のプライドのため、理系の最難関である医学部を受験するのである。「医学部受験をできるのに、理学部なんかに行こうもんなら、周りに逃げたとか言われて恥をかいてしまう。」、といった感情、すなわちプライドが駆動力となっている学生である。こういった学生は、医学部ではなく理学部がトップの世の中であれば理学部を志しているだろう。

今述べた、タイプ2 の学生を医学部に取られたくないというのが、僕の主張の一つである。プライド駆動であれ、医学部に合格できるほどの実力を身につけた学生は、今後本当に魅力的な学問に出会った時、凄まじい吸収力で全てを身につけ、新たな発見をするだろう。研究者として、日本に必要なのである。 たとえば、医学部に余裕で合格できる実力を持つ理系学生でも、医学部に受かってしまえばそれ以降、数学や理科を勉強することはなくなり、暗記志向型の勉強に切り替わってしまう。これは、もったいない。

優秀な理系の学生を医学部に取られることのデメリット

ここでは、本当に優秀な理系が多く、医学部にいってしまうことについて、述べたい。 そもそも、医学部に合格できる学生は、理系の中でもかなりずば抜けて頭が良い。というか、数学理科が強い。そういった学生が大学に入って、暗記主体の勉強に切り替えてしまうのは、どう考えても勿体なさすぎる。そういったずば抜けて優秀な理系にこそ、理学や工学の最先端に立ってもらい、日本の科学技術を引っ張っていってもらわなければならないのに。ひょっとしたら、日本の理系大学受験に根付いている医学部志向主義のせいで、日本は国際競争に遅れをとっているのではないだろうか。

また、医者というのは、基本的に限られた地域社会で暮らすものである。病院に固定されることが多いであろう。その点からも、理学部や工学部の学生よりは、どうしても日本国内に閉じた人生になるのではないだろうか。これに関しては、国際交流が加速している現代では、ある程度マシになっているかもしれないが。

ここまでのまとめ

ここまでの議論をまとめると、

優秀な学生こそサイエンスの最先端に立ち、日本を牽引すべきなのに、暗記主体で国内に閉じこもる可能性の高い医者になってしまい、その結果として科学技術の競争に出遅れているのではないか。

といったことになる。

解決策

ここまでの話が長くなってしまったが、解決策は簡単である。 すなわち、文系の学生も医学部を受験できるようにするというだけである。 そうすれば、

  • 文系学生が医学部受験枠の一定割合を占めるため、全体の枠に対する理系学生の枠の割合が減り、理系学生がより多く、他の学部に流れる。
  • 医学部は文系科目でもあるという認識が広まれば、「理系最難関の科目としての医学部」は崩れ去り、理学部や工学部、薬学部が注目される時代が来るはずである。その結果、優秀な理系学生がプライドのために、とりあえず医学部を受けるということがなくなるかもしれない。

このような方策をとれば、日本の優秀な理系学生がきちんとサイエンスのフロンティアに立ち、日本を引っ張っていく未来を迎えることができるだろう。

文系学生が医者になって大丈夫?

文系学生が医学部に合格しても、その先が不安かもしれない。しかし、それは心配無用である。

  • そもそも、医学部受験をしている理系学生は、「生物」を高校でやっていることが少なく、生物に関する知識で言えば、文系学生と変わらないレベルである。(さらに言えば、医学部は、大学に入ってからでもなんとかなりそうだと僕は思っている。)
  • 病気の原因を推察するために必要な論理的思考力が必要とされる場面もあるだろう。これは理系の分野だという人がいる。そんなわけがない。もしそうだとしたら、文系は何を勉強していた?文系だって、大学受験を経て、論理的思考力を身につけている。理系の特権のように思わない方が良い。
    • 現代文や社会の論述をやっている学生であれば、論理的思考力は非常に高いはずである。理系の学生はあまり文系の学生を見下さない方が良い。
    • (とはいったが、2次試験で現代文も社会も数学もやっていない学生には、正直医学部は難しいと思う。)

このようなことからわかるように、文系の学生であっても、十分勉強していれば、医学部に進学しても特段の問題はないように思われる。

まとめ

文系学生も、医学部に進学することができるはずである。 理系の優秀な学生が医学部に流れてしまわないように、文系学生も医学部を受験できるようにする必要がある。

最後に

拙い文章ではあるが、日々考えていることを少しはアウトプットできたように思う。意見があれば、コメントをいただければ嬉しいです。

関連記事

ut-bioinformatic.hatenablog.jp

ut-bioinformatic.hatenablog.jp

ut-bioinformatic.hatenablog.jp

ut-bioinformatic.hatenablog.jp

ut-bioinformatic.hatenablog.jp

ut-bioinformatic.hatenablog.jp

generalist か specialist か

はじめに

この記事では、generalist と specialist が何なのかを説明し、その上でそれぞれの強みを述べ、どちらを目指すべきかといった議論を行う。

generalist と specialist とは

ここでは、generalist と specialist の説明を行う。 generalist というのは、何でも幅広くこなせるもののことであり、「広く浅く」と表現されることが多い。それに対して、specialist とは、ある特定の領域に特化したもののことであり、「狭く深く」と表現される。

例えばニュース番組などでいつも出ているコメンテーターは、ジェネラリストと言えるだろう。ジェネラリストの彼らは、幅広い知識を持ち合わせ、それを組み合わせて目の前のニュースについて議論するのである。同様のニュース番組でも、その日のニュースに関係した専門家が日替わりで呼ばれている。彼ら専門家は、スペシャリストである。コメンテーターが持ち合わせていないような考え方や知識を持っている。 テレビ番組の場では、両者が建設的な議論を行うことで、視聴者の知的好奇心を満たすことができれば良いのだろう。

「広く、深く」を目指したい

僕は、ジェネラリストを目指していた。そもそも僕の生涯の目標として、

  • ありとあらゆる能力(知識、考え方、健康、コミュニケーション)の水準を最大にして、死ぬ。

というものがある。これはいわば、全分野に深い造形のあるジェネラリストといえるだろう。「広く、深く」である。

「広く、深く」へは、どういうルートがあるだろうか。

私は、大学での勉強を通して、「広く、深く」には限度があることを思い知った。一つの分野であっても、学ぶべきこと・キャッチアップすべきことが非常に多く、別の他の分野を深く究めるのは非常にコストがかかる。

このようなことから、私はまずはスペシャリストを目指そうと思った。 スペシャリストになるための努力を通じて、学び方の基本を理解したり、研究作法が身についたりするはずである。つまり、専門分野を先に作り、それを軸として他の分野に挑むという方針にしたのである。

この方針にすることで、「融合領域」を生み出しやすくなることは自明であろう。 他の分野に足を踏み入れる時、自分の専門分野と他の分野は脳内で融合し、全く新しい発想を生み出すであろう。それが、新たな学問領域になるはずである。

大学の先生が面白いことを言っていた。 優秀な研究者は、すでにある学問分野から専門を選択するのではなく、自分が面白いと思ったことを研究し、それが新たな学問分野になるのだ、と。

この話からもわかるように、まずはスペシャリストを目指し、そこから興味のある融合領域を次々に作っていけば、優秀な成果を収められるであろうし、「広く、深く」を実現できるかもしれない。

ならば、始めからジェネラリストを目指した場合、どうなるであろうか。ジェネラリストを目指した勉強をしていると、各分野において、「深く」理解することはできない。浅い理解しか持っていないような人に、根本的に新しい発明や発想ができるであろうか。やはり難しいであろう。広く浅くを繰り返していては、新規性のあるもの・考えを生み出すことは難しいであろう。 深く理解していないということは、物事の成り立ちの道理を曖昧なままにしているということであり、その状態ではひらめきを生み出しにくいからである。

まとめ

ジェネラリストとスペシャリストについて、研究者として生きるのであれば、スペシャリストとして生きることを勧める。 スペシャリストを目指し、専門分野を作ることで、それを軸にしてそこから広めることで、ジェネラリストにもなれるからである。 はじめからジェネラリストを目指していると、「浅い」知識しか身に付かず、強い洞察力は身につかない。その結果、新たな発想や発見をすることは難しいであろうし、「広く、深く」を実現することはほぼほぼ不可能であろう。

したがって、「広く、深く」を目指す意欲ある学生は、まずはスペシャリストを目指してはどうだろうか。一度スペシャリストになれさえすれば、そこを起点に広めていくことができ、ジェネラリストにもなれるであろう。

アイデアの生み出し方

はじめに

本記事では、アイデアの生み出し方について、意見を述べたい。

イデアが生まれる時、生まれない時

誰しも、アイデアが生まれるときと生まれないときがあるだろう。 その違いは何なのであろうか。それについて、述べたい。

あるテーマ A について、アイデアが生まれるとき、我々は事前にテーマ A についての理解が十分にできていることがほとんどである。言い換えれば、よく知っている話題についてはアイデアがよく生まれるが、あまり知らない、理解できていないテーマについては、アイデアを生み出すことが難しいのである。

イデアとは、それまでに身についている知識・考え方の土壌のもとで咲く花のようなものである。十分な理解のあるテーマであれば、良い土壌が形成されており、したがって綺麗な花が咲くだろう。逆に、十分勉強していない領域であれば、土壌は痩せており、タネを植えても花どころか芽さえ出てこないだろう。

つまり、アイデアを生み出せるかどうかというのは、事前にどれだけ勉強していたのか、に大きく影響されるのである。

どうしたらアイデアを効率よく生み出せるだろうか

二つの観点から、アイデアを生み出すためのアプローチがある。

基礎知識を増やす

上の段落でも述べたように、アイデアが生まれるかどうか、またそのアイデアの品質は、事前にどれだけの理解をしているかに依存する。このことから、アイデアが必要とされるとき、がむしゃらに考えるのではなく、一度今までの理解を固めることをお勧めする。アイデアを生み出したい時ほど、教科書に載ってあることを読み返すのである。教科書に新しいアイデアは書いていない。しかし、基礎知識を充実させることによって、高レベルな、良い発想が生まれるのである。

紙に書く。

人間の脳は、一度に覚えていられる物事の量が限られている。その記憶のことをワーキングメモリー(作業記憶)という。 ワーキングメモリーが限られていることから、より複雑なアイデアを頭の中だけで生み出すには、限界があるのである。 ワーキングメモリーの容量以上の考えを頭の中だけで生み出すことは、原理的に不可能であろう。容量オーバーである。

また、人間の脳が新しい発想を生み出すとき、その脳にあるのはその発想だけではない。関連した知識も同時に作業記憶に存在しているはずである。つまり、「テーマ A の関連知識」と「新たなアイデア」の合計が、作業記憶の容量を下回る必要があるのである。議論が数学的すぎるかもしれないが、わかりやすいだろう。

テーマ関連知識 + 新たなアイデア < 作業記憶の容量

が条件式になる。

このことから、頭の中だけで良いアイデアが生まれるはずがないということはわかるであろう。ならどうすれば良いのか。タイトルにも書いたように、書けば良いのであろう。自分で言葉にしたり図にしたり、アウトプットして目で認識できる形にすれば良い。そうすることによって、「紙の容量」の分だけ、作業記憶の容量は補充されるのである。そしてその分柔軟に脳を使うことができる。 脳のストレージを拡張し、アイデア生産のための容量をより大きく確保することで、高品質なアイデアが生まれるのである。

テーマ関連知識 + 新たなアイデア < 作業記憶の容量 + 紙の容量

が条件式になる

また、目で見てすぐに理解できるように、紙へのアウトプットはなるべく図を用いるのが良い。全てテキストベースだと、テキストを読むという作業が作業記憶の容量をとってしまい、アイデア創造のための容量が減ってしまうからである。一目見てすぐにわかるような図を書くことが、望ましい。

まとめ

イデアを生み出すには、そのテーマに関連する知識を十分に備えていなければならない。逆説的ではあるが、アイデアを生み出したいときこそ、既存の情報にふれる、つまり教科書を読んだり動画教材を視聴したりする必要があるのである。

また、よりレベルの高いアイデアを生み出すには、アイデア創造のための脳領域を確保する必要があり、そのために脳内の物事を紙に可視化し、脳内から外付け HDD にデータを移動してやる。そうすることによって脳はより多くの作業記憶の容量を利用することができ、発送は洗練されるのである。また、可視化においては、一目見て理解できるように、なるべく図を用いるのが望ましい。

終わりに

本記事を読んでくださった皆さん方が、より高水準なアイデアを生み出し、世の中を良くしていくことを願います。 ここまで読んでくださり、ありがとうございました。

関連記事

ut-bioinformatic.hatenablog.jp

ut-bioinformatic.hatenablog.jp

ut-bioinformatic.hatenablog.jp

ut-bioinformatic.hatenablog.jp

学歴フィルターの何が悪いのか

はじめに

僕はここで、学歴フィルターについて述べたい。そう、学歴フィルターである。あの、採用の際に大学名を見て、ある水準以下の大学出身の学生はそもそも切り捨てられることがあるというアレである。

学歴フィルターなんて存在しなければいいのにという人。

学歴フィルターを嫌悪する人たちは、

  • 人は学歴だけで決まらない
  • そもそもお金がなくて良い大学に入れなかった。
    • これに関しては、奨学金の見直しや普及に解決を委ねて今回は不問に付す。
  • 公平に評価してほしい

と言った声があると思う。お金については少し議論が複雑になってくるので、ここでははじめと最後の二つについて述べたい。

「人は学歴だけでは決まらない」ってほんと?

人という従属変数は、確かに学歴という説明変数だけでは説明しきれませんね。しかし、依存関係にあることは間違いないです。独立ではありませんね。

学歴が高い人というのは、それなりの努力をしてきたと思います。挫折をしてきた人も多いはずです。したがって、その分深みがある傾向はあるでしょう。

従って、必要条件として学歴で絞るというのは、採用コストを下げる必要のある企業にとっては非常に有効な方法なのです。

  • もっと公平に評価してほしい

高学歴の人たちは、その学歴を手に入れる過程で大いに苦労したはずです。努力したはずです。したがって、学歴を考慮した採用を行うことこそ、そういった過去の努力が報われるという点で、公平なのではないでしょうか。

学歴フィルターが一定の意味をなすとはいったが

ここまでで、僕が学歴フィルターに対してある程度公的的な立場をとっていることは伝わったと思う。 しかし、問題も存在する。 それは、多くの場合の学歴とは、大学入試の結果だということである。要は、大学でどれだけ頑張ったのか、という要素は学歴フィルターに含まれない。ここは問題のように思う。大学での成績も加味するべきだと思う。

しかし、

  • 多くの企業は、ガクチカも参考に採用を行なっている

という点から、

  • ガクチカ:大学生活の評価
  • 学歴:生まれてから高校卒業までの評価

という点で、ガクチカと学歴を合わせれば、その人の経歴を結構網羅しているようにも思える。

要は、学歴フィルターだけでは、大学で頑張ったことを無視することになるので、ガクチカ等、大学での努力や活動を採用指標の一つに定める必要があるよね、という話。

学歴フィルターとマイノリティ

マイノリティについても述べなければならない。そうでなければこのブログ記事は非常につまらないし、愚痴めいているし、それこそ学歴フィルターに文句を言う、「(できるのに)努力をしていない」人たちと同類である。

勉強をやりたいのに

学歴フィルターを批判すべきなのは以下のようなケースである。

  • 経済的な理由で進学が厳しい。
  • 精神的・身体的な理由で、頑張りたいのに頑張れない。
  • 頑張っても報われない(親や先生から厳しいことしか言われないなど。)

こういった人たちがいることを常に念頭に置いて、議論しなければならない。勉強をやろうと思えばやれたり、頑張ったら報われると思えるような環境で育ち、努力が裏切らないと信じることができていたりするのは、「特権」なのである。

「特権」を持たざるものがいることを理解しなくちゃいけない。(別の記事で、「特権」については詳しく書こうと思っている。)

このセクションに関しては、以下のURLを参考にされたい:

平成31年度東京大学学部入学式 祝辞 | 東京大学

上野千鶴子さんの、東大におけるスピーチである。とてつもなく印象的で、考えさえられるものである。

  • 最後に

ああ、今回もうまく話がまとまらなかった。しかしアウトプットは大事である。こうやって書くことを経て、文章は洗練されると信じている。これからも書いていこうと思う。

ここまで読んでくださり、ありがとうございました。

関連記事

ut-bioinformatic.hatenablog.jp

ut-bioinformatic.hatenablog.jp

ut-bioinformatic.hatenablog.jp

東大理学部学生が思う、就活の違和感・おかしさについて。

はじめに

この記事では、僕が常日頃から感じている就職活動ひいては就職そのものについての違和感、おかしいと思っている点を述べたい。 皮肉めいた記述が目立つかもしれないが、ご了承いただきたい。

就活みんなしてるよね。

大学生は3年生後半あたりから、就職を意識することが多い。僕は院進の予定であり(両親や周りの支えには感謝しかない)、就活を行う予定は今のところない。修士、博士と進めるなら進みたいし、研究者として歴史に名を残したいと言う気持ちもある。こういったアカデミック寄りの思考が根強いからかもしれないが、どうも大学3年生で就職活動がどうたらいっている人をみるといい気持ちにならない。これはどうしてなのであろうか、、色々考えてみた。

大学生の就職活動に感じる違和感

落ち着いて考えてみた。すると、僕が違和感を覚えているのは、必ずしも全ての就職活動に対してではないことがわかった。僕が嫌なのは、貴重な大学の時期を、就職のために利用するという考えであり、二年生三年生といった早めのタイミングから就職がとか企業がとか言って、肝心の大学における勉強を後回しにしたり、単位もほとんど取らないような学生が嫌なのである。さらに言えば、文系の(一部の)学部学科では、そもそも必修科目が少なく、就活前提に3年生のカリキュラムが組まれているところも少なくないであろう。そういった、大学の運営サイドが就活を前提として大学を動かしているという事実も嫌なのである。

就活ってなんだろう。

ここからは、僕の偏った思想が出てくるかもしれないが、聞いてほしい。 インターネットを徘徊すれば、就活では「自己分析」や「エントリーシート」、「面接対策」などの、僕からみたら正直一朝一夕にしか思えない技術を重宝するきらいがあると見える。大手企業に入るためにどうこうするだとか、あれはしてはならないとか、そんなことを調べて、時には自分を偽って、さらに血迷って資格を乱獲しようとさえするかもしれない。(僕は資格を取ることに意味はないと思っている。資格を取る過程には意味があるが。)

つまるところ、俗にいう就活に向けた対策というのは、付け焼き刃で本質的ではなく、実用面を重視したようなものにしか見えないのである。一方で、己の能力を時間をかけて磨き、コミュニケーション能力を上げるために多くの人と話したり、動画や本を読んで話し方を学習したりといったような、本質的な就活もあるとは思う。しかし僕にとっては、そういった就活も含め、大学生にはあまり注力して欲しくないのである。

大学生に、就活に熱中して欲しくない理由

導入

こんなことを先輩に言われるだろう。

先輩「二年生後半から就活始めた方がいいよ!絶対に早くやって方がいいよ。」

大学生活勿体なくない?

皆さんは就活に熱中、尽力する学生について、どう思うだろうか。熱心でいいことだと思うかもしれない。ここからが本記事の本質的な部分になると思う。

僕は、大学とは実用的ではないものを学ぶためのものだと思っている。 従って、就活に打ち込むような大学生は、大学生活を無駄にしているようにしか思えないのである。なぜならば、就活とはまさに実用的な面を重視し(面接対策やESは顕著。資格もそう。)、本来大学で行うべき学問と反対の性質を持つものだからである。

大学では、一見役に立たないような学問や(スポーツ)に打ち込むべきである。 僕の友人にいたのは、大学2年生の後半から就活を始めて、授業もあまり取らずにインターンがどうたらといつも行っている人がいた。僕はこう思う。こいつはなんのために大学に入ったんだろう、と。だって四年間しかない大学生活(しかも東大)で、貴重な講義を受ける権利を大いに無駄にして、後半 2 年以上を就職のために使うのってアホらしくないですか、、。インターンで学ぶことがあるのならいいんですが、僕はとりあえず就活を早くすればいいという風潮に異を唱えているんです。

ならどうやって就活すれば良いの

ここまで就活をけちょんけちょんに貶してきた。ならば、大学生は就活をどうすれば良いのだろうか。この問題は、多くの企業にも協力してもらわなければ解決はしないだろうが。

僕が思う理想的な就活のあり方として、二つの条件があると思っている。すなわち、

  • 大学の重要な意義である、非実用的な学問の追究に支障をきたさないようなもの
  • 付け焼き刃ではなく、本質的な基礎能力を上げるような努力をする形のもの

この二つを満たす就職活動であれば、僕は大学生活が無駄にならないと思う。直前に付け焼き刃のスキルをつけるための低レベルな活動ではなく、大学一年生二年生、いやもはや高校中学からコミュニケーション能力やリベラルアーツを身につけ、教養人を目指すことこそが僕の理想とする就職活動である。

そして、ここまできたら、就職のための活動というのは何かおかしい気がする。人生全体を通して自分のレベルアップをし続けるということにこそ価値があり、本質的であり、それの通過点として就職活動があるのだという方がふさわしいだろう。

そもそも就活がきついのは

そもそも、就職活動というのは、学生の今までの「過去」がみられるのであり、大学の最後の一年頑張ったところで変わるとは思えない。今まで小学校中学校、高校大学とどれだけ頑張ってきたかが出てくる場面なのである。大学で就活を苦労したのなら、過去の自分を恨むべきであり、企業がどうたら、面接対策がどうたらいうものではないと思う。(高学歴だからこそ言えるんだろ!と思うかもしれないが、高学歴の人は高学歴になったぶん、かなりの努力をしているのである。それが評価されているのである。)

まとめ

話が逸れかけてきたので、一旦まとめる。

僕が主張したいのは、

  • 大学生は就職活動に多くの時間を割かないで、実用的でない学問を追求してほしい
  • 一朝一夕の就活ではなく、生まれてから今までの期間の成長の成果が就活の説明変数である。人生を通じて、常に成長し続ける姿勢を身につければ、あえて就職活動に尽力する必要はないはずである

というようなことである。

最後に

だいぶ愚痴っぽくなってしまった部分がある。 しかし、これは是非とも企業や就活生に考えてほしいものである。もっと言えば、小学校、中学校教育においても伝えてほしいものである。就活のみに関して言えば、大学生になってからどうこう頑張ったとて、手遅れなケースがあるはずである。もっと前から継続的に成長し続けていなければならないのである。それを教師は伝えてあげる必要がある。

今後は別の記事にて、 学歴フィルターがどうたらこうたらということについて述べようと思う。

関連記事

ut-bioinformatic.hatenablog.jp

ut-bioinformatic.hatenablog.jp

ut-bioinformatic.hatenablog.jp

ut-bioinformatic.hatenablog.jp

ut-bioinformatic.hatenablog.jp

ut-bioinformatic.hatenablog.jp

ut-bioinformatic.hatenablog.jp

ナップサック問題(判定版)が弱NP完全問題であることの証明

はじめに

定期テストに向けて、Karp's Reduction の流れに沿って、諸々の問題の NP 完全性を示すことができるように勉強する必要が生じた。 ここでは、ナップサック問題が弱 NP 完全問題であることを、Partition が弱 NP 完全問題であることを利用して、証明する。

Partition について

Partition における入力は、 n 個の要素からなる整数集合  S = { a_1, a_2, ..., a_n} である。 出力すべきは、

ある  X \subset S で、 \begin{equation} \sum_{i \in X} a_i = \sum_{i \not \in X} a_i \end{equation} を満たす X は存在するか。

である。 見てわかるように、判定問題である。

動的計画法を用いることによって、入力サイズ  L(I) = \displaystyle \sum_{i=1}^n a_i と入力の最大値  M(I) = \max (a_i) によって、 O(L(I)M(I)) の計算量で問題を解くことができる。これは一見多項式時間で解けるように見えるのだが、計算量が入力の数の大きさ  M(I) に依存するという点で、擬似多項式時間と呼ばれる。

まとめると、Partition は NP 完全問題であり、擬似多項式時間で解くアルゴリズムは存在する。そのことから、Partition は弱 NP 完全問題と呼ばれる。

ナップサック問題(判定版)K の定義

判定版ナップサック問題を以下のように定義する。:

  • 入力:
    •  n 個の物品
    • 各物品  i の重さ  w_i
    • 各物品  i の価値  v_i
    • ナップサックの容量(重さ) C
    • 目標値  k
  • 出力:
    • ある集合

      \begin{equation} X \subseteq \lbrace 0, 1, ..., n \rbrace \end{equation}

      で、

\begin{equation} \sum_{i \in X} w_i \leq C \text{ and } \sum_{i \in X} v_i \geq k \end{equation}

となる  X は存在するか。

ナップサック問題(判定版)K が NP 完全であることの証明

以下の二つを示して初めて、証明できたこととなる。つまり、

  •  K は NP 問題
  •  K \leq_m Partition となる多項式時間還元が存在する

このことに注意して、判定版ナップサック問題 K が NP 完全であることを証明する。

1. K が NP 問題であることについて

 X が与えられたとする。この時、その  X が条件を満たすかどうかの判定は、実際に

\begin{equation} \sum_{i \in X} w_i \leq C, \quad \sum_{i \in X} v_i \geq k \end{equation}

を計算して、両者が成り立っていることを確認すれば良い。これは明らかに多項式時間で行えるため、判定版ナップサック問題は明らかに NP 問題である。

2. K が Partition から多項式時間還元が可能であることの証明

任意の Partition 問題があるナップサック問題多項式時間で変換することができることを示す。

任意の入力  a_1, a_2, ..., a_n を考える。この時、

\begin{align} &^\forall i, \, w_i = a_i \\ &^\forall i, \, v_i = a_i \\ & C =\dfrac{1}{2} \sum_{i=1}^n a_i \\ & k = \dfrac{1}{2} \sum_{i=1}^n a_i \end{align}

と変数を定義する。これは Partition の入力から、ナップサック問題の入力形式への写像であり、多項式時間で計算することは容易である。

この時、集合  X \subseteq \lbrace 0, 1, ..., n\rbrace について、

\begin{align} & \sum_{i \in X} a_i = \sum_{i \not \in X} a_i \\ \Leftrightarrow & \sum_{i \in X} a_i = \dfrac{1}{2} \sum_{i = 1}^n a_i \\ \Leftrightarrow & \sum_{i \in X} a_i \leq \dfrac{1}{2} \sum_{i = 1}^n a_i \text{ and } \sum_{i \in X} a_i \geq \dfrac{1}{2} \sum_{i = 1}^n a_i \\ \Leftrightarrow & \sum_{i \in X} w_i \leq C \text{ and } \sum_{i \in X} v_i \geq k \\ \end{align}

となる。 したがって、任意の Partition 問題はある形の ナップサック問題に還元することができる(多対一)。

まとめると、 任意の Partition は多項式時間還元によって、限られた形のナップサック問題(判定版)に帰着することができる。

3. まとめる

ここまでの議論(1. と 2.)より、 判定版ナップサック問題は NP 完全問題である。

判定版ナップサック問題に擬似多項式時間アルゴリズムがあることについて

よく知られているように、動的計画法によって、ナップサック問題を解くことができる。計算量は、 \begin{equation} O(n \max(w_i)) \end{equation} となり、入力の数値のサイズに依存していることがわかる。この式より、ナップサック問題は擬似多項式次官アルゴリズムを持つ。 したがって、ナップサック問題は弱 NP 完全問題である。

まとめ

判定版ナップサック問題が弱 NP 完全問題であるということがわかった。 導出はそこまで難しくなかったものの、Partition が弱 NP 完全であり、Partition to knapsack が多項式時間還元できたとしても、knapsack 問題が弱 NP 完全であるといい切ってはならないというのが注意点であろう。Partition から多項式時間還元をしたことによって、knapsack 問題の限定された形の問題が擬似多項式時間で解けるということがわかった。ただしそれだけでは、ナップサック全ての問題が擬似多項式時間で解けるということの説明にはなっていない。forall と exists に細心の注意を払って論を進める必要があるのである。

感想

ナップサック問題競技プログラミングでよく出てくる。 競技プログラミング、一時期ハマったが、結局魅力がわからなくなってしまった。計算量理論の勉強のように、数学によるゴリゴリの理論が僕にはしっくりくる。競技プログラミングや生物学実験については、今後は熱中できないと思うなぁ。。頑張って無縁の世界に挑みたい。

関連記事

ut-bioinformatic.hatenablog.jp

ut-bioinformatic.hatenablog.jp