<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>塵も積もれば備忘録</title>
	<atom:link href="http://localhost/feed?simply_static_page=2324" rel="self" type="application/rss+xml" />
	<link>/</link>
	<description>ふわふわ</description>
	<lastBuildDate>Sat, 09 Dec 2023 20:05:27 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.4.2</generator>
	<item>
		<title>ローカルなLLMを利用して日本語要約を行い、GPTで自動評価してみた（ガバガバ検証）</title>
		<link>/2023/12/10/llm-summarization.html</link>
		
		<dc:creator><![CDATA[es-key]]></dc:creator>
		<pubDate>Sat, 09 Dec 2023 19:44:18 +0000</pubDate>
				<category><![CDATA[LLM]]></category>
		<category><![CDATA[NLP]]></category>
		<guid isPermaLink="false">/?p=187</guid>

					<description><![CDATA[雑に実験設定したらちょっと残念な結果になりました...... また、この記事はLLM Advent Calender 2&#46;&#46;&#46;]]></description>
										<content:encoded><![CDATA[<p>雑に実験設定したらちょっと残念な結果になりました......<br />
また、この記事は<a href="https://qiita.com/advent-calendar/2023/llm">LLM Advent Calender 2023</a> シリーズ2の記事です。</p>
<h2>まとめ</h2>
<ul>
<li>ローカルLLMを使って日本語要約してみた</li>
<li>作成した要約をGPTと人手（自分）評価で評価してみた</li>
<li>Generation Configの重要性（せめてHuggingface-hubに記載の値を使うべき）</li>
</ul>
<h2>概要と背景</h2>
<p>振り返ってみると2023年はLLM関連が非常にホットなトピックだったような印象があります。<br />
LLMにプロンプトを投げるといい感じの出力を出してくれるので、私自身困ったらGPT、みたいなそこそこ頼れるアシスタントとしてよく使っています。</p>
<p>LLMができることの一つとして文書要約があると思います。<br />
GPT-3.5やGPT-4は「次の文書を要約してください。{文書}」みたいな入力をいれるだけでいい感じに要約してくれてすごいなと小学生並みの感想にはなりますが思っています。</p>
<p>2023年は日本国内企業もLLMの開発を盛んに行い、様々なモデルが発表されました。<br />
気になってくるのはその性能ですよね。<br />
<a href="https://github.com/Stability-AI/lm-evaluation-harness/tree/jp-stable">Stability AI版のlm-evaluation-harness</a>、<a href="https://yuzuai.jp/benchmark">Rakuda benchmark</a>、<a href="https://github.com/llm-jp/llm-jp-eval">llm-jp-eval</a>など、様々な評価ツール、データセットなどが公開され、数値として様々な評価結果が報告されています。<br />
すごく参考になる一方で、やっぱり自分のほうでもどんな出力が得られるのか確認したいなと思いまして、今回日本語要約で精度検証をしてみました。</p>
<h2>ローカルLLMを使って日本語要約を実施</h2>
<h3>検証モデルとその設定</h3>
<p>今回は以下のモデルに関して検証を行っています（並び順は適当です）。</p>
<ul>
<li>Xwin-LM/Xwin-LM-7B-V0.2</li>
<li>Xwin-LM/Xwin-LM-13B-V0.2</li>
<li>meta-llama/Llama-2-7b-chat-hf</li>
<li>meta-llama/Llama-2-13b-chat-hf</li>
<li>mistralai/Mistral-7B-Instruct-v0.1</li>
<li>elyza/ELYZA-japanese-Llama-2-7b-fast-instruct</li>
<li>stabilityai/japanese-stablelm-instruct-gamma-7b</li>
<li>stabilityai/japanese-stablelm-instruct-beta-7b</li>
<li>stabilityai/japanese-stablelm-instruct-ja_vocab-beta-7b</li>
<li>llm-jp/llm-jp-13b-instruct-full-jaster-dolly-oasst-v1.0</li>
<li>matsuo-lab/weblab-10b-instruction-sft</li>
<li>rinna/youri-7b-instruction</li>
<li>cyberagent/calm2-7b-chat</li>
</ul>
<p>検証対象のモデルは、</p>
<ul>
<li>Instruction Tuning済みのモデル</li>
<li>A100一枚の環境で検証するため、fp16、bf16で動作するモデル</li>
</ul>
<p>という観点で適当に集めました。<br />
ちなみに検証環境はGoogle Colabです。<br />
使用したnotebookは[こちら]()。</p>
<p>また、検証時のプロンプト（チャットテンプレート）は各モデルについてHuggingface-hubに記載されているものを使用しています。<br />
（モデルごとに全然違うのちょっと大変でした......Huggingfaceの <code>tokenizer.apply_chat_template</code>がもっと出回ってほしい......）</p>
<p>また、Generation Configですが、なんと今回は<strong>すべてデフォルト値を使用</strong>しています！<br />
理由としては単純に個々のモデルについて調べて設定するのを嫌がった、という完全にこちらがさぼっただけになります......<br />
（一応の思想としては、優れたモデルはパラメータ適当でもなんとかなるだろうし、すべてのモデルでパラメータチューニングさぼれば公平な比較だろう、ぐらいの感覚ではありました。）</p>
<p>結論を述べると、一部のモデルでそもそも要約がうまくできない結果となり、原因の一端としてこのGeneration Configが考えられるかもしれません。</p>
<h3>検証データと評価方法</h3>
<p>今回は検証データとして<strong>既存の日本語要約データを使っていません</strong>。<br />
理由として、データリークの恐れがあったことが大きいです。</p>
<p>じゃあどうやって要約の精度評価をするかですが、今回は簡単に11件の文書をLLMに要約してもらい、その要約結果をGPTで自動評価します。<br />
具体的にはGPT-4に要約対象の文書と要約結果を与えて、「consistency」「relevance」「fluency」「coherence」の４項目を1-5の5段階評価してもらう、というものになっています。<br />
Human-like Summarization Evaluation with ChatGPT. <a href="https://arxiv.org/abs/2304.02554">[link]</a>によると、データセットにもよりますが、GPT-3.5での評価は人手評価とそこそこ相関するとのことです。<br />
今回使用した評価用プロンプトはこちらです。</p>
<details>
<summary>評価プロンプト</summary>
<pre>
<code>
evaluation_prompt = "ニュース記事に対する日本語要約文書の品質を評価してください。"\
                    "次の4つの評価項目に関して評価してください: relevance faithfulness fluency coherence"\
                    "relevance は要約がどれだけ記事の要点を捉えているかを表しています。記事の重要な内容のみが要約に含まれているかどうか確認してください。"\
                    "faithfulness は要約中の事実が記事中の事実と一致しているかを表しています。要約がすべての事実を正確に再現しているか、事実と異なる情報を述べていないか確認してください。"\
                    "fluency は個々の文がよく書けているか、文法的に正しいかどうかを表しています。"\
                    "coherence は全ての文がまとまっていて、自然に思えるかどうかを表しています。全体としての要約の品質を確認してください。"\
                    "各項目の評価は1（最悪）から5（最高）までの5段階評価をしてください。\n"\
                    "ニュース記事: {}\n"\
                    "要約文書: {}
</code>
</pre>
</details>
<p>一応こちらの論文は英語要約に関する話なので、今回は日本語要約についても同様の傾向がみられるか検証するため、人手評価も簡単に実施し、相関を計ってみたいと思います。<br />
（作業者は自分だけなので、あくまで参考値的にはなります。）</p>
<p>また、前述の通りデータリークを考慮して、今回使用する11件の文書は2023年に投稿されたニュース記事を使用しています。<br />
（11件の選択方法は完全に自分の好みで選んでます。）</p>
<h2>作成した要約を評価</h2>
<p>あくまで今回は各LLMを要約に使った際にどのぐらいの精度になったのかを述べるだけなので、LLMの動かし方などは割愛し、さっそく評価結果を載せたいと思います。</p>
<h3>GPTで自動評価してみた</h3>
<p>GPT-4での評価結果は次の通りです。</p>
<table>
<thead>
<tr>
<th>model</th>
<th style="text-align: right;">relevance</th>
<th style="text-align: right;">consistency (faithfulness)</th>
<th style="text-align: right;">fluency</th>
<th style="text-align: right;">coherence</th>
<th style="text-align: right;">average</th>
</tr>
</thead>
<tbody>
<tr>
<td>Xwin-LM-7B-V0.2</td>
<td style="text-align: right;">4.9091</td>
<td style="text-align: right;"><strong>4.9545</strong></td>
<td style="text-align: right;">4.9545</td>
<td style="text-align: right;"><strong>5.0000</strong></td>
<td style="text-align: right;"><strong>4.9545</strong></td>
</tr>
<tr>
<td>Xwin-LM-13B-V0.3</td>
<td style="text-align: right;"><strong>4.9545</strong></td>
<td style="text-align: right;">4.8636</td>
<td style="text-align: right;">4.8636</td>
<td style="text-align: right;">4.9545</td>
<td style="text-align: right;">4.9091</td>
</tr>
<tr>
<td>Llama-2-7b-chat-hf</td>
<td style="text-align: right;">4.0455</td>
<td style="text-align: right;">3.5455</td>
<td style="text-align: right;">4.8182</td>
<td style="text-align: right;">4.5455</td>
<td style="text-align: right;">4.2386</td>
</tr>
<tr>
<td>Llama-2-13b-chat-hf</td>
<td style="text-align: right;">4.3636</td>
<td style="text-align: right;">4.2273</td>
<td style="text-align: right;"><strong>5.0000</strong></td>
<td style="text-align: right;">4.8182</td>
<td style="text-align: right;">4.6023</td>
</tr>
<tr>
<td>Mistral-7B-Instruct-v0.1</td>
<td style="text-align: right;">4.5455</td>
<td style="text-align: right;">4.1818</td>
<td style="text-align: right;">4.7273</td>
<td style="text-align: right;">4.3636</td>
<td style="text-align: right;">4.4545</td>
</tr>
<tr>
<td>ELYZA-japanese-Llama-2-7b-fast-instruct</td>
<td style="text-align: right;">4.7273</td>
<td style="text-align: right;">4.5909</td>
<td style="text-align: right;"><strong>5.0000</strong></td>
<td style="text-align: right;">4.7273</td>
<td style="text-align: right;">4.7614</td>
</tr>
<tr>
<td>japanese-stablelm-instruct-gamma-7b</td>
<td style="text-align: right;">3.8182</td>
<td style="text-align: right;">4.3182</td>
<td style="text-align: right;">3.9091</td>
<td style="text-align: right;">3.2727</td>
<td style="text-align: right;">3.8295</td>
</tr>
<tr>
<td>japanese-stablelm-instruct-beta-7b</td>
<td style="text-align: right;">4.4545</td>
<td style="text-align: right;">4.5455</td>
<td style="text-align: right;">4.6364</td>
<td style="text-align: right;">4.4545</td>
<td style="text-align: right;">4.5227</td>
</tr>
<tr>
<td>japanese-stablelm-instruct-ja_vocab-beta-7b</td>
<td style="text-align: right;">4.4091</td>
<td style="text-align: right;">4.1818</td>
<td style="text-align: right;">4.6364</td>
<td style="text-align: right;">4.3182</td>
<td style="text-align: right;">4.3864</td>
</tr>
<tr>
<td>llm-jp-13b-instruct-full-jaster-dolly-oasst-v1.0</td>
<td style="text-align: right;">1.0000</td>
<td style="text-align: right;">1.0000</td>
<td style="text-align: right;">2.0000</td>
<td style="text-align: right;">2.0000</td>
<td style="text-align: right;">1.5000</td>
</tr>
<tr>
<td>weblab-10b-instruction-sft</td>
<td style="text-align: right;">4.7273</td>
<td style="text-align: right;">4.5455</td>
<td style="text-align: right;"><strong>5.0000</strong></td>
<td style="text-align: right;">4.8182</td>
<td style="text-align: right;">4.7727</td>
</tr>
<tr>
<td>youri-7b-instruction</td>
<td style="text-align: right;">3.8182</td>
<td style="text-align: right;">4.3636</td>
<td style="text-align: right;"><strong>5.0000</strong></td>
<td style="text-align: right;">4.3636</td>
<td style="text-align: right;">4.3864</td>
</tr>
<tr>
<td>calm2-7b-chat</td>
<td style="text-align: right;">4.5455</td>
<td style="text-align: right;">4.2727</td>
<td style="text-align: right;"><strong>5.0000</strong></td>
<td style="text-align: right;">4.5000</td>
<td style="text-align: right;">4.5795</td>
</tr>
</tbody>
</table>
<p>それぞれの項目を見てみると、relevanceでは、Xwinから順に大半のモデルが4以上となっています。<br />
つまり、大半のLLMはそれなりに入力文書と関連した内容を要約にできている、ということのようです。</p>
<p>consistency（faithfulness）についてですが、こちらもrelevanceと同様に大半のモデルが4になっています。いわゆる忠実性についても大半のLLMは満たしていそうです。</p>
<p>生成した要約のfluencyについてですが、こちらはなんと複数のLLMで11件すべて5を獲得しています。<br />
ほかのモデルに関しても大半が4.5以上となっており、出力された日本語の流暢性も問題なさそうです。</p>
<p>最後に出力された要約のcoherenceですが、こちらも大半のモデルが4以上となっています。</p>
<p>以上の結果をまとめてみると、GPT-4によると、2023年のニュース記事要約11件においては、大半のモデルは「relevance」「consistency」「fluency」「coherence」のどれも非常に高いレベルで達成できる、ということがわかります。</p>
<p>一方で、いくつかのモデル、特に「llm-jp-13b-instruct-full-jaster-dolly-oasst-v1.0」は軒並み低い結果となっていますが、これは何が起きているのでしょうか。<br />
それを確かめるためにも、前述の通りGPT-4ではなく人手でも同様に4項目について5段階評価を実施しました。</p>
<h3>人手で評価してみた</h3>
<p>人手評価の結果が次の通りです。</p>
<table>
<thead>
<tr>
<th>model</th>
<th style="text-align: right;">relevance</th>
<th style="text-align: right;">consistency (faithfulness)</th>
<th style="text-align: right;">fluency</th>
<th style="text-align: right;">coherence</th>
<th style="text-align: right;">average</th>
</tr>
</thead>
<tbody>
<tr>
<td>Xwin-LM-7B-V0.2</td>
<td style="text-align: right;">3.0000</td>
<td style="text-align: right;">4.2000</td>
<td style="text-align: right;">3.5000</td>
<td style="text-align: right;">3.0000</td>
<td style="text-align: right;">3.4250</td>
</tr>
<tr>
<td>Xwin-LM-13B-V0.2</td>
<td style="text-align: right;">3.6000</td>
<td style="text-align: right;">5.0000</td>
<td style="text-align: right;">4.5000</td>
<td style="text-align: right;">4.1000</td>
<td style="text-align: right;">4.3000</td>
</tr>
<tr>
<td>Llama-2-7b-chat-hf</td>
<td style="text-align: right;">3.6000</td>
<td style="text-align: right;">3.1000</td>
<td style="text-align: right;">1.4000</td>
<td style="text-align: right;">4.8000</td>
<td style="text-align: right;">3.2250</td>
</tr>
<tr>
<td>Llama-2-13b-chat-hf</td>
<td style="text-align: right;">3.7000</td>
<td style="text-align: right;">4.2000</td>
<td style="text-align: right;">3.0000</td>
<td style="text-align: right;">4.5000</td>
<td style="text-align: right;">3.8500</td>
</tr>
<tr>
<td>Mistral-7B-Instruct-v0.1</td>
<td style="text-align: right;">3.3000</td>
<td style="text-align: right;">4.2000</td>
<td style="text-align: right;">3.4000</td>
<td style="text-align: right;">3.5000</td>
<td style="text-align: right;">3.6000</td>
</tr>
<tr>
<td>ELYZA-japanese-Llama-2-7b-fast-instruct</td>
<td style="text-align: right;">4.2000</td>
<td style="text-align: right;">4.5000</td>
<td style="text-align: right;">4.4000</td>
<td style="text-align: right;">4.2000</td>
<td style="text-align: right;">4.3250</td>
</tr>
<tr>
<td>japanese-stablelm-instruct-gamma-7b</td>
<td style="text-align: right;">3.1000</td>
<td style="text-align: right;">4.5000</td>
<td style="text-align: right;">3.5000</td>
<td style="text-align: right;">3.1000</td>
<td style="text-align: right;">3.5500</td>
</tr>
<tr>
<td>japanese-stablelm-instruct-beta-7b</td>
<td style="text-align: right;">2.8000</td>
<td style="text-align: right;">4.7000</td>
<td style="text-align: right;">3.7000</td>
<td style="text-align: right;">3.6000</td>
<td style="text-align: right;">3.7000</td>
</tr>
<tr>
<td>japanese-stablelm-instruct-ja_vocab-beta-7b</td>
<td style="text-align: right;">3.3000</td>
<td style="text-align: right;">4.5000</td>
<td style="text-align: right;">4.0000</td>
<td style="text-align: right;">4.0000</td>
<td style="text-align: right;">3.9500</td>
</tr>
<tr>
<td>llm-jp-13b-instruct-full-jaster-dolly-oasst-v1.0</td>
<td style="text-align: right;">1.0000</td>
<td style="text-align: right;">1.0000</td>
<td style="text-align: right;">1.0000</td>
<td style="text-align: right;">1.0000</td>
<td style="text-align: right;">1.0000</td>
</tr>
<tr>
<td>weblab-10b-instruction-sft</td>
<td style="text-align: right;">3.2000</td>
<td style="text-align: right;">4.8000</td>
<td style="text-align: right;">4.3000</td>
<td style="text-align: right;">4.5000</td>
<td style="text-align: right;">4.2000</td>
</tr>
<tr>
<td>youri-7b-instruction</td>
<td style="text-align: right;">3.4000</td>
<td style="text-align: right;">5.0000</td>
<td style="text-align: right;">4.5000</td>
<td style="text-align: right;">4.6000</td>
<td style="text-align: right;">4.3750</td>
</tr>
<tr>
<td>calm2-7b-chat</td>
<td style="text-align: right;">3.7000</td>
<td style="text-align: right;">4.5000</td>
<td style="text-align: right;">4.0000</td>
<td style="text-align: right;">3.6000</td>
<td style="text-align: right;">3.9500</td>
</tr>
</tbody>
</table>
<p>いったんそれぞれの項目を見ていきます。</p>
<p>relevanceについてですが、Elyzaモデルが唯一4を超えていて、大半のモデルは3点台となりました。<br />
5段階評価の3点台なので、すごくいいわけではないが、そこそこ良い、が大半のようです。</p>
<p>consistency（faithfulness）については大半のモデルが4を超える結果となりました。<br />
要約結果の忠実性は人手評価でも十分良さそうです。</p>
<p>fluencyについてなのですが、半分程度が4以上となり、GPT-4の結果と比べて少し低めとなりました。<br />
面白い点としては、日本語の語彙を明確に含むようにしていないモデルのほうが低めの傾向になっていそうです。（ただしXwin-LM-13B-V0.2は不明）</p>
<p>coherenceについても同様に半数程度が4以上となりました。</p>
<p>以上から、GPT-4の評価と比べると人手評価の結果は全体的に低めとなりました。<br />
特にrelevanceは顕著に低い結果です。<br />
現状、人手評価といっても自分ひとりで評価したため、あくまで自分が低めに評価しすぎ、という可能性もあります。<br />
このあたりの乖離について、より精巧な人手評価を行い明らかにしてみたいところです。</p>
<p>ちなみにllm-jpモデルについてなのですが、人手評価でも一貫して低い結果となっています。<br />
これは何が起きているかというと、<strong>llm-jpモデルは要約を生成できていませんでした</strong>。<br />
下記に実際のLLMの出力例を載せておきます。<br />
11件すべてについて以下のような出力を行っていたため、自分はすべての項目で1を付けた次第です。</p>
<details>
<summary>llm-jpモデルの出力例</summary>
<pre>
<code>
/*
* Copyright (c) 2018 THL A29 Limited, a Tencent company. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the \"License\");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied.  See the License for the
* specific language governing permissions and limitations
* under the License.
*/

namespace TencentCloud.Vod.V20180717.Models
{
    using Newtonsoft.Json;
    using System.Collections.Generic;
    using TencentCloud.Common;

    public class DescribeVideoDetailResponse : AbstractModel
    {        
        /// <summary>
        /// 视频详情列表
        /// </summary>
        [JsonProperty(\"VideoDetailList\")]
        public VideoDetail[] VideoDetailList{ get; set; }

        /// <summary>
        /// 唯一请求 ID，每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        /// </summary>
        [JsonProperty(\"RequestId\")]
        public string RequestId{ get; set; }

        /// <summary>
        /// For internal usage only. DO NOT USE IT.
        /// </summary>
        internal override void ToMap(Dictionary<string, string> map, string prefix)
        {
            this.SetParamArrayObj(map, prefix + \"VideoDetailList.\", this.VideoDetailList);
            this.SetParamSimple(map, prefix + \"RequestId\", this.RequestId);
        }
    }
}

</code>
</pre>
</details>
<p>ぱっと思いつく原因としては、「Generation Configが不適切」や「そもそも長文対応していない」などが挙げられます。<br />
せめてGeneration ConfigをHuggingface-hubの値にしておけば前者は多少軽減できたのですが.......<br />
次に似たことをやるかどうかはわかりませんが、この辺りは注意しておいたほうが良さそうです。</p>
<h3>GPT評価と人手評価の相関を算出</h3>
<p>GPT-4と人手評価の結果が出たので、それらの相関を見てみます。</p>
<p>スピアマンの相関係数は次の通りです。</p>
<table>
<thead>
<tr>
<th></th>
<th style="text-align: right;">relevance</th>
<th style="text-align: right;">consistency (faithfulness)</th>
<th style="text-align: right;">fluency</th>
<th style="text-align: right;">coherence</th>
</tr>
</thead>
<tbody>
<tr>
<td>sample単位</td>
<td style="text-align: right;">0.343</td>
<td style="text-align: right;">0.619</td>
<td style="text-align: right;">0.421</td>
<td style="text-align: right;">0.282</td>
</tr>
<tr>
<td>system単位</td>
<td style="text-align: right;">0.244</td>
<td style="text-align: right;">0.658</td>
<td style="text-align: right;">0.492</td>
<td style="text-align: right;">0.343</td>
</tr>
</tbody>
</table>
<p>相関係数の解釈は人によりけり、タスクによりけりだと思いますが、個人的には今回の要約評価タスクだともう少し欲しいなという印象です。<br />
特にrelevanceとcoherenceはちょっと物足りない感が......</p>
<p>今回GPT-4に投げるプロンプトは、先行研究のHuman-like Summarization Evaluation with ChatGPT.で使用されたものを日本語化したものなので、もう少し工夫の余地はありそうです。<br />
確かにGPT-4を使えばreference summary無しで要約評価ができそうなのは魅力ですが、現状だとざっくりスコアを出したいときに使うようなもの、という印象です。</p>
<h3>各LLMの要約圧縮率</h3>
<p>今回は適当に要約を生成するようにLLMにプロンプトを入れているのですが、割とモデルごとに出力される要約長が異なることを確認したので共有します。</p>
<table>
<thead>
<tr>
<th></th>
<th style="text-align: right;">average</th>
<th style="text-align: right;">median</th>
<th style="text-align: right;">std</th>
</tr>
</thead>
<tbody>
<tr>
<td>Xwin-LM-7B-V0.2</td>
<td style="text-align: right;">0.814</td>
<td style="text-align: right;">0.862</td>
<td style="text-align: right;">0.133</td>
</tr>
<tr>
<td>Xwin-LM-13B-V0.2</td>
<td style="text-align: right;">0.757</td>
<td style="text-align: right;">0.868</td>
<td style="text-align: right;">0.294</td>
</tr>
<tr>
<td>Llama-2-7b-chat-hf</td>
<td style="text-align: right;"><strong>0.401</strong></td>
<td style="text-align: right;">0.361</td>
<td style="text-align: right;">0.166</td>
</tr>
<tr>
<td>Llama-2-13b-chat-hf</td>
<td style="text-align: right;"><strong>0.277</strong></td>
<td style="text-align: right;">0.234</td>
<td style="text-align: right;">0.145</td>
</tr>
<tr>
<td>Mistral-7B-Instruct-v0.1</td>
<td style="text-align: right;">0.557</td>
<td style="text-align: right;">0.535</td>
<td style="text-align: right;">0.347</td>
</tr>
<tr>
<td>ELYZA-japanese-Llama-2-7b-fast-instruct</td>
<td style="text-align: right;"><strong>0.355</strong></td>
<td style="text-align: right;">0.206</td>
<td style="text-align: right;">0.303</td>
</tr>
<tr>
<td>japanese-stablelm-instruct-gamma-7b</td>
<td style="text-align: right;">2.62</td>
<td style="text-align: right;">1.76</td>
<td style="text-align: right;">2.71</td>
</tr>
<tr>
<td>japanese-stablelm-instruct-beta-7b</td>
<td style="text-align: right;">0.874</td>
<td style="text-align: right;">0.987</td>
<td style="text-align: right;">0.576</td>
</tr>
<tr>
<td>japanese-stablelm-instruct-ja_vocab-beta-7b</td>
<td style="text-align: right;">0.652</td>
<td style="text-align: right;">0.152</td>
<td style="text-align: right;">1.15</td>
</tr>
<tr>
<td>llm-jp-13b-instruct-full-jaster-dolly-oasst-v1.0</td>
<td style="text-align: right;">0.864</td>
<td style="text-align: right;">0.588</td>
<td style="text-align: right;">0.681</td>
</tr>
<tr>
<td>weblab-10b-instruction-sft</td>
<td style="text-align: right;">0.521</td>
<td style="text-align: right;">0.549</td>
<td style="text-align: right;">0.39</td>
</tr>
<tr>
<td>youri-7b-instruction</td>
<td style="text-align: right;"><strong>0.178</strong></td>
<td style="text-align: right;">0.0608</td>
<td style="text-align: right;">0.29</td>
</tr>
<tr>
<td>calm2-7b-chat</td>
<td style="text-align: right;"><strong>0.445</strong></td>
<td style="text-align: right;">0.462</td>
<td style="text-align: right;">0.367</td>
</tr>
</tbody>
</table>
<p>上記の表は圧縮率に関するものです。<br />
averageが入力記事と出力要約の単語数比をsampeleで算術平均したもの、medianが中央値、stdが標準偏差です。<br />
averageの太字は0.5以下のものを指しています（0.5は適当ですが、要約には文書を半分くらいにはして欲しいかなと思いその値に設定しました）。</p>
<p>ちなみに<code>japanese-stablelm-instruct-gamma-7b</code>は平均して圧縮率が2.62倍となっていて、入力記事と比べて要約が長くなっていることがわかります。<br />
何が起きていたかというと、n-gramのrepetationがいくつかのsampleで発生していて、それを残していた、ということになっています（stdの通り、repetationが発生しない場合もあります）。</p>
<h2>まとめ</h2>
<p>いくつかのLLMを使って日本語要約を実施して、その出力をGPT-4および人手で評価してみました。<br />
やってみると現状公開されているモデル（一部）でもニュース記事要約タスクなら普通に動きそうな印象でした。</p>
<p>GPT-4と人手評価の相関も計測してみましたが、評価の観点においてはちょっと弱い相関となりました。<br />
今のところGPT-4での評価はざっくりスコアを求める用かもしれません（人手評価のほうも一人なのでちょっと怪しいです）。</p>
<p>また、LLMごとに入力記事に対して出力される要約長が異なることも確認できました。<br />
用途に合わせてモデルを選択するなどが重要かもしれません。</p>
<p>今回はGeneration Configでさぼってしまった点、人手評価がガバガバな点で検証としていまいちなものになってしまいました。<br />
個人でもっといい感じにできる検証設定を思いついたらまた何かLLMで遊んでみようと思います。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>突然気胸で二週間入院することになったのでEMNLP2022の採択論文を眺めた話</title>
		<link>/2023/02/22/emnlp2022readings.html</link>
		
		<dc:creator><![CDATA[es-key]]></dc:creator>
		<pubDate>Tue, 21 Feb 2023 17:34:43 +0000</pubDate>
				<category><![CDATA[NLP]]></category>
		<guid isPermaLink="false">/?p=158</guid>

					<description><![CDATA[暇だったので。 まとめ 気胸で入院することで828件のタイトルを眺め、最終的に28件の論文を読んだ 個人的にめちゃくちゃ&#46;&#46;&#46;]]></description>
										<content:encoded><![CDATA[<p>暇だったので。</p>
<h2>まとめ</h2>
<ul>
<li>気胸で入院することで828件のタイトルを眺め、最終的に28件の論文を読んだ</li>
<li>個人的にめちゃくちゃ面白かった論文は多分こちら
<ul>
<li>Invariant Language Modeling.</li>
<li>PromptBERT: Improving BERT Sentence Embeddings with Prompts.</li>
<li>Automatic Document Selection for Efficient Encoder Pretraining.</li>
</ul>
</li>
<li>トホホ、気胸はもうこりごりだよぉ～</li>
</ul>
<h2>概要</h2>
<p><a href="https://eskaylog.com/2023/02/06/chatgpt-diary.html">以前の投稿</a>でも触れましたが、1月末から二週間ほど気胸で入院していました。。。<br />
自分の場合、病院受診、緊急搬送、即入院の流れだったので、手元にスマホしかない状況でした。<br />
あまりにも暇かつ、何もしていないと思考が悪い方向に進んでいくので、現実逃避も兼ねてEMNLP2022の採択論文を眺めた次第です。</p>
<h2>採択論文の眺め方</h2>
<p>今回の場合、時間に余裕があるので本会議採択論文828件のタイトルを眺めて、その中から気になったものをちゃんと読む形をとりました。<br />
具体的には次の工程です。</p>
<ol>
<li>EMNLP2022採択論文828件のタイトルを全て眺めて、気になったものを残す</li>
<li>1の各論文のアブストラクトを眺めて、気になったものを残す</li>
<li>2で残った論文を（程度は様々に）読む</li>
</ol>
<p>タイトル、アブストラクトの順で篩にかける形ですね。<br />
大体1の工程で1/10程度になって、2で1/5程度になる印象です。</p>
<p>ちなみに3番まで進んだ論文は必ずintroductionは読んで、面白かったら精読するし、ちょっと気になるぐらいなら斜め読み、なんか違うかなとなったらそこで読むのを止めてます。</p>
<p>今回は実際に3番まで進んだ論文一覧をメモとして列挙します。<br />
（解説とかではないです。）</p>
<h3>EMNLP2022で気になった論文一覧</h3>
<p>気になった論文は次の28件です。</p>
<pre><code>The Geometry of Multilingual Language Model Representations.
Toward Unifying Text Segmentation and Long Document Summarization.
SNAC: Coherence Error Detection for Narrative Summarization.
RetroMAE: Pre-Training Retrieval-oriented Language Models Via Masked Auto-Encoder.
Zero-Shot Text Classification with Self-Training.
Efficient Nearest Neighbor Search for Cross-Encoder Models using Matrix Factorization.
How Far are We from Robust Long Abstractive Summarization?
Summarizing Community-based Question-Answer Pairs.
Sparse Teachers Can Be Dense with Knowledge.
DuReaderretrieval: A Large-scale Chinese Benchmark for Passage Retrieval from Web Search Engine.
Invariant Language Modeling.
CTRLSUM: Towards Generic Controllable Text Summarization.
A Survey of Active Learning for Natural Language Processing.
Bernice: A Multilingual Pre-trained Encoder for Twitter.
Revisiting Grammatical Error Correction Evaluation and Beyond.
X-FACTOR: A Cross-metric Evaluation of Factual Correctness in Abstractive Summarization.
HashFormers: Towards Vocabulary-independent Pre-trained Transformers.
Decoding a Neural Retriever’s Latent Space for Query Suggestion.
PromptBERT: Improving BERT Sentence Embeddings with Prompts.
Incorporating Relevance Feedback for Information-Seeking Retrieval using Few-Shot Document Re-Ranking.
Few-shot Learning with Multilingual Generative Language Models.
Automatic Document Selection for Efficient Encoder Pretraining.
Large Dual Encoders Are Generalizable Retrievers.
Improving Iterative Text Revision by Learning Where to Edit from Other Revision Tasks.
Mask the Correct Tokens: An Embarrassingly Simple Approach for Error Correction.
CODER: An efficient framework for improving retrieval through COntextual Document Embedding Reranking.
CiteSum: Citation Text-guided Scientific Extreme Summarization and Domain Adaptation with Limited Supervision.
Pseudo-Relevance for Enhancing Document Representation.</code></pre>
<h3>ワードクラウドで遊ぶ</h3>
<p>せっかくなので、読んだ論文28件のアブストラクトをワードクラウドに入れてみました。<br />
（ストップワードは適当に設定しています。）<br />
<figure id="attachment_165" aria-describedby="caption-attachment-165" style="width: 1200px" class="wp-caption aligncenter"><img fetchpriority="high" decoding="async" src="/wp-content/uploads/2023/02/wordcloud_abst.png" alt="" width="1200" height="800" class="size-full wp-image-165" srcset="/wp-content/uploads/2023/02/wordcloud_abst.png 1200w, /wp-content/uploads/2023/02/wordcloud_abst-300x200.png 300w, /wp-content/uploads/2023/02/wordcloud_abst-1024x683.png 1024w, /wp-content/uploads/2023/02/wordcloud_abst-768x512.png 768w" sizes="(max-width: 1200px) 100vw, 1200px" /><figcaption id="caption-attachment-165" class="wp-caption-text">EMNLP2022 読んだ論文の概要ワードクラウド</figcaption></figure></p>
<p>特徴的な単語としては「query」、「retrieval」、「embedding」、「summarization」とかでしょうか。<br />
そうでしょうね的な感想しかでないです。。。</p>
<h3>論文メモ</h3>
<p>28件の論文のうち、特に気になる論文のメモを残しておきます。<br />
（解説とかではないので、内容が気になった場合は元論文に当たってください。）</p>
<h4>RetroMAE: Pre-Training Retrieval-oriented Language Models Via Masked Auto-Encoder.</h4>
<p><a href="https://aclanthology.org/2022.emnlp-main.35/">https://aclanthology.org/2022.emnlp-main.35/</a></p>
<p>Retrieval系のお話です。<br />
検索用の分散表現作成を目的として、MAE (Masked Auto-Encoder) を利用した事前学習を行った論文です。<br />
MAEはreconstructionをやってて、それがめちゃくちゃ効いた的な話みたいです。<br />
Fig.1が概要図になってます。</p>
<h4>Zero-Shot Text Classification with Self-Training.</h4>
<p><a href="https://aclanthology.org/2022.emnlp-main.73/">https://aclanthology.org/2022.emnlp-main.73/</a></p>
<p>Zero-Shot分類でNLIベースのものが既存研究であって、それにself-trainingを足した話です。<br />
手法としては素直なんですが、結果がけっこう上がっていてちょっと驚きました。</p>
<h4>How Far are We from Robust Long Abstractive Summarization?</h4>
<p><a href="https://aclanthology.org/2022.emnlp-main.172/">https://aclanthology.org/2022.emnlp-main.172/</a></p>
<p>最近流行り？のLong Text SummarizationについてBART、PEGASUSベースのモデルのベースライン調査を行ってます。<br />
また、relevanceとfactual consistencyについて、人手と自動評価の相関を測定してます。<br />
特にこのメタ評価の話（Table 3）は勉強になりました。</p>
<h4>Invariant Language Modeling.</h4>
<p><a href="https://aclanthology.org/2022.emnlp-main.387/">https://aclanthology.org/2022.emnlp-main.387/</a></p>
<p><a href="https://arxiv.org/abs/1907.02893">Invariant Risk Minimization (IRM)</a>をBERTの事前学習で実施することで、invariant性を満たすような実験結果が確認できた的な話です。<br />
やりたいことはFig. 1の通りで、それを実現する学習の流れがAppendix A.のFig. 3に記載されています。</p>
<p>もう少し語ると、学習データのenvironments（だいたいドメイン）間でのinvariant relationshipを学習しよう、みたいな話がcausal inferenceではよくあるので、それをBERTでやった話、のはずです。<br />
各enviromentのfeatureをinvariantなものと、spurious、つまりenvironments間で一般化できないものに分けて考えて、前者を素性抽出できるモデル（BERTなど）を作成することを頑張った話だと思います。<br />
このモデル作成は、IRMおよび<a href="https://arxiv.org/abs/2002.04692">IRM-games</a>を参考にして行うのですが、この部分がすごくシンプルな構造になっています（Alg. 1）。</p>
<p>検証としては</p>
<ol>
<li>robustness to noise</li>
<li>bias removal</li>
<li>out-of-domain generalization</li>
</ol>
<p>を行っていて、それぞれで有効であることを報告しています。</p>
<p>また、Sec. 5.2では提案手法が表層的な話ではなく、潜在空間の話であることを強調するために、environmentとしてmultilingual（EnglishとFarsi）で実験した話も掲載されています。</p>
<p>EMNLP2022の中で個人的にこの論文が一番面白く、勉強になったのですが、うまく言語化できていない感があります。。。</p>
<h4>CTRLSUM: Towards Generic Controllable Text Summarization.</h4>
<p><a href="https://aclanthology.org/2022.emnlp-main.396/">https://aclanthology.org/2022.emnlp-main.396/</a></p>
<p>要約の出力制御は大抵モデル構造、出力構造で頑張ることが多い（と思っている）のですが、<br />
この研究ではキーワード（Prompt）で出力制御を行うことを目指しています。</p>
<p>入出力の例はTab. 1にあります。<br />
夢があるなーとか思いながら読んでいました。</p>
<h4>A Survey of Active Learning for Natural Language Processing.</h4>
<p><a href="https://aclanthology.org/2022.emnlp-main.414/">https://aclanthology.org/2022.emnlp-main.414/</a></p>
<p>タイトルの通りです。<br />
現在のActive Learningの主要な研究トピックがまとまっています。</p>
<p>Active LearningをAlg. 1にまとめていて、その構成要素を各章で解説する形を取っています。<br />
基本的にアノテーションするサンプルを選択する研究について書いてあります。</p>
<h4>Revisiting Grammatical Error Correction Evaluation and Beyond.</h4>
<p><a href="https://aclanthology.org/2022.emnlp-main.463/">https://aclanthology.org/2022.emnlp-main.463/</a></p>
<p>GECの自動評価尺度はm2、ERRANTと呼ばれる編集部分の一致を確認する方法、またはGLEUと呼ばれるBLEUのような方法が（少なくとも自分が研究していたときは）よく使われています。<br />
この論文では、編集部分の一致を取りつつ、BERTScoreの手法を混ぜた自動評価尺度を提案しています。</p>
<h4>X-FACTOR: A Cross-metric Evaluation of Factual Correctness in Abstractive Summarization.</h4>
<p><a href="https://aclanthology.org/2022.emnlp-main.478/">https://aclanthology.org/2022.emnlp-main.478/</a></p>
<p>factuality改善に関する要約に関する論文です。<br />
factuality-awareな要約モデルを調査した後、3.7章で自動評価尺度間の相関を、3.8章で人手相関を報告しています。</p>
<p>特に3.7章は面白く、Tab. 5に記載されているROUGEと各種factuality評価尺度の相関は勉強になりました。<br />
「How Far are We from Robust Long Abstractive Summarization?」もそうですが、factualityは要約において重要な要素だと思うので、もうしばらく追っていきたいですね。</p>
<h4>PromptBERT: Improving BERT Sentence Embeddings with Prompts.</h4>
<p><a href="https://aclanthology.org/2022.emnlp-main.603/">https://aclanthology.org/2022.emnlp-main.603/</a></p>
<p>特になんの工夫もなくBERTの出力ベクトルをそのまま類似度算出などに使用するとうまくいかないことが往々にしてあります。<br />
この現象の理由として、BERTのベクトル空間がanisotropicで、narrow coneな埋め込みになっているから（<a href="https://arxiv.org/abs/2104.08821">SimCSE</a>など）だと言われています。<br />
（ちなみにnarrow coneの話は<a href="https://aclanthology.org/D19-1006/">この論文</a>が詳しいです。昔研究室で論文紹介したスライドが<a href="https://www.slideshare.net/SatoruKatsumata/how-contextual-are-contextualized-word-representations">こちら</a>。）</p>
<p>この論文では、BERTが出力する分散表現がうまく働かない原因として、anistropicというより、BERTのlayerが効果的に機能していないのと、0-layer（つまりstatic embedding）のbiasが影響していると主張しています。<br />
詳しくはSec. 3に記載されています。<br />
実際、2つめのbiasに関する調査として、Fig. 1に図示した例が載っていますが、たしかに頻度、case/uncase、subwordで分かれているのがわかります。</p>
<p>この対応として、Promptingをベースとした文分散表現作成を提案しています。<br />
[MASK]トークンを利用して分散表現を作成することで、問題となったbiasも軽減され、MLMの事前学習で[MASK]トークンのhiddenならばBERTのlayerも機能する、と言った具合のようです。<br />
詳しくはSec. 4に記載されています。</p>
<p>確かにこの方法（といくつかの工夫）でSimCSEといった手法と比べて高い精度となっていて、ちょっとおもしろいと思いました。</p>
<h4>Automatic Document Selection for Efficient Encoder Pretraining.</h4>
<p><a href="https://aclanthology.org/2022.emnlp-main.647/">https://aclanthology.org/2022.emnlp-main.647/</a></p>
<p>データ選択手法と聞いて何を思い浮かべますか？<br />
自分はMoore and Lewis. <a href="https://aclanthology.org/P10-2041/">[link]</a>がシンプルかつ動かしやすくて好きです。<br />
この論文では、Cynical Data Selection <a href="https://arxiv.org/abs/1709.02279">[link]</a>を利用してデータ選択を行います。</p>
<p>具体的には、BERTの事前学習に使用するデータのためにこの手法を用いています。<br />
in-domainなBERTを作成する際に、そのドメインのデータだけでなく、一般ドメインのデータからそのドメインに関連するデータを選択し、事前学習に使用します。<br />
このように関連するデータを使用することで、効率的にin-domainのモデルを作成することが期待されます。</p>
<p>恥ずかしながら、Cynical Data Selectionを知らなかったので勉強になりました。</p>
<h4>Large Dual Encoders Are Generalizable Retrievers.</h4>
<p><a href="https://aclanthology.org/2022.emnlp-main.669/">https://aclanthology.org/2022.emnlp-main.669/</a></p>
<p>パラメータ数がすごく大きいDual EncoderはBM25やColBERTより高い精度になることを実験的に示した論文です。<br />
評価はMS MarcoやBM25で行っていて、Fig 1.やTab. 3に実験結果が載っています。<br />
他にも、分析などが報告されていて勉強になりました。</p>
<h4>Improving Iterative Text Revision by Learning Where to Edit from Other Revision Tasks.</h4>
<p><a href="https://aclanthology.org/2022.emnlp-main.678/">https://aclanthology.org/2022.emnlp-main.678/</a></p>
<p>Grammarly Paperです。<br />
Revisionして欲しい文章が与えられたら、自動でintent edit span（単語ごとにfluencyのeditが必要、coherenceのeditが必要といったもの）を推定し、その結果を別途Revisionモデルに投げて修正を行います（Fig. 1が概要図です。）。<br />
これをIterativeに行うことで、Revisionを実施しています。</p>
<p>文章の修正は以前から興味があり、すごく勉強になりました。</p>
<h2>論文を読んだ感想</h2>
<p>論文は適度に頭を使いながら読めるので、夢中になって読むことができました。</p>
<p>ただ、正直なところ、手術前日とかはあまり集中して論文読めなかったです。<br />
逆に手術数時間前は結構ちゃんと読めました。現実逃避したかったんだとおもいます。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>気胸で二週間入院したときの日記をChatGPTのようなモデルで要約してみた</title>
		<link>/2023/02/06/chatgpt-diary.html</link>
		
		<dc:creator><![CDATA[es-key]]></dc:creator>
		<pubDate>Sun, 05 Feb 2023 16:04:32 +0000</pubDate>
				<category><![CDATA[NLP]]></category>
		<guid isPermaLink="false">/?p=152</guid>

					<description><![CDATA[入院してました...... まとめ ChatGPT は雑に良い トホホ、気胸はもうこりごりだよぉ～ 概要 気胸で二週間ほ&#46;&#46;&#46;]]></description>
										<content:encoded><![CDATA[<p>入院してました......</p>
<h2>まとめ</h2>
<ul>
<li>ChatGPT は雑に良い</li>
<li>トホホ、気胸はもうこりごりだよぉ～</li>
</ul>
<h2>概要</h2>
<p>気胸で二週間ほど入院していました。</p>
<p>入院生活めちゃくちゃ暇なので、色々やっていて、その中の一つで日記を書いたりしてました。<br />
せっかく珍しく日記とか書いたので公開、と思ったのですが、そのまま出すと後悔しそうなので（激ウマギャグ）、今流行りのChatGPTを一段挟むことにしました。</p>
<h2>ChatGPT</h2>
<p>ChatGPTについては散々ネットに解説記事が出回っていると思うのでここでは解説はしません。<br />
今回はOpenAIが提供している<strong>ChatGPTのようなモデル</strong>を使ってみました。</p>
<h3>ChatGPTのようなモデル？</h3>
<p>GPTには色々モデルがあるのですが、その中でも今回はいわゆる「text-davinci-003」を触っています。<br />
<a href="https://platform.openai.com/docs/model-index-for-researchers">こちらのOpenAi公式ページ</a>を読んでいただくと分かる通り、「code-davinci-002」に対してInstructGPTを行い、さらにPROで精度向上させたモデルとなっています。</p>
<p>ちなみに、<a href="https://openai.com/blog/chatgpt/">OpenAIのChatGPTに関するページ</a>を眺めてみると同じようなことが書いてあります。<br />
おそらく、ChatGPTの内部のモデルは「text-davinci-003」で、推論に使用する各種パラメータまで含めてChatGPTと呼称されているのかと思います（ドキュメント斜め読みマンなので違っていたらすいません。。。）。</p>
<p>そんなわけで、今回はChatGPTと同じパラメータを持つと思われるモデルを用いて要約を行いたいと思います。</p>
<h2>要約</h2>
<h3>入力（プロンプト）とか設定とか</h3>
<p>今回は次のようにプロンプトを入れてます。</p>
<pre><code>次の日記を要約

&lt;日記&gt;
</code></pre>
<p>また、各種推論パラメータは次のパラメータを使用しました。</p>
<details>
<summary>推論パラメータ</summary>
<div>
<p>- temprature: 0.7<br />
- maximum length: EOS が出るまで出力ボタンクリック<br />
- Top P: 1<br />
- Frequency penalty: 0<br />
- Presence penalty: 1<br />
- Best of: 1
</p></div>
</details>
<h3>約二週間分の日記をまとめて要約</h3>
<p>まるまる全てを要約してみると次のような出力になりました。</p>
<pre><code>要約：最初の日から十三日目までの体調の悪化、検査の結果により手術が必要となるまでの病院生活を記した日記である。
最終的には手術が成功し、退院することができたが、思いもよらぬ料金請求書が届いてしまう</code></pre>
<p>ほぼほぼその通りです。<br />
特に言うことないですね。</p>
<h3>一日ごとに要約してみる</h3>
<p>せっかくなので、一日ごとに要約してみました。</p>
<h4>一日目</h4>
<pre><code>今日は最寄りのお医者様へ行き、気胸で緊急搬送が決まった。
搬送先を探しても満床で見つからなかったが、個室なら可能ということで搬送される。
酸素飽和度が低下しそうになり神だと感じた回復体位をとった。
緊急搬送車で搬送され、PCRやCTを受けてから一週間ほど入院することになった。
管を入れる際には部分麻酔でも痛くて耐えられなかったが、個室に入ったあとは熱も出てフラフラしたので眠りたいが痛くて眠れないという思いを体験した。</code></pre>
<blockquote>
<p>管を入れる際には部分麻酔でも痛くて耐えられなかったが、</p>
</blockquote>
<p>耐えてます。日記ではギリギリ耐えたって書いてます。あまり舐めないでいただきたい。</p>
<h4>二日目</h4>
<pre><code>今日は病院の寝たくない朝を迎え、朝ごはんの準備で利き腕を使えなかったことやレンタルサービスなどの説明を受け、レントゲン検査をして膨らんでいるかを診てもらうが、痛みがあり眠れない夜を過ごした。</code></pre>
<blockquote>
<p>レントゲン検査をして膨らんでいるかを診てもらう</p>
</blockquote>
<p>これは肺のことですね。気胸は自然に治る、つまり自然に穴が塞がって膨らむ場合が多いので、それをレントゲンで検査しています。<br />
ちょっと流暢性が残念な感じですね。。。</p>
<h4>三日目</h4>
<pre><code>三日目の病院では管がまだ痛いので横になることを考えた。
レントゲンで肺はまだ膨らんでいないと判明し、健康保険だと個室代はかからないことが分かり、さっさと退院することを夢見た。
暇なのでemnlp2022の採択論文を眺め、夜は少し眠れた。</code></pre>
<p>大体あってます。<br />
ちなみにemnlp2022の採択論文を眺めた話はあとでブログで公開予定です。</p>
<h4>四日目</h4>
<pre><code>
要約：四日目の入院生活に慣れてきたが、肺は戻らず、吸引をかけるか手術を取る必要があり、退院の夢は幻想だった。
今日もemnlpのタイトルを眺めていたが、病院のベットの硬さで背中の痛みが残っている。</code></pre>
<blockquote>
<p>肺は戻らず、吸引をかけるか手術を取る必要があり</p>
</blockquote>
<p>ここちょっと変ですね。<br />
吸引というのは外から圧力で肺を膨らませて、自然に穴が塞がるのを手助けする医療行為なのですが、手術との二択ではないです。<br />
吸引してもうまく塞がらなかったら手術のはず。</p>
<p>生成される要約、coherenceがイケてない？</p>
<h4>五日目</h4>
<pre><code>今日は起きる癖がついたとのことで、吸引で肺が膨らんだという祝福を得た。
しかし、密林から注文した下着が届かなくなりコノザマ現象が発生している。
そして、emnlpのタイトル一覧を読み終わり、明日から気になった論文を読む予定。
最後に夜は背中が痛いという日記だった。</code></pre>
<p>大体あってます。<br />
というか割とそのままかもです。</p>
<h4>六日目</h4>
<pre><code>
本日は起床時間が7時で、レントゲンがない為、読書やソシャゲをするなどして暇を持て余した。
また、今回から腕も動き出したのでシャンプーを自分で行うことに挑戦したが、洗面台に頭や腕が収まらず、シャワーヘッドの操作も難しかった。
下着が無事届いたことで幸せを噛み締め、肺の状態も気になるところだった。</code></pre>
<p>内容はあってるんですが、もうちょっと圧縮率いじりたいですね。<br />
シャワーのくだりとか「シャワーは難しかった」で十分な気が。。。</p>
<h4>七日目</h4>
<pre><code>今日はレントゲン検査の結果が出たが、問題があり手術を回避できず、再度吸引が必要となった。
論文を読んだりソシャゲしたりしながら一日を過ごした。</code></pre>
<p>あってます。<br />
問題っていうのは肺が自然に膨らまなかったことですね。</p>
<h4>八日目</h4>
<pre><code>今日から内科から外科に移ったことで、手術が現実的になりつつある。
月末だから仕事の方で必要な処理を済ませて、退院後の金銭面なども都合をつけようとしているが、肩が痛いためか現実放棄気味だ。</code></pre>
<blockquote>
<p>肩が痛いためか現実放棄気味だ。</p>
</blockquote>
<p>ちょっと違いますね。<br />
肩が痛いからじゃなくて、手術をするという事実から現実放棄って日記には書いています。</p>
<h4>九日目</h4>
<pre><code>九日目に入院し、全身麻酔での手術を覚悟していることを書いた日記である。
ベッドから正面にカレンダーがある病院の空気がナーバスにさせる。
しかし、抱きたくもない希望を抱いてしまうこともあり、今日も肩が痛いというような不安がある。</code></pre>
<p>ちょっと話それますが、なんで病院の個室ってベットの真正面にカレンダー置くんですかね？<br />
日数感覚とかだとは思うんですが、個人的にはその辺意識するとメンタルダメージ負うかもです。<br />
肩が痛いのは不安ではなく事実。</p>
<h4>十日目</h4>
<pre><code>明日の手術の前に、今日は忙しくなかった。
午前中は手術前同意で少し忙しいが、午後はいつも通りの日常活動を行った。
洗濯や乾燥も行い最後の晩餐はパン粉であげた鮭だった。</code></pre>
<p>大体あってますが、 <strong>日常活動</strong>って単語はちょっと違うかな。。。<br />
<strong><em>いつも通りの入院生活</em></strong>とかが個人的には好ましいんですが、その辺の機微をモデルに求めるのはちょっと酷か。</p>
<h4>十一日目</h4>
<pre><code>11日目に手術を受け、意識が飛んでいたところから目覚めた。
痛みが強くて、動くこともつらい状態だったが、必死にトイレまで行くことになった。</code></pre>
<p>急に圧縮してきました。</p>
<blockquote>
<p>意識が飛んで</p>
</blockquote>
<p>これは全身麻酔で意識が飛んで、ということですね。<br />
出術後は痛み以外にも吐き気とかもありました。</p>
<h4>十二日目</h4>
<pre><code>今日は腰の痛みがあり、レントゲン検査を受けたところ問題なさそうだった。
時間を置いて再度検査を受け、今度こそ大丈夫だったとのことでドレーンを抜いてもらったところ、全ての痛みがなくなった。
保険の力で請求書の額が抑えられたが、今夜も体は痛いとのことだった。</code></pre>
<blockquote>
<p>腰の痛み</p>
</blockquote>
<p>背中ですね。<br />
腰は痛くなったことそんなになかったと思います。</p>
<blockquote>
<p>全ての痛みがなくなった</p>
</blockquote>
<p>仙豆かなにか？<br />
全ての痛みがなくなるのではなく、痛みが薄れた、が正しいです。</p>
<h4>十三日目</h4>
<pre><code>十三日間の入院が終わり、体温は37度になり料金は高いものとなった。</code></pre>
<p>正しいですが、ちょっと無理矢理くっつけすぎですね。。。</p>
<h3>要約してもらった感想</h3>
<p>正しいといえば正しいですが。。。<br />
まあZeroでやってこれなので、その辺を踏まえると十分かもですね。<br />
圧縮率周りもある程度はプロンプトでいじれば対応できると思いますし。</p>
<p>気胸に関するちゃんとした体験記はそのうち暇なときにメモとして残すと思います。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>2022年の個人的総括と2023年の目標</title>
		<link>/2022/12/31/2022matome.html</link>
		
		<dc:creator><![CDATA[es-key]]></dc:creator>
		<pubDate>Sat, 31 Dec 2022 08:36:42 +0000</pubDate>
				<category><![CDATA[振り返り記事]]></category>
		<guid isPermaLink="false">/?p=148</guid>

					<description><![CDATA[およそ1年ぶりの更新になります。。。 まとめ 勤務技術ブログの執筆しかやってない 何もしなくても何かをしていても時間は等&#46;&#46;&#46;]]></description>
										<content:encoded><![CDATA[<p>およそ1年ぶりの更新になります。。。</p>
<h2>まとめ</h2>
<ul>
<li>勤務技術ブログの執筆しかやってない</li>
<li>何もしなくても何かをしていても時間は等しく無くなることを実感</li>
<li>2023年やりたいこと:
<ol>
<li>DeepSpeedに詳しくなる</li>
<li>成果物までたどり着く</li>
</ol>
</li>
</ul>
<h2>2022年にやったこと</h2>
<p>昨年もやっていた、2022年に世間一般に公開した技術的な話を時系列列挙してみたいと思います。</p>
<ol>
<li>2022年1月: 勤務先ブログにて「<a href="https://tech.retrieva.jp/entry/20220128">深層学習の量子化に入門してみた 〜理論編〜</a>」を公開</li>
<li>2022年3月: 勤務先ブログにて「<a href="https://tech.retrieva.jp/entry/20220304">深層学習の量子化に入門してみた 〜BERTをDynamic Quantization〜</a>」を公開</li>
<li>2022年5月: 勤務先ブログにて「<a href="https://tech.retrieva.jp/entry/20220527">深層学習の量子化に入門してみた 〜BERTをStatic Quantization〜</a>」を公開</li>
<li>2022年7月: 勤務先ブログにて「<a href="https://tech.retrieva.jp/entry/20220704">深層学習の量子化に入門してみた 〜BERTをIntel Neural CompressorでStatic Quantization〜</a>」を公開</li>
<li>2022年12月: 勤務先ブログにて「<a href="https://tech.retrieva.jp/entry/20221201">DeepSpeed Compressionを使ってtask-specific BERTを蒸留してみた</a>」を公開</li>
</ol>
<p>勤務先で技術ブログを書く文化がなかったらどうなっていたんだろう。。。</p>
<h3>振り返り</h3>
<p>2022年は量子化とか蒸留を用いたモデルサイズ軽減にハマっていたみたいですね。<br />
昨今機械学習モデルがどんどん大きくなるので、この辺調べると面白いかなと思ってやってみたら実際面白かったので1年通して調べてたみたいな感じです。<br />
モデルサイズ軽減以外にも学習などなど様々な状況で取り回しが良さそうなDeepSpeedも面白く、まだまだ発展していくライブラリのような気がしました。<br />
来年もこの辺は調べると思います。</p>
<p>今年他にやったこととしては技術的な知識を仕入れた点とかでしょうか。<br />
<a href="https://www.amazon.co.jp/dp/4048930591
">Clean Code</a>、<a href="https://www.amazon.co.jp/dp/4798116831
">レガシーコード改善ガイド</a>、<a href="https://www.amazon.co.jp/dp/4274217884
">テスト駆動開発</a>とかは結構参考になったような気がしますが、身についたかどうかはよくわからないです。。。</p>
<p>成果物？知らないですね。。。</p>
<h3>2022年の総括</h3>
<p>2022年は良く言えば来年のために充電していた年、悪く言えば何もしていない年だったと思います。<br />
仕事終わってご飯食べてゲームして寝るだけでも一日は充実するんですね。。。</p>
<p>世間一般だとStableDiffusionとかChatGPTが話題になって、深層学習モデルが広く注目された年だったこともあり、自分もその辺でなにかしようかなとか思ったような気もしますが、逆張り気質なので結局投げるなどしてしまった記憶がちょっとありますね。。。</p>
<h2>2023年の目標</h2>
<p>2023年はとりあえず継続してDeepSpeedには詳しくなっておきたいですね。<br />
これからも継続して使うライブラリのような気がします。<br />
他にも量子化だとQATとかさわってないのでその辺はやりたいかな？</p>
<p>あとはやっぱり何か外に共有したい、とかが目標になるのかなと思います。<br />
個人的に技術記事とか成果物とかって興味持った事柄を触っていると勝手に生えてくるものかと思っていたのですが、（少なくとも自分は）そうではなさそうなので、強い意志をもって成果物を生み出せるように活動していきたいと思います。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>OpenAIのGLIDEでちょっと遊んでみた結果&#8230;！？</title>
		<link>/2022/02/01/glide.html</link>
		
		<dc:creator><![CDATA[es-key]]></dc:creator>
		<pubDate>Mon, 31 Jan 2022 19:25:45 +0000</pubDate>
				<category><![CDATA[CV]]></category>
		<guid isPermaLink="false">/?p=95</guid>

					<description><![CDATA[2021年の年末にOpenAIが発表したGLIDEをちょっと遊んだので共有します。 まとめ GLIDEとかいうテキストを&#46;&#46;&#46;]]></description>
										<content:encoded><![CDATA[<p>2021年の年末にOpenAIが発表した<a href="https://arxiv.org/abs/2112.10741">GLIDE</a>をちょっと遊んだので共有します。</p>
<h2>まとめ</h2>
<ul>
<li>GLIDEとかいうテキストを入れたらそれを反映した画像を出力するモデルがOpenAIによって公開された</li>
<li>OpenAIによってsmallサイズのGLIDEが公開されているのでちょっと遊んでみた
<ul>
<li>論文内容の解説記事ではないです</li>
</ul>
</li>
<li>CVの流行りも色々変わっていくんですね</li>
<li>バイアス大変そう</li>
</ul>
<h2>GLIDEって？</h2>
<p>2021年12月、arXivに次の論文が投稿されました。</p>
<p>GLIDE: Towards Photorealistic Image Generation and Editing with Text-Guided Diffusion Models. Alex Nichol, Prafulla Dhariwal, Aditya Ramesh, Pranav Shyam, Pamela Mishkin, Bob McGrew, Ilya Sutskever, Mark Chen. <a href="https://arxiv.org/abs/2112.10741">[link]</a></p>
<p>GLIDEはこの論文で提案された、テキストを入れたら画像が出力されるモデルのことです。<br />
以下の画像が論文に記載されている具体例となっています。</p>
<figure id="attachment_107" aria-describedby="caption-attachment-107" style="width: 738px" class="wp-caption aligncenter"><img decoding="async" src="/wp-content/uploads/2022/01/202201_glide_example.png" alt="" width="738" height="779" class="size-full wp-image-107" srcset="/wp-content/uploads/2022/01/202201_glide_example.png 738w, /wp-content/uploads/2022/01/202201_glide_example-284x300.png 284w" sizes="(max-width: 738px) 100vw, 738px" /><figcaption id="caption-attachment-107" class="wp-caption-text">実際の画像、GLIDEなどで生成した画像の比較。図はGLIDEの論文から引用。</figcaption></figure>
<p>一番上の行がReal Image、つまり実際の画像で、画像に対応する各キャプションが一番下似それぞれ記載されています。<br />
2行目以降は機械学習モデルの出力ですね。<br />
<a href="https://arxiv.org/abs/2101.04702">XMC-GAN</a>というのがGANの仕組みを利用して、画像とキャプションの組を使って学習したモデルとなっています。<br />
その下の<a href="https://arxiv.org/abs/2102.12092">DALL-E</a>とGLIDEはZero-shotで運用しているモデル、つまり明示的に画像とキャプションの組を使って学習はしていない（と思われる）モデルとなっています。</p>
<p>この具体例の通り、GLIDEはZero-shotにもかかわらず、かなり鮮明な画像を出力できていることがわかります。<br />
ちなみに、この具体例にはGLIDEが2種類（CLIP Guid.とCF Guid.）あるのですが、論文中ではCF Guid.の方を推しているみたいです。<br />
この辺の違いについてはまた別の記事で解説するかも？しれません。</p>
<h3>GLIDEモデルが公開されてる！</h3>
<p>なんとこのGLIDE、smallモデルでなおかつfiltered dataで学習されたモデルではありますが、一般公開されています（smallモデルとか言ってますが、あくまで論文で使用しているモデルと比べて、という意味合いです。）。</p>
<p>filtered dataって何のこと？って話なのですが、その辺りの事情は論文の<code>7. Safety Considerations</code>で主に記述されています。<br />
具体的には以下の部分ですね。</p>
<blockquote>
<p>Our model is capable of producing fake but realistic images and enables unskilled users to quickly make convincing edits to existing images. As a result, releasing our model without safeguards would significantly reduce the skills required to create convincing disinformation or Deepfakes. Additionally, since the model’s samples reflect various biases, including those from the dataset, applying it could unintentionally perpetuate harmful societal biases.</p>
</blockquote>
<p>ざっくりまとめると</p>
<ol>
<li>論文モデルそのままは精度が高すぎてdeepfakeとか誰でも作れちゃう</li>
<li>論文モデルを学習したデータにはそこそこバイアス入っていて、生成した画像に意図せず有害バイアスが入ってしまう</li>
</ol>
<p>の2点を懸念して、filtered dataを用意して、それで学習したsmallモデルを公開した、とのことです。<br />
（つまりバイアスのあるデータをfilterしたみたいです。）</p>
<h3>GLIDEモデルの動かし方について</h3>
<p>せっかく公開してくれているならfilter dataで学習したモデルとか気にせずとりあえず動かしてみたい！<br />
というわけで適当にうごかしてみました。</p>
<p>GLIDEのGitHubレポジトリは<a href="https://github.com/openai/glide-text2im">こちら</a>で、ご丁寧にGoogle Colabを貼ってくれているので誰でも簡単に試すことができます。<br />
3つのColabリンクが貼ってあるのですが、とりあえずGLIDEを動かしたいなら<code>text2im</code>というのを触ればよいのかなと思います。</p>
<figure id="attachment_112" aria-describedby="caption-attachment-112" style="width: 922px" class="wp-caption aligncenter"><img decoding="async" src="/wp-content/uploads/2022/01/glide_how2.png" alt="" width="922" height="591" class="size-full wp-image-112" srcset="/wp-content/uploads/2022/01/glide_how2.png 922w, /wp-content/uploads/2022/01/glide_how2-300x192.png 300w, /wp-content/uploads/2022/01/glide_how2-768x492.png 768w" sizes="(max-width: 922px) 100vw, 922px" /><figcaption id="caption-attachment-112" class="wp-caption-text">GLIDEのGitHubレポジトリ。</figcaption></figure>
<p>ちなみに<code>inpaint</code>というのは既存の画像に対して、与えられたテキストをもとに<strong>書き足す</strong>exampleとなっています。<br />
<code>clip_guided</code>はさきほどのGLIDEの出力例の<code>GLIDE (CLIP Guid.)</code>ってやつですね。</p>
<h4>ノートブックの細かい話</h4>
<p>簡単ではありますが、<code>text2im</code>のノートブックを使う際の気をつけることを記載します。</p>
<p>まず、入力するテキストですが、ノートブック中の<code>prompt</code>変数に格納しています。<br />
また、モデルはテキストから画像を生成するモデルと、それをupsampleするモデルの2種類を使います。<br />
そのため、推論も2回走るような構成になっています。</p>
<p>細かいことはレポジトリの<code>model-card.md</code>に記載されているので、気になった方はそちらをご確認ください。</p>
<h2>実際にいくつか生成してみた</h2>
<p>適当に色々生成してみました。<br />
以下、添付する図はすべてGLIDE（<code>text2im</code>）で生成した画像です。</p>
<p>ちなみに、同じキャプションを使用した場合でも、画像を生成する度に異なる画像が生成されるので、再現はできなさそうでした。</p>
<h3>論文のキャプションを使ってみる</h3>
<p>まずは論文や上記ノートブック（<code>text2im</code>）で使われている例を試してみようと思います。</p>
<h4>ノートブックをそのまま動かす</h4>
<figure id="attachment_115" aria-describedby="caption-attachment-115" style="width: 256px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" src="/wp-content/uploads/2022/01/dog_default.png" alt="" width="256" height="256" class="size-full wp-image-115" srcset="/wp-content/uploads/2022/01/dog_default.png 256w, /wp-content/uploads/2022/01/dog_default-150x150.png 150w" sizes="(max-width: 256px) 100vw, 256px" /><figcaption id="caption-attachment-115" class="wp-caption-text">an oil painting of a corgi</figcaption></figure>
<p>うまく生成されました。</p>
<h4>論文モデルの出力を再現してみる</h4>
<figure id="attachment_117" aria-describedby="caption-attachment-117" style="width: 256px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" src="/wp-content/uploads/2022/02/green_train.png" alt="" width="256" height="256" class="size-full wp-image-117" srcset="/wp-content/uploads/2022/02/green_train.png 256w, /wp-content/uploads/2022/02/green_train-150x150.png 150w" sizes="(max-width: 256px) 100vw, 256px" /><figcaption id="caption-attachment-117" class="wp-caption-text">a green train is coming down the tracks</figcaption></figure>
<p>上記の出力例（一番左端の列）の画像を公開モデルでも生成してみました。<br />
論文モデルと比べて、学習データもモデルサイズも小さめになっているので、なかなか綺麗な<br />
画像は生成できていません。</p>
<h4>バイアスチェック</h4>
<p>論文では生成した画像のバイアスに関しても言及しています。<br />
公開モデルを使って、生成した画像のバイアスを見てみようと思います。</p>
<figure id="attachment_118" aria-describedby="caption-attachment-118" style="width: 256px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" src="/wp-content/uploads/2022/02/religious_place.png" alt="" width="256" height="256" class="size-full wp-image-118" srcset="/wp-content/uploads/2022/02/religious_place.png 256w, /wp-content/uploads/2022/02/religious_place-150x150.png 150w" sizes="(max-width: 256px) 100vw, 256px" /><figcaption id="caption-attachment-118" class="wp-caption-text">a religious place</figcaption></figure>
<figure id="attachment_119" aria-describedby="caption-attachment-119" style="width: 256px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" src="/wp-content/uploads/2022/02/toy_boy.png" alt="" width="256" height="256" class="size-full wp-image-119" srcset="/wp-content/uploads/2022/02/toy_boy.png 256w, /wp-content/uploads/2022/02/toy_boy-150x150.png 150w" sizes="(max-width: 256px) 100vw, 256px" /><figcaption id="caption-attachment-119" class="wp-caption-text">toys for boys</figcaption></figure>
<figure id="attachment_120" aria-describedby="caption-attachment-120" style="width: 256px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" src="/wp-content/uploads/2022/02/toy_girl.png" alt="" width="256" height="256" class="size-full wp-image-120" srcset="/wp-content/uploads/2022/02/toy_girl.png 256w, /wp-content/uploads/2022/02/toy_girl-150x150.png 150w" sizes="(max-width: 256px) 100vw, 256px" /><figcaption id="caption-attachment-120" class="wp-caption-text">toys for girls</figcaption></figure>
<p>上から順に</p>
<ul>
<li>宗教的なバイアス</li>
<li>ジェンダー（男性）のバイアス</li>
<li>ジェンダー（女性）のバイアス</li>
</ul>
<p>に関する画像となっています。</p>
<p>論文にも記載されているのですが、宗教的なバイアスに関しては確かに、西洋風の建物の画像が生成されています。</p>
<p>おもちゃの画像に関しては、生成された画像がなかなか個性的なので、バイアス云々言ってる場合ではないような気もしますが。。。<br />
男性向けおもちゃは青っぽくて、女性向けおもちゃはピンクっぽいみたいなバイアスがついている、とは思います。</p>
<h3>遊ぶ</h3>
<p>遊びます。</p>
<h4>ガンダム</h4>
<figure id="attachment_121" aria-describedby="caption-attachment-121" style="width: 256px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" src="/wp-content/uploads/2022/02/gundam.png" alt="" width="256" height="256" class="size-full wp-image-121" srcset="/wp-content/uploads/2022/02/gundam.png 256w, /wp-content/uploads/2022/02/gundam-150x150.png 150w" sizes="(max-width: 256px) 100vw, 256px" /><figcaption id="caption-attachment-121" class="wp-caption-text">Gundam</figcaption></figure>
<p>色合いだけ頑張っている感じでしょうか<br />
（ハサウェイ面白かったです）</p>
<h4>ゴジラ</h4>
<figure id="attachment_122" aria-describedby="caption-attachment-122" style="width: 256px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" src="/wp-content/uploads/2022/02/Godzilla.png" alt="" width="256" height="256" class="size-full wp-image-122" srcset="/wp-content/uploads/2022/02/Godzilla.png 256w, /wp-content/uploads/2022/02/Godzilla-150x150.png 150w" sizes="(max-width: 256px) 100vw, 256px" /><figcaption id="caption-attachment-122" class="wp-caption-text">Godzilla</figcaption></figure>
<p>こんなおもちゃ昔ありませんでした？</p>
<figure id="attachment_123" aria-describedby="caption-attachment-123" style="width: 256px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" src="/wp-content/uploads/2022/02/Godzilla_pink.png" alt="" width="256" height="256" class="size-full wp-image-123" srcset="/wp-content/uploads/2022/02/Godzilla_pink.png 256w, /wp-content/uploads/2022/02/Godzilla_pink-150x150.png 150w" sizes="(max-width: 256px) 100vw, 256px" /><figcaption id="caption-attachment-123" class="wp-caption-text">Godzilla with pink skin</figcaption></figure>
<p>可愛さ爆発</p>
<h4>戦わせてみた</h4>
<figure id="attachment_124" aria-describedby="caption-attachment-124" style="width: 256px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" src="/wp-content/uploads/2022/02/gundam_vs_godzilla.png" alt="" width="256" height="256" class="size-full wp-image-124" srcset="/wp-content/uploads/2022/02/gundam_vs_godzilla.png 256w, /wp-content/uploads/2022/02/gundam_vs_godzilla-150x150.png 150w" sizes="(max-width: 256px) 100vw, 256px" /><figcaption id="caption-attachment-124" class="wp-caption-text">Gundam vs. Godzilla</figcaption></figure>
<p>戦っている、というよりはただただ並んでいますね。。。<br />
他にも複数オブジェクトで色々やらせようとしたんですが、なかなかうまく画像が生成されませんでした。<br />
公開モデルではかなり単純な生成しかできないかもしれません。</p>
<h4>飯テロ</h4>
<figure id="attachment_127" aria-describedby="caption-attachment-127" style="width: 256px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" src="/wp-content/uploads/2022/02/ramen.png" alt="" width="256" height="256" class="size-full wp-image-127" srcset="/wp-content/uploads/2022/02/ramen.png 256w, /wp-content/uploads/2022/02/ramen-150x150.png 150w" sizes="(max-width: 256px) 100vw, 256px" /><figcaption id="caption-attachment-127" class="wp-caption-text">ramen noodles</figcaption></figure>
<p>味噌？</p>
<figure id="attachment_128" aria-describedby="caption-attachment-128" style="width: 256px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" src="/wp-content/uploads/2022/02/blue_ramen.png" alt="" width="256" height="256" class="size-full wp-image-128" srcset="/wp-content/uploads/2022/02/blue_ramen.png 256w, /wp-content/uploads/2022/02/blue_ramen-150x150.png 150w" sizes="(max-width: 256px) 100vw, 256px" /><figcaption id="caption-attachment-128" class="wp-caption-text">blue ramen noodles</figcaption></figure>
<p>もっと青いものを想定していたんですが。。。想像していたものとはちょっと違いました。。。<br />
論文にも記載されているのですが、明らかに存在しない画像を生成させようとするとうまく行かないみたいです。</p>
<h4>背景</h4>
<figure id="attachment_129" aria-describedby="caption-attachment-129" style="width: 256px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" src="/wp-content/uploads/2022/02/mt_fuji.png" alt="" width="256" height="256" class="size-full wp-image-129" srcset="/wp-content/uploads/2022/02/mt_fuji.png 256w, /wp-content/uploads/2022/02/mt_fuji-150x150.png 150w" sizes="(max-width: 256px) 100vw, 256px" /><figcaption id="caption-attachment-129" class="wp-caption-text">mount  Fuji</figcaption></figure>
<p>背景画像はかなりうまく生成されました。</p>
<h4>趣味1</h4>
<figure id="attachment_125" aria-describedby="caption-attachment-125" style="width: 256px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" src="/wp-content/uploads/2022/02/white_album_cd.png" alt="" width="256" height="256" class="size-full wp-image-125" srcset="/wp-content/uploads/2022/02/white_album_cd.png 256w, /wp-content/uploads/2022/02/white_album_cd-150x150.png 150w" sizes="(max-width: 256px) 100vw, 256px" /><figcaption id="caption-attachment-125" class="wp-caption-text">The CD cover is the white album.</figcaption></figure>
<p>わかってるっぽいです</p>
<figure id="attachment_126" aria-describedby="caption-attachment-126" style="width: 256px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" src="/wp-content/uploads/2022/02/white_album_2.png" alt="" width="256" height="256" class="size-full wp-image-126" srcset="/wp-content/uploads/2022/02/white_album_2.png 256w, /wp-content/uploads/2022/02/white_album_2-150x150.png 150w" sizes="(max-width: 256px) 100vw, 256px" /><figcaption id="caption-attachment-126" class="wp-caption-text">White Album 2</figcaption></figure>
<p>わかってないっぽいです</p>
<h4>趣味2</h4>
<figure id="attachment_135" aria-describedby="caption-attachment-135" style="width: 256px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" src="/wp-content/uploads/2022/02/blue_archive.png" alt="" width="256" height="256" class="size-full wp-image-135" srcset="/wp-content/uploads/2022/02/blue_archive.png 256w, /wp-content/uploads/2022/02/blue_archive-150x150.png 150w" sizes="(max-width: 256px) 100vw, 256px" /><figcaption id="caption-attachment-135" class="wp-caption-text">BlueArchive</figcaption></figure>
<p>最近自分がハマってるやつ適当に投げてみましたが。。。</p>
<details>
<summary>オタク特有の急に自分がハマっているやつ紹介してくるやつ</summary>
<div>
<p>どこで読んだか忘れたんですが、ビジュアルノベルってイラスト、アニメーション、声やBGM、SE、それにテキストなどの色んな要素が詰め込まれた総合芸術、みたいな話があるらしいんですよね。<br />
言わんとすることはわかるし、自分が好きな作品ってだいたいその辺りがうまいこと噛み合ったものがおおいのかなとか思うわけです。</p>
<p>最近、その総合芸術的な瞬間をとあるソシャゲで味わったんですよね。<br />
そのソシャゲがブルーアーカイブです。<br />
メインストーリーがおもしろいんですよね。<br />
キャラクターの描写も個人的にかなり刺さってて。<br />
キャラクターデザインの良さと相まってすごく魅力的なキャラクターが多いんですよ。<br />
で、さらにBGMもめちゃくちゃ良い。<br />
そりゃあハマるよなって感じです。</p>
<p>この辺の良さを文書で説明する能力が自分にはできないので、気になる方はぜひ<b>2nd PV</b>っていうのを見てほしいです。<br />
<a href="https://youtu.be/cE1ePjq5ZSs"> YouTubeリンクはこちら </a><br />
何がなんやらって感じだとは思うのですが、とりあえずPVの綺麗さだけでも味わっていただければと思います。<br />
気になった方はぜひプレイしてみてください！！
</div>
</details>
<h2>感想</h2>
<p>今回はGLIDEの簡単な紹介と公開モデルで遊んでみた話でした。<br />
個人的な感想になりますが、なんとなくCVはGANベースの手法が流行っている印象があったので、こういったGANではないモデルが出てきて、流行を掴む難しさみたいなものを感じました。。。反省。<br />
自然言語処理（別に自然言語処理の流行も掴めてないですが）ばっかりやってると画像周りはめちゃくちゃ周回遅れで知識を得ているような感じになっちゃいますね。</p>
<p>モデルを公開していただいたので、色々遊んでみましたが、小規模モデルでこの精度なら論文モデルは確かに強いだろうなあという印象でした。<br />
富士山とかめちゃくちゃ普通に生成されましたし、有名な固有名詞はこのモデルでも抑えられていそうです。</p>
<p>個人的に気になった話としてはバイアス周りでしょうか。<br />
論文でもかなり気にしていて、この辺りは大規模事前学習モデルの常というか、どうしても学習データを大規模にするとそういったバイアスは入るので、その辺りの懸念を強く感じました。<br />
前処理的なアプローチはデータフィルタリングとかだとおもうのですが、後処理的にデバイアスするのはどうするんだろう、なんて疑問もちょっと持ったので、その辺り時間があれば調べてみようと思います。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>2021年の個人的総括と2022年の目標</title>
		<link>/2021/12/30/2021matome.html</link>
		
		<dc:creator><![CDATA[es-key]]></dc:creator>
		<pubDate>Thu, 30 Dec 2021 08:04:54 +0000</pubDate>
				<category><![CDATA[振り返り記事]]></category>
		<guid isPermaLink="false">/?p=83</guid>

					<description><![CDATA[年の瀬ということで、2021年にやったことの振り返りと2022年でやりたいことをまとめようと思います。 まとめ やったこ&#46;&#46;&#46;]]></description>
										<content:encoded><![CDATA[<p>年の瀬ということで、2021年にやったことの振り返りと2022年でやりたいことをまとめようと思います。</p>
<h2>まとめ</h2>
<ul>
<li>やったことの大半は勤務先技術ブログの執筆</li>
<li>今年は研究発表ができた、来年は。。。</li>
<li>2022年やりたいこと:
<ol>
<li>来年ももう少し日本語要約を擦りたい</li>
<li>個人開発勉強する</li>
<li>GECとかもちょっとやりたい</li>
</ol>
</li>
</ul>
<h2>2021年にやったこと</h2>
<p>2021年、世間一般に公開した内容を時系列順に挙げてみようと思います。</p>
<ol>
<li>2021年1月: 勤務先技術ブログにて「<a href="https://tech.retrieva.jp/entry/2021/01/26/163641">AACL-IJCNLP2020で発表してきました</a>」を公開</li>
<li>2021年3月: 言語処理学会第27回年次大会にて「<a href="https://www.anlp.jp/proceedings/annual_meeting/2021/pdf_dir/P4-17.pdf">CSJを用いた日本語話し言葉BERTの作成</a>」を発表</li>
<li>2021年3月: 言語処理学会第27回年次大会にて「<a href="https://www.anlp.jp/proceedings/annual_meeting/2021/pdf_dir/P1-12.pdf">事前学習モデルを用いた少量データに対する日本語抽象型要約<br />
</a>」を発表</li>
<li>2021年3月: ジャーナル自然言語処理にて学会記事「<a href="https://www.jstage.jst.go.jp/article/jnlp/28/1/28_276/_article/-char/ja/">Stronger Baselines for Grammatical Error Correction Using a Pretrained Encoder-Decoder Model. の採択までの流れ記事</a>」が公開</li>
<li>2021年4月: 勤務先技術ブログにて「<a href="https://tech.retrieva.jp/entry/2021/04/01/114943">日本語話し言葉BERTを作成、公開します！</a>」を公開</li>
<li>2021年5月: 勤務先技術ブログにて「<a href="https://tech.retrieva.jp/entry/2021/05/24/091705">事前学習モデルBARTを使って日本語文書要約をやってみた</a>」を公開</li>
<li>2021年8月: 勤務先技術ブログにて「<a href="https://tech.retrieva.jp/entry/2021/08/25/185920">ACL2021のBest PaperのVOLTを日本語文書分類で試してみた結果...！</a>」を公開</li>
<li>2021年9月: 勤務先技術ブログにて「<a href="https://tech.retrieva.jp/entry/2021/09/29/160323">ラベルなしデータだけでも高い精度で文法誤り訂正ができるLM-Criticの紹介</a>」を公開</li>
<li>2021年9月: 日本語GPT-2を使ったデモアプリ「<a href="https://www.narou-generator.com/">&quot;小説家になろう&quot;っぽい小説タイトルメーカー</a>」を公開、紹介記事（Qiita）は<a href="https://qiita.com/Katsumata420/items/077de5d968eb7d600d36">こちら</a></li>
<li>2021年11月: 勤務先技術ブログにて「<a href="https://tech.retrieva.jp/entry/2021/11/24/183232">事前学習モデルT5とTransformersを使ってお手軽日本語文書要約をやってみた</a>」を公開</li>
<li>2021年12月: 個人ブログ「<a href="https://eskaylog.com/">塵も積もれば忘備録</a>」を公開</li>
</ol>
<p>勤務先の技術ブログ多いですね......</p>
<h3>2021年前半を振り返って</h3>
<p>1月から6月までを振り返ってみると、トピックとしては次の3つに分かれるみたいです。</p>
<ol>
<li>AACL-IJCNLP2020のネタ</li>
<li>言語処理学会第27回年次大会まわり</li>
<li>日本語BARTで要約</li>
</ol>
<p>1と2は2020年にやってたネタです。（何なら1は2019年終わり辺りからちょっとやってたまである）<br />
1については、学会記事なども書かせて頂いて、研究の始まりはかなりわちゃわちゃしていたような気がしますが、終わりはちゃんと振り返りまでできたような覚えがあります。<br />
学会記事を書かせて頂いて、改めて解説記事、というか論文採択までの流れを説明するのって難しいなぁと感じました。。。<br />
この学会記事シリーズは個人的に読み物としてもかなり面白く（とくに採択までの流れは普段聞けないのでおもしろい）、隙間時間にちょこちょこ読んで、勉強させていただいています。</p>
<p>2は社内でやっていた話を外に出せて良かったーという点が自分にとって大きかったと思います。<br />
日本語要約はデータ用意したから発表しちゃえ、ぐらいの気持ちだったような気が。。。<br />
思ったよりも出力する要約の抽象度が高いデータだったので、そもそもEnc-Decでできるのか不安とかもありましたが、やってみたら意外とできたこともあり、その後も割とこのデータを擦っている感じですね。</p>
<p>3からが2021年に入って始めたことになると思います。<br />
年次大会で日本語BARTを作っていただいたことを知り、動かしたいーって思って数ヶ月。<br />
動かした話を世間に公開できてよかったです。</p>
<h3>2021年後半を振り返って</h3>
<p>7月から12月までを振り返ってみると、トピックは次のようになります。</p>
<ol>
<li>最新論文で遊ぶ</li>
<li>日本語T5で要約</li>
<li>個人開発をやってみた</li>
</ol>
<p>1はただただ好奇心の産物です。<br />
日本語でやってみるとどうなるかなー？的な疑問と、実際に自分で動かしてみたい気持ちでVOLTを触ってみたとかだったと思います。<br />
LM-Criticも動かしてみたさはあったんですが、個人でやると絶対に重たいので断念、論文紹介に留めました。。。<br />
来年もこういう記事はちょこちょこ出すだろうと思います。</p>
<p>2はせっかくあるなら動かそうのやつですね。<br />
はじめてTransformersでEnc-Decやったんですが、めっちゃ簡単ですね。<br />
OpenNMT-pyとかも当時は簡単だと思ったんですが、時代が進むとどんどん楽なものが出てくるんだなと実感させられました。</p>
<p>3は昨年からやりたいなと思いつつなかなかできなかった話ですね。<br />
GPT-2デモの構成もそのうちどこかに書こうとは思うのですが、かなり簡単にできてます。<br />
実際に作業しているときもググれば無限に解決策出てくるので、本当にいい時代になったものだと思いました。</p>
<h3>2021年の総括</h3>
<p>2021年、全体的には思ったより色々できなかったなーという印象です。。。<br />
とくに個人開発周りとかはもっと色々できたかと。。。<br />
平日もうちょっと時間作れればって後悔が大きいですね。</p>
<p>日本語要約で事前学習モデルを色々検証できたのは良かったかなと思います。<br />
ひととおりはできたので、次は評価かデータセットか。<br />
もう少し触りたいですね。</p>
<p>研究的な話は2020年にやったことが外に出た印象です。<br />
来年は、、、どうなんでしょうね。。。</p>
<h2>2022年の目標</h2>
<p>2021年の振り返りから2022年の目標は次のようになるのかなと思います。</p>
<ol>
<li>日本語要約の評価ないしはデータセット</li>
<li>開発周りをもう少し勉強する</li>
<li>GECないしは校正支援まわりのなにかをやる</li>
</ol>
<p>1は色々やって技術ブログで公開とかできるとよいのかなと思います。<br />
とりあえずBERTScore触りたい触りたいめちゃくちゃ触りたい。</p>
<p>2は切実ですね。。。<br />
作りながら覚えていくのが自分の性に合っているので、そんな感じで進められるといいのかなと思います。</p>
<p>3が急に来た感じではありますが、これは<a href="https://eskaylog.com/2021/12/21/gec.html">以前の記事</a>でGECとかを考えて、自分でもなにかできたらな、みたいな気持ちが由来ですね。<br />
次の年次大会での発表を聞いて、そこから自分でもぱっとできそうな話を考えようと思ってます。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>GECで修士卒業した人間が就職して思ういくつかのこと</title>
		<link>/2021/12/21/gec.html</link>
		
		<dc:creator><![CDATA[es-key]]></dc:creator>
		<pubDate>Mon, 20 Dec 2021 18:43:53 +0000</pubDate>
				<category><![CDATA[GEC]]></category>
		<category><![CDATA[NLP]]></category>
		<guid isPermaLink="false">/?p=69</guid>

					<description><![CDATA[この記事はGEC (Grammatical Error Correction) Advent Calendar 2021&#46;&#46;&#46;]]></description>
										<content:encoded><![CDATA[<p>この記事は<a href="https://qiita.com/advent-calendar/2021/gec">GEC (Grammatical Error Correction) Advent Calendar 2021</a>の21日目の記事です。</p>
<h2>まとめ</h2>
<ul>
<li>GECで修士卒業した人間が、就職後にこういう研究が世の中にあったらいいなって思ったものを挙げてます
<ul>
<li>ERRANT-Japaneseが欲しい</li>
<li>訂正結果の説明して欲しい</li>
<li>結果の一貫性をいい感じにして欲しい</li>
<li>マルチモーダルできるとおもしろいと思いました</li>
</ul>
</li>
<li>欲しいばっかりですいません　m(_ _)m</li>
<li>アドベントカレンダーの企画ありがとうございました</li>
</ul>
<h2>GECで修士卒業した話</h2>
<p>今回の記事は「GECで修士卒業した人間が、GEC研究から足を洗えると思ったら、微妙にそうでもなかったので、自分の視点から、こういう研究が世の中にあったらいいなあ」的な内容（お気持ち的なやつですね）となっております。<br />
ということで、まずは前フリとして、自分の視点について簡単に紹介します。</p>
<h3>GECで修士を卒業するまで</h3>
<p>始めまして。<br />
記事のタイトル通り、修士の2年間でGECの研究に取り組み、そのまま修士を卒業して就職した者です。<br />
修士では主に、学習データが少量のときのGECについて取り組みました。</p>
<p>自分が修士で取り組んだ内容をざっくり説明すると、学習データを使わない設定のGECに対して、当時流行っていた（と思われる）教師なし機械翻訳を使って取り組んだ的なやつです。<br />
教師なしと言っても、やっていることは、GECでよく使われる誤り文と訂正文のデータを使わず、代わりに単言語データで頑張って学習してGECモデルを作ろう、的な内容になっています。<br />
ちなみに結論としては、単言語データになんらかの誤りを入れて、疑似対訳データを作る方法（今流行っているやつですね）が一番シンプルで性能が高い、となっております。。。<br />
細かい内容については、<a href="https://katsumata420.github.io/documents/2020/mthesis.pdf">こちらの修論</a>を確認していただければと思います。</p>
<h3>就職の話</h3>
<p>自分は自然言語処理を扱う会社に就職しました。<br />
自然言語処理、と言っても色々あるとは思うのですが、残念ながら？就職先は学習者支援に関して腰を入れている、というわけではありませんでした。<br />
「これでGEC研究から離れるかな」とも思ったのですが、弊社のサービスとして<strong>校正支援</strong>があり、それに関わることとなりました。<br />
先に言っておくのですが、校正支援とGECは、研究的にもそうですが、実世界の問題設定としても全然違うものです。<br />
しかし、全然違う、と言っても、間違った文を訂正する、といった点では（めちゃくちゃ大雑把ですが）同じですし、自分自身、さまざまな問題設定に触ってみたかったこともあり、かなりモチベーションは高めに取り組めていると思います。</p>
<p>今回の記事は、このような、「修士でGECやって、成果を挙げられなかった人間が就職後もちょっとだけ関係するタスクを触った視点」から、GEC研究で使えそうな問題、課題設定を共有させていただくものとなっております。</p>
<h2>こういう研究あったらいいなあ一覧</h2>
<h3>日本語GEC、もっと充実して欲しい</h3>
<p>個人の感想になりますが、日本語GECのデータは結構あると思ってるんですよね。<br />
詳細は<a href="https://qiita.com/advent-calendar/2021/gec">今回のGECアドベントカレンダー</a>を眺めていただければと思います。<br />
問題は評価の方かなと思っています。<br />
具体的にはERRANT-Japaneseが欲しいって話ですね。</p>
<p>ERRANTの何が良いって、誤りタグの推定もそうなんですが、訂正前後を比較したときのDiffの作成がかなり人間にわかりやすいんですよね。<br />
訂正前後のDiffのAlignment云々については、<a href="https://aclanthology.org/C16-1079.pdf">こちらの論文</a>で紹介されています。<br />
ざっくりかいつまむと、編集距離で文間のDiffとって、人手で決めたマージルールでくっつける的なやつだったと思います。<br />
論文中では、この自動Diff作成結果をCoNLL-2013やCoNLL-2014などの人手で作成したDiffと比較して、一致度合いの検証をしています。</p>
<p>自分の知っている限りではありますが、日本語GEC評価、となったら最近は<a href="https://github.com/koyama-aomi/TEC-JL/">TEC-JL</a>データに対して<a href="https://aclanthology.org/P15-2097/">GLEU</a>で評価、とかになるのでしょうか。<br />
あとは<a href="https://qiita.com/mamorlis/items/516f48b0e53df61be2df">NAIST誤用コーパス</a>とか？</p>
<p>一方で、校正支援、となったときに、NAIST誤用コーパスみたいな誤りタグがついたデータはないので、訂正システムの良さを誰かに説明する、となったときに結構困るんですよね。<br />
適当に編集距離のDiffを出しても正直ピンとこないことが多くて。。。（これも校正支援の定義次第だとは思っていて、たとえば入力誤りに限定するなら編集距離でもいいと思います。）<br />
せめてある程度意味を持った単位でのDiffさえ自動で取れれば、誤りタグは説明者が決める、とかもできるのですが、といった悩みがここ数年あったりします。</p>
<p>土日とか暇な時間作って日本語用マージルール作ってみようと思ったこともあったんですけど、全然やらずに2年立ちそうなので。。。</p>
<h3>訂正結果の説明タスク、いい感じなものが欲しい</h3>
<p>GECって基本的に入力が誤り文で、出力が訂正文ですよね。<br />
そして評価はシステムの訂正文と、リファレンスを評価する、といった形ですよね。<br />
GECの学習者支援のお題目を考えると、「なぜその訂正になったのか」ってめちゃくちゃ知りたいとおもうんですよね、って話です。</p>
<p>形として1つありそうなのは、入力が誤り分と訂正文（リファレンスでもシステムでもどちらでもいいと思います）で、それとは別に文法が網羅されている辞書のようなものがあって、誤り文と訂正文をクエリとして、辞書から該当する文法事項をInfomation Retrievalする的なものとか。<br />
GECやっていると思い付きがちな問題設定の1つだとは思うのですが、自分の知る限り聞いたことないんですよね。（自分のサーベイ力なんてたかが知れているので、すでにあるかもです）</p>
<p>GECの枠組みでこういった出力の説明、どのくらいできるのか知りたいなーと思って2年立ちました。。。</p>
<h3>訂正結果の一貫性、保証する研究とかないでしょうか。。。</h3>
<p>これはGECというよりは、校正支援的な要求が強いところですね。<br />
サービスとして考えるとある程度、出力が一貫していると助かる的なやつです。<br />
（ルールでやればいいとは思うんですが）</p>
<p>GECで使えそうな問題設定を考えてみると、学習支援の際に一貫性が薄いと嬉しくない、とかですよね。<br />
たとえば、<code>He has apple.</code>に対して、<code>He has an apple.</code>にするのに、<code>He has pen.</code>は<code>He has pens.</code>のような、単複の一貫性とかでしょうか。<br />
なにも考えずにやるとおそらく学習データの分布から決定されるので、一貫しない形になると思います。<br />
他にパッと思いつくもので、能動態、受動態だったり、類義語の使い方だったりなど（日本語だったら漢字をひらくかどうかとか）。<br />
学習者の気持ちとしては、ある状況では能動態だけど、別の状況では受動態、とか言われても、混乱の元なのかなあとは思ってます。<br />
ある程度はタグでコントロールできると思うんですけど、包括的な話になると難しい、、、はず。</p>
<h3>マルチモーダル、はやると思うんですよね</h3>
<p>こちらに関しては正直GEC云々ではないですし、校正支援でもないですね。<br />
単純に自分の興味です。</p>
<p><a href="https://qiita.com/misogil0116/items/040b4e39fd2fc495fa81">昨日のGECアドベントカレンダーの記事</a>とかかなりおもしろいと思いましたし、学習者支援と画像や音声はかなり色々できるような気がするんですよね。<br />
たとえば、GECからは離れますが、Web言語学習者フォーラムで日本語学習をしたい人がいて、手元の教科書を使っていたら、読みがわからない単語について質問したいとします。<br />
一番簡単なのはフォーラムにその教科書の該当部分の画像を乗っけて読みを聞くことだと思うのですが、需要として、既存のフォーラムの投稿から回答を得たい場合もあると思います。（俗に言うggrks精神）</p>
<p>つまり、入力として画像と質問文があって、それをもとに既存のフォーラム投稿をInformation Retrievalする的な形、色々できるのでは？とちょっと思ったりはしました（言語学習者向けのVQA？）。</p>
<h2>おわりに</h2>
<p>長々とGEC要望を垂れ流す記事となってしまい申し訳ないです。。。<br />
自分が学生だったらちょっとやってみたかった感もあるのですが、社会人はちょっと厳しいのでここでお焚き上げさせていただきました（社会人D本当にすごいと思います）。</p>
<p>こういったGECアドベントカレンダーでの環境整備も進み（企画していただきありがとうございます）、次の年次大会でも自分の想像もつかないおもしろい話が聞けるのではないかと楽しみにしております。</p>
<p>最後までご覧下さりありがとうございました。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>ブログを作成してみた</title>
		<link>/2021/12/15/what-this-blog.html</link>
		
		<dc:creator><![CDATA[es-key]]></dc:creator>
		<pubDate>Tue, 14 Dec 2021 15:04:54 +0000</pubDate>
				<category><![CDATA[Firebase]]></category>
		<category><![CDATA[WordPress]]></category>
		<guid isPermaLink="false">/?p=35</guid>

					<description><![CDATA[まとめ 雑な記事を書ける場所を求めてブログを作成、公開してみた 構成はWordPress + Firebase Host&#46;&#46;&#46;]]></description>
										<content:encoded><![CDATA[<h2>まとめ</h2>
<ul>
<li>雑な記事を書ける場所を求めてブログを作成、公開してみた</li>
<li>構成はWordPress + Firebase Hosting</li>
<li>ブログ作成に手間がかかるようだったらはてなブログとか検討しようと思ったが、めちゃくちゃ簡単だった話</li>
</ul>
<h2>なんでブログを作成したのか</h2>
<p>ブログ、作ってみました。<br />
これまで個人で何らかの記事を書くときはQiitaを利用させてもらっていたのですが、技術的な内容でないものを書きたくなったときに「Qiitaに自分の所感だけの記事を書くのもどうなんだ......？」みたいな葛藤が生じてしまい、書くのを止める、みたいなことを繰り返してきたんですよね。。。<br />
なので、適当なことを書ける場所としてブログを作成してみた、という状況です。</p>
<h2>このブログの構成</h2>
<p>このブログは冒頭のまとめにある通り、「WordPress + Firebase Hosting」でやっています。<br />
最初は、はてなブログ等の簡単にブログを作成できるサービスを使おうと思ったのですが、以下の理由で今回はちょっと頑張った構成でブログ公開を行っています。</p>
<ol>
<li>はてなブログ自体は勤務先の技術ブログで触っているため、他の形態でのブログ運営を行ってみたかった</li>
<li>WordPressとFirebaseは一度は触ってみたかった</li>
</ol>
<p>1番についてですが、はてなブログってめちゃくちゃ便利（個人の感想）なんですよね。<br />
はてなブログで記事書いていて不便だなーと感じたことまったくないぐらい楽をさせてもらっている印象です。<br />
あまりにも便利すぎたので、自分の逆張り精神が掻き立てられ、はてなブログ以外でブログ運営したくなっちゃいました。。。</p>
<p>2番の通り、今までWordPressとFirebase触ったことないんです。<br />
WordPressが便利だー、みたいな話は聞いたことがあったので、ブログを開設するなら使ってみたいと昔から思っていて。<br />
Firebaseの方は、ちょっと個人開発で使ってみたいなーとは思いつつ、なんとなく触ってこなかったんです。<br />
一度どんな形でもいいから触っておけば、次も触るでしょう、というところで今回FirebaseのHostingサービスを使ってみました。</p>
<h3>このブログの仕組み</h3>
<p>このブログは<a href="https://rinoguchi.net/2021/01/wordpress-firebase-hosting.html">こちらの記事</a>を参考、というかほぼそのまま使用しています。</p>
<p>流れとしては次の通りです。</p>
<ol>
<li>ローカル環境のWordPressでブログ作成</li>
<li>ブログをStaticにする</li>
<li>Firebase HostingでStaticファイルを公開</li>
</ol>
<p>それぞれの詳細についてはリンク記事を参照していただければと思います。（2021/12/15段階では問題なく動きました）</p>
<h4>細かい変更点</h4>
<p>細かい点としては、<a href="https://www.simplystatic.co/">Simply Static</a>と呼ばれるWordPressプラグインを使用して2番の処理を行うのですが、その際に「Staticファイルの出力先にアクセスできない」的なエラーが出るのでその辺りの対応を行ったぐらいですね。<br />
とは言っても大したことはしていなくて、アクセス権限の問題だったので、<code>chmod</code>して対応しました。</p>
<h2>ブログを作成した感想</h2>
<p>はじめてのブログ開設、はじめてのWordPress、はじめてのFirebaseだったのですが、めちゃくちゃ簡単でした！<br />
今回の場合は参考になる記事があったので、それをそのまま使えばよかった、というところがすごく大きかったですね。</p>
<p>Firebaseもだいぶ使いやすい印象ですね。<br />
npmでFirebase CLIが入るので、それを使えば簡単にデプロイまで行くのでとても楽でした。<br />
Herokuはちょっと触ったことがあるんですが、あれもCLIで色々できるんですよね。<br />
Firebase CLIで何ができるのかちゃんと調べたわけではないのですが、<a href="https://firebase.google.com/docs/cli?hl=ja">リファレンス</a>を眺めた感じだと色々できるような印象でした。</p>
<p>Firebaseの良いところとして料金体系もあるのかなと思います。<br />
<a href="https://firebase.google.com/pricing?hl=ja">こちらのページ</a>にある通り、Firebaseは無料プランを用意してくれています。<br />
Hostingの無料プランを見てみると「カスタムドメインとSSL」も入ってる！<br />
Herokuとかってカスタムドメインを使うためには有料プランに入らないといけない（2021/12/15現在）ので、無料で独自ドメイン使うことができるのはとても良いと思いました。</p>
<p>ということで、無料で簡単に適当なことを書ける場所が作れて大変満足でした。<br />
あとは定期的に記事を上げることができるかどうかですね。。。</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
