特許異議申立
2023-700561
ニューラルネットワーク回路
- 審判番号
- 2023-700561
- 法域
- 特許
- 審判種別
- 異議申立(異議の決定)
- 出願番号
- 特願2021-508436
- 登録番号
- 7180751
- 請求日
- 2023年05月31日
- 審決日
- 2024年07月05日
- 公報発行日
- 2024年11月29日
- 結論
- 請求成立(取消)
- 当事者
- 【権利者】日本電気株式会社
- 【権利者代理人】岩壁 冬樹
- 【権利者代理人】塩川 誠人
- 【異議申立人】馬場 正宏
- 審判長/審判官
- 審判長 林 毅
- 審判官 大塚 俊範
- 審判官 吉田 美彦
- 分類
- P1651.121-ZDA(G06N)
- 条文(本文から自動抽出・参考)
- 特許法第29条第2項、特許法第120条の5第9項、特許法第120条の5第2項、特許法第29条第1項第3号、特許法第120条の5第4項、特許法第36条第6項第1号、特許法第113条第2号
- データ出所
- 審決公報(XML)
事件の表示
特許第7180751号発明「ニューラルネットワーク回路」の特許異議申立事件について、次のとおり決定する。
結論
結 論
特許第7180751号の明細書、特許請求の範囲を訂正請求書に添付された訂正明細書、訂正特許請求の範囲のとおり、訂正後の請求項〔1~9〕について訂正することを認める。
特許第7180751号の請求項1、3、4、6~9に係る特許を取り消す。
特許第7180751号の請求項2、5に係る特許を維持する。
理由
理 由
第1 手続の経緯
特許第7180751号の請求項1~9に係る特許についての出願は、2019年(平成31年)3月25日を国際出願日とする特願2021-508436号であって、令和4年11月21日にその特許権についての設定登録がされ、同年11月30日に特許掲載公報が発行された。その後、その特許について、令和5年5月31日に、特許異議申立人である馬場 正宏(以下、「申立人」という。)により特許異議の申立てがされ、当審は、同年9月21日付けで取消理由を通知した。特許権者は、その指定期間内である同年11月21日に意見書の提出及び訂正の請求(以下、この訂正の請求を、「本件訂正請求」という。)を行い、本件訂正請求に対して、申立人は、令和6年1月22日に意見書を提出した。当審は、同年3月7日付けで取消理由通知(決定の予告)をしたが、特許権者から意見書の提出は無かった。
第2 特許異議申立理由の概要
申立人が、本件訂正前の請求項1~9に係る特許に対して申し立てた特許異議申立理由の概略、及び、証拠方法として提出した甲第1号証~甲第12号証(以下、例えば、「甲第1号証」を「甲1」などという。)は、次のとおりのものである。
1 特許異議申立理由
(1)甲第1号証に記載された発明に基づく進歩性欠如
本件特許の請求項1、2に係る発明は、その出願前に日本国内又は外国において、頒布された又は電気通信回線を通じて公衆に利用可能となった甲1に記載された発明に基いて、甲2~5に記載された事項を参酌することにより、その出願前にその発明の属する技術の分野における通常の知識を有する者(以下、「当業者」という。)が容易に発明をすることができたものであって、特許法第29条第2項の規定により特許を受けることができないから、その発明に係る特許は取り消されるべきものである。
本件特許の請求項3に係る発明は、その出願前に日本国内又は外国において、頒布された又は電気通信回線を通じて公衆に利用可能となった甲1に記載された発明に基いて、甲2~7に記載された事項を参酌することにより、当業者が容易に発明をすることができたものであって、特許法第29条第2項の規定により特許を受けることができないから、その発明に係る特許は取り消されるべきものである。
本件特許の請求項4~5に係る発明は、その出願前に日本国内又は外国において、頒布された又は電気通信回線を通じて公衆に利用可能となった甲1に記載された発明に基いて、甲2~8、11に記載された事項を参酌することにより、当業者が容易に発明をすることができたものであって、特許法第29条第2項の規定により特許を受けることができないから、その発明に係る特許は取り消されるべきものである。
本件特許の請求項6~9に係る発明は、その出願前に日本国内又は外国において、頒布された又は電気通信回線を通じて公衆に利用可能となった甲1に記載された発明に基いて、甲2~9、11に記載された事項を参酌することにより、当業者が容易に発明をすることができたものであって、特許法第29条第2項の規定により特許を受けることができないから、その発明に係る特許は取り消されるべきものである。
(2)甲第9号証に記載された発明に基づく新規性欠如
本件特許の請求項1、3、6に係る発明は、本件特許出願前に日本国内又は外国において、頒布された又は電気通信回線を通じて公衆に利用可能となった甲9に記載された発明であって、特許法第29条第1項第3号に該当するから、その発明に係る特許は取り消されるべきものである。
(3)甲第9号証に記載された発明に基づく進歩性欠如
本件特許の請求項1に係る発明は、その出願前に日本国内又は外国において、頒布された又は電気通信回線を通じて公衆に利用可能となった甲9に記載された発明に基いて、甲6、12に記載された事項を参酌することにより、当業者が容易に発明をすることができたものであって、特許法第29条第2項の規定により特許を受けることができないから、その発明に係る特許は取り消されるべきものである。
本件特許の請求項2~3に係る発明は、その出願前に日本国内又は外国において、頒布された又は電気通信回線を通じて公衆に利用可能となった甲9に記載された発明に基いて、甲3、6、12に記載された事項を参酌することにより、当業者が容易に発明をすることができたものであって、特許法第29条第2項の規定により特許を受けることができないから、その発明に係る特許は取り消されるべきものである。
本件特許の請求項4に係る発明は、その出願前に日本国内又は外国において、頒布された又は電気通信回線を通じて公衆に利用可能となった甲9に記載された発明に基いて、甲3、6、8、11、12に記載された事項を参酌することにより、当業者が容易に発明をすることができたものであって、特許法第29条第2項の規定により特許を受けることができないから、その発明に係る特許は取り消されるべきものである。
本件特許の請求項5~8に係る発明は、その出願前に日本国内又は外国において、頒布された又は電気通信回線を通じて公衆に利用可能となった甲9に記載された発明に基いて、甲3、6~8、11、12に記載された事項を参酌することにより、当業者が容易に発明をすることができたものであって、特許法第29条第2項の規定により特許を受けることができないから、その発明に係る特許は取り消されるべきものである。
本件特許の請求項9に係る発明は、その出願前に日本国内又は外国において、頒布された又は電気通信回線を通じて公衆に利用可能となった甲9に記載された発明に基いて、甲3~8、11、12に記載された事項を参酌することにより、当業者が容易に発明をすることができたものであって、特許法第29条第2項の規定により特許を受けることができないから、その発明に係る特許は取り消されるべきものである。
(4)甲第8号証に記載された発明に基づく進歩性欠如
本件特許の請求項1に係る発明は、その出願前に日本国内又は外国において、頒布された又は電気通信回線を通じて公衆に利用可能となった甲8に記載された発明に基いて、甲1、6、10、11に記載された事項を参酌することにより、当業者が容易に発明をすることができたものであって、特許法第29条第2項の規定により特許を受けることができないから、その発明に係る特許は取り消されるべきものである。
本件特許の請求項2に係る発明は、その出願前に日本国内又は外国において、頒布された又は電気通信回線を通じて公衆に利用可能となった甲8に記載された発明に基いて、甲1、3、6、10、11に記載された事項を参酌することにより、当業者が容易に発明をすることができたものであって、特許法第29条第2項の規定により特許を受けることができないから、その発明に係る特許は取り消されるべきものである。
本件特許の請求項3~5に係る発明は、その出願前に日本国内又は外国において、頒布された又は電気通信回線を通じて公衆に利用可能となった甲8に記載された発明に基いて、甲1、3、6、7、10、11に記載された事項を参酌することにより、当業者が容易に発明をすることができたものであって、特許法第29条第2項の規定により特許を受けることができないから、その発明に係る特許は取り消されるべきものである。
本件特許の請求項6~9に係る発明は、その出願前に日本国内又は外国において、頒布された又は電気通信回線を通じて公衆に利用可能となった甲8に記載された発明に基いて、甲1、3、5~7、9~11に記載された事項を参酌することにより、当業者が容易に発明をすることができたものであって、特許法第29条第2項の規定により特許を受けることができないから、その発明に係る特許は取り消されるべきものである。
2 証拠方法
甲第1号証 :国際公開第2018/067962号
甲第2号証 :特開2018-147182号公報
甲第3号証 :特開2018-142049号公報
甲第4号証 :特開2018-116469号公報
甲第5号証 :国際公開第2018/103736号
甲第6号証 :HOWARD, G.A. et al., MobileNets: Efficient
ConvolutionalNeural Networks for Mobile Vision
Applications, arXiv[オンライン], 2017年4月
17日, インターネット<URL:https://arxiv.org/
abs/1704.04861>
甲第7号証 :米国特許出願公開第2018/0189595号明細書
甲第8号証 :ZHANG, X. et al., DNNBuilder: an Automated Tool for
Building High-Performance DNN Hardware Accelerators
for FPGAs,Proceedings of the 2018 IEEE/ACM
International Conference on Computer-Aided Design
(ICCAD)[オンライン],IEEE,2018年11月8日,
インターネット<URL:https://ieeexplore.ieee.org/
document/8587697>
甲第9号証 :中国特許出願公開第108108811号明細書
甲第10号証:米国特許出願公開第2019/0066713号明細書
甲第11号証:特開2016-99680号公報
甲第12号証:CHOLLET, F., Xception: Deep Learning with Depthwise
Separable Convolutions, arXiv[オンライン],
2017年4月4日, インターネット<URL:https://
arxiv.org/abs/1610.02357v3>
第3 訂正請求について
1 訂正の趣旨
令和5年11月21日に提出された訂正請求書による訂正請求の趣旨は、「特許第7180751号の明細書、特許請求の範囲を、本訂正請求書に添付した訂正明細書、訂正特許請求の範囲のとおり、訂正後の請求項1~9について訂正することを求める。」というものである。
2 訂正の内容
上記訂正請求による訂正(以下、「本件訂正」という。)の内容は、以下のとおりである。(各訂正事項中の下線は、訂正箇所を示す。)
(1)訂正事項1
特許請求の範囲の請求項1に「前記SRAMに格納された演算結果に対して空間方向への畳み込みを行うN×N畳み込み演算回路とを備える」と記載されているのを、「前記SRAMに格納された演算結果に対して空間方向への畳み込みを行うN×N畳み込み演算回路とを備え、」にするとともに、直後に「前記1×1畳み込み演算回路の入力はDRAMから行われる」という記載を追加する訂正を行う(請求項1の記載を直接的又は間接的に引用する請求項2~9も同様に訂正を行う)。
(2)訂正事項2
明細書の段落【0021】に「SRAMに格納された演算結果に対して空間方向への畳み込みを行うN×N畳み込み演算回路とを含む」と記載されているのを、「SRAMに格納された演算結果に対して空間方向への畳み込みを行うN×N畳み込み演算回路とを含み、」にするとともに、直後に「1×1畳み込み演算回路の入力はDRAMから行われる」という記載を追加する訂正を行う。
(3)一群の請求項について
本件訂正前の請求項1~9について、請求項2~9は、それぞれ請求項1を直接的又は間接的に引用しているものであって、訂正事項1によって記載が訂正される請求項1に連動して訂正されるものである。したがって、本件訂正前の請求項1~9に対応する本件訂正後の請求項1~9は、特許法第120条の5第4項に規定する一群の請求項である。
3 訂正の適否についての判断
(1)訂正事項1
ア 訂正の目的
訂正事項1は、本件訂正前の請求項1の「ニューラルネットワーク回路」について、「1×1畳み込み演算回路」の入力元が「DRAM」であることを具体的に特定するものである。
したがって、訂正事項1に係る訂正は、「1×1畳み込み演算回路」の入力元を具体的に特定することにより、更に限定しようとするものであるから、特許法第120条の5第2項ただし書第1号に規定する特許請求の範囲の減縮を目的とするものである。
イ 願書に添付した明細書、特許請求の範囲又は図面に記載した事項の範囲内の訂正であること
願書に添付した明細書の【0028】の「具体的には、1×1畳み込み演算回路10は、DRAM40から演算対象のデータを読み出し、重みメモリ11から読み出した重み係数を用いて、depthwise separable 畳み込みにおけるpointwise 畳み込み(1×1フィルタを用いるチャネル方向への畳み込み)を実行する。」との記載、及び、【0055】の「1×1畳み込み演算回路10は、DRAM40に格納された演算結果に対してチャネル方向への畳み込みを行う。」との記載を踏まえると、明細書には、「1×1畳み込み演算回路の入力はDRAMから行われる」ことが記載されているといえる。
したがって、訂正事項1に係る訂正は、願書に添付した明細書、特許請求の範囲又は図面(以下「明細書等」という。)のすべての記載を総合することにより導かれる技術的事項との関係において、新たな技術的事項を導入するものではなく、明細書等に記載した事項の範囲内においてしたものであるから、特許法第120条の5第9項において準用する同法第126条第5項の規定に適合するものである。
ウ 実質上特許請求の範囲を拡張し、又は変更する訂正ではないこと
上記アで検討したとおり、訂正事項1は、特許請求の範囲の減縮を目的とする訂正であるので、実質上特許請求の範囲を拡張し、又は変更する訂正ではない。
したがって、訂正事項1に係る訂正は、実質上特許請求の範囲を拡張し、又は変更するものには該当せず、特許法第120条の5第9項において準用する同法第126条第6項の規定に適合するものである。
エ 特許出願の際に独立して特許を受けることができること
訂正事項1は、上記アのとおり、特許請求の範囲の減縮を目的とする訂正であるが、本件においては、本件訂正前の請求項1~9について特許異議の申立てがされているので、特許法第120条の5第9項において読み替えて準用する同法第126条第7項の規定(独立特許要件)は課されない。
(2)訂正事項2
ア 訂正の目的
訂正事項2は、訂正事項1に係る訂正により請求項1を訂正することに伴い、明細書の【0021】の記載を、特許請求の範囲の記載と整合するように訂正するものである。
したがって、訂正事項2に係る訂正は、特許法第120条の5第2項ただし書第3号に規定する明瞭でない記載の釈明を目的とするものである。
イ 明細書等に記載した事項の範囲内の訂正であること
上記(1)イで検討したとおり、願書に添付した明細書の【0028】、【0055】から、明細書には、「1×1畳み込み演算回路の入力はDRAMから行われる」ことが記載されているといえる。
したがって、訂正事項2に係る訂正は、明細書等のすべての記載を総合することにより導かれる技術的事項との関係において、新たな技術的事項を導入するものではなく、明細書等に記載した事項の範囲内においてしたものであるから、特許法第120条の5第9項において準用する同法第126条第5項の規定に適合するものである。
ウ 実質上特許請求の範囲を拡張し、又は変更する訂正ではないこと
上記アで検討したとおり、訂正事項2は、明細書の【0021】の記載を、特許請求の範囲の記載と整合するようにするための訂正であり、実質的な内容の変更を伴うものではない。
したがって、訂正事項2に係る訂正は、実質上特許請求の範囲を拡張し、又は変更するものには該当せず、特許法第120条の5第9項において準用する同法第126条第6項の規定に適合するものである。
4 本件訂正に対する申立人の主張について
申立人は、令和6年1月22日に提出した意見書において、概略、本件明細書には、ニューラルネットワーク回路内で、N×N畳み込み演算回路の演算結果がDRAMに入力され、この演算結果がDRAMから1×1畳み込み演算回路に入力される、という一体的な構成のみが記載されているところ、訂正事項1は、その技術的事項を超える、新たな技術的事項を導入するものであり、明らかに明細書等の記載事項の範囲を超えるものである、と主張している。
しかしながら、既に上記(1)イで検討したとおり、願書に添付した明細書の【0028】、【0055】から、明細書には、「1×1畳み込み演算回路の入力はDRAMから行われる」ことが記載されているとともに、申立人が主張するような、演算回路からDRAMへの入力と、DRAMから演算回路への入力とを一体的な構成として解釈しなければならない合理的な理由が存在するともいえない。
加えて、本件訂正前の請求項1には、「ニューラルネットワーク回路内で、N×N畳み込み演算回路の演算結果がDRAMに入力され、この演算結果がDRAMから1×1畳み込み演算回路に入力される」という一体的な構成が具体的に特定されていなかったにもかかわらず、申立人は、特許法第36条第6項第1号(サポート要件)に基づく取消理由を申し立てていなかったが、本件訂正により、「1×1畳み込み演算回路の入力はDRAMから行われる」との事項が追加されたことにより、新たな技術的事項を導入するものとなったことについて、申立人は合理的な説明をしていない。
よって、当該主張を採用することはできない。
5 訂正請求についての結論
以上のとおりであるから、本件訂正は、特許法第120条の5第2項ただし書第1号及び第3号に掲げる事項を目的とするものであり、かつ、同条第9項において準用する同法第126条第5項及び第6項に適合するものである。
したがって、本件特許の明細書、特許請求の範囲を、訂正請求書に添付した訂正明細書、訂正特許請求の範囲のとおり、訂正後の請求項〔1~9〕について訂正することを認める。
第4 訂正後の本件特許
本件訂正の請求が認められたことにより、本件特許の請求項1~9に係る発明(以下、「本件発明1」などという。)は、訂正請求書に添付した訂正特許請求の範囲の請求項1~9に記載された事項により特定される以下のとおりのものである。
【請求項1】(本件発明1)
畳み込み演算を空間方向への畳み込み演算とチャネル方向への畳み込み演算とに分けて、それらを個別に実行するニューラルネットワーク回路であって、
チャネル方向への畳み込みを行う1×1畳み込み演算回路と、
前記1×1畳み込み演算回路の演算結果が格納されるSRAMと、
前記SRAMに格納された演算結果に対して空間方向への畳み込みを行うN×N畳み込み演算回路とを備え、
前記1×1畳み込み演算回路の入力はDRAMから行われる
ことを特徴とするニューラルネットワーク回路。
【請求項2】(本件発明2)
前記N×N畳み込み演算回路の演算結果が格納されるDRAMを備え、
前記1×1畳み込み演算回路は、前記DRAMに格納された演算結果に対してチャネル方向への畳み込みを行う
請求項1記載のニューラルネットワーク回路。
【請求項3】(本件発明3)
Nは3である請求項1または請求項2記載のニューラルネットワーク回路。
【請求項4】(本件発明4)
前記1×1畳み込み演算回路における演算器の数と前記N×N畳み込み演算回路における演算器の数とは、演算コストに応じて設定されている
請求項1から請求項3のうちのいずれか1項に記載のニューラルネットワーク回路。
【請求項5】(本件発明5)
前記1×1畳み込み演算回路における演算器の数は、前記N×N畳み込み演算回路における演算器の数よりも多い
請求項4記載のニューラルネットワーク回路。
【請求項6】(本件発明6)
前記1×1畳み込み演算回路における演算器の数と前記N×N畳み込み演算回路における演算器の数は、それぞれ、2のn乗である
請求項1から請求項5のうちのいずれか1項に記載のニューラルネットワーク回路。
【請求項7】(本件発明7)
前記1×1畳み込み演算回路が使用する重み係数を記憶する第1の重みメモリと、
前記N×N畳み込み演算回路が使用する重み係数を記憶する第2の重みメモリとを備え、
前記1×1畳み込み演算回路と前記N×N畳み込み演算回路とは、並行して畳み込み演算を実行する
請求項1から請求項6のうちのいずれか1項に記載のニューラルネットワーク回路。
【請求項8】(本件発明8)
少なくとも、前記1×1畳み込み演算回路と前記N×N畳み込み演算回路とがFPGAに形成されている
請求項1から請求項7のうちのいずれか1項に記載のニューラルネットワーク回路。
【請求項9】(本件発明9)
前記SRAMも、前記FPGA形成されている
請求項8記載のニューラルネットワーク回路。
第5 取消理由の概要
本件訂正前の請求項1~9に係る特許に対して、令和5年9月21日付けで当審が特許権者に通知した取消理由は、概略、次のとおりのものである。
(進歩性)
本件特許の以下の請求項に係る発明は、その出願前に日本国内又は外国において、頒布された又は電気通信回線を通じて公衆に利用可能となった上記の甲1ないし甲3、甲5、甲7ないし甲9並びに当審で新たに引用する以下の引用文献A及びBに記載された発明に基いて、当業者が容易に発明をすることができたものであって、特許法第29条第2項の規定により特許を受けることができないから、その発明に係る特許は取り消されるべきものである。
引用文献A:特許第6223607号公報
引用文献B:鈴木洸陽外4名,4CH出力を用いた超解像処理のハードウエ
ア化,第17回情報科学技術フォーラム(FIT2018)予稿集
第1分冊,一般社団法人情報処理学会,2018年9月21
日,pp.207-208
1 甲第8号証に記載された発明に基づく進歩性欠如
請求項1に係る発明は、甲8に記載された発明に基いて、甲1及び引用文献A、Bに記載された事項を参酌することにより、当業者が容易に発明をすることができたものである。
請求項3、4に係る発明は、甲8に記載された発明に基いて、甲1、7、9及び引用文献A、Bに記載された事項を参酌することにより、当業者が容易に発明をすることができたものである。
請求項6~9に係る発明は、甲8に記載された発明に基いて、甲1、5、7,9及び引用文献A、Bに記載された事項を参酌することにより、当業者が容易に発明をすることができたものである。
以下、当該取消理由を「取消理由1-1」という。
2 甲第1号証に記載された発明に基づく進歩性欠如
請求項1に係る発明は、甲1に記載された発明に基いて、甲2、3に記載された事項を参酌することにより、当業者が容易に発明をすることができたものである。
請求項3に係る発明は、甲1に記載された発明に基いて、甲2、3、7、9に記載された事項を参酌することにより、当業者が容易に発明をすることができたものである。
請求項6、8、9に係る発明は、甲1に記載された発明に基いて、甲2、3、5、7、9に記載された事項を参酌することにより、当業者が容易に発明をすることができたものである。
以下、当該取消理由を「取消理由1-2」という。
第6 甲号証及び引用文献の記載事項
1 甲1記載事項
甲第1号証には、図面とともに、次の事項が記載されている。(なお、下線は、強調のため当審が付与した。以降においても同様。)
(1) 「[21] The neural network system 100 receives an input image 102. The neural network system 100 then processes the input image 102 using a separable convolution subnetwork 150 to generate an output for the input image.」
(当審訳)
「[21] ニューラルネットワークシステム100は、入力画像102を受け取る。次いで、ニューラルネットワークシステム100は、分離可能な畳み込みサブネットワーク150を使用して入力画像102を処理して、入力画像の出力を生成する。」
(2) 「[23] Generally, the separable convolution subnetwork 150 includes multiple separable convolutional neural network layers arranged in a stack one after the other.」
(当審訳)
「[23] 概して、分離可能な畳み込みサブネットワーク150は、順々にスタック状に配置された複数の分離可能な畳み込みニューラルネットワーク層を含む。」
(3) 「[24] A separable convolutional neural network layer includes a depthwise convolution, i.e. a spatial convolution performed independently over every channel of an input, followed by a pointwise convolution, i.e. a regular convolution with lxl windows, projecting the channels computed by the depthwise convolution onto a new channel space. Each separable convolutional neural network layer is configured to separately apply both a depthwise convolution and a pointwise convolution during processing of an input to the separable convolutional neural network layer. For example, a separable convolutional layer may first perform channel-wise spatial convolution, i.e., depthwise convolution, on the received input to generate an intermediate output and then perform l x l convolution, i.e., pointwise convolution, on the intermediate output to generate a layer output. As another example, a separable convolutional layer may first perform l x l convolution on the received input to generate an intermediate output and then perform channel-wise spatial convolution on the intermediate output to generate a layer output.」
(当審訳)
「[24] 分離可能な畳み込みニューラルネットワーク層は、depthwise畳み込み、すなわち、入力のあらゆるチャンネルを介して独立して行われる空間的畳み込みを含み、この後に、pointwise畳み込み、すなわち、1×1ウィンドウによる通常の畳み込みが続き、depthwise畳み込みによってコンピュータ計算されたチャンネルが新規チャンネル空間上に投影される。各分離可能な畳み込みニューラルネットワーク層は、分離可能な畳み込みニューラルネットワーク層への入力の処理中、depthwise畳み込みとpointwise畳み込みの両方を別々に適用するように構成されている。たとえば、分離可能な畳み込み層は、まず、受け取った入力に関してchannel-wise空間的畳み込み、すなわち、depthwise畳み込みを行って、中間の出力を生成し、次いで、中間の出力に関して1×1畳み込み、すなわち、pointwise畳み込みを行って、層の出力を生成することができる。別の例として、分離可能な畳み込み層は、まず、受け取った入力に関して1×1畳み込みを行って、中間の出力を生成し、次いで、中間の出力に関してchannel-wise空間的畳み込みを行って、層の出力を生成する場合もある。」
(4) 「[35] The entry module 200 further includes a first stack 220 of separable convolutional neural network layers (e.g., the separable convolutional layer 204 and the separable convolutional layer 208). The separable convolutional neural network layers in the first stack 220 are configured to collectively process the entry input 202 to generate a first stack output 222. In particular, each separable convolutional neural network layer in the first stack 220 is configured to separately apply both a depthwise convolution and a pointwise convolution during processing of an input to the separable convolutional neural network layer to generate a layer output. Each separable convolutional layer then provides the layer output as input to the next separable convolutional layer or, if there are no layers following the current layer, as the first stack output 222.」
(当審訳)
「[35] 開始モジュール200は、分離可能な畳み込みニューラルネットワーク層(たとえば、分離可能な畳み込み層204および分離可能な畳み込み層208)の第1のスタック220をさらに含む。第1のスタック層220における分離可能な畳み込みニューラルネットワーク層は、開始入力202をまとめて処理して、第1のスタック出力222を生成するように構成されている。具体的には、第1のスタック220における各分離可能な畳み込みニューラルネットワーク層は、分離可能な畳み込みニューラルネットワーク層への入力の処理中、depthwise畳み込みとpointwise畳み込みの両方を別々に適用して、層出力を生成するように構成されている。各分離可能な畳み込み層は、次いで、この層出力を、次の分離可能な畳み込み層への入力として、または現在の層に続く層が存在しない場合には、第1のスタック出力222として提供する。」
(5) 「[74] The processes and logic flows described in this specification can be performed by one or more programmable computers executing one or more computer programs to perform functions by operating on input data and generating output. The processes and logic flows can also be performed by special purpose logic circuitry, e.g., an FPGA or an ASIC, or by a combination of special purpose logic circuitry and one or more programmed computers.」
(当審訳)
「[74] 本明細書で説明される方法および論理フローは、入力データに関して操作して出力を生成することによって機能を行うように1つまたは複数のコンピュータプログラムを実行する1つまたは複数のプログラマブルコンピュータによって行うことができる。方法および論理フローはまた、専用の論理回路機構、たとえばFPGAもしくはASICによって、あるいは専用の論理回路機構と1つまたは複数のプログラムされたコンピュータとの組合せによって行うことができる。」
2 甲1発明
(1) 上記1(1)、(2)及び(5)から、甲1には、「スタック状に配置された複数の分離可能な畳み込みニューラルネットワーク層により入力画像を処理する、FPGAにより実行されるニューラルネットワークシステム」が記載されているといえる。
(2) 上記1(3)及び(4)から、甲1には、「分離可能な畳み込みニューラルネットワーク層は、空間方向への畳み込みであるdepthwise畳み込みと、チャネル方向への畳み込みであるpointwise畳み込みとを別々に適用するように構成され、まず、受け取った入力に関して1×1畳み込み演算であるpointwise畳み込みを行って、中間の出力を生成し、次いで、中間の出力に関して空間方向の畳み込みであるdepthwise畳み込みを行って、層の出力を生成し、この層の出力を次の分離可能な畳み込みニューラルネットワーク層に入力する」ことが記載されているといえる。
(3) したがって、甲1には、次の発明(以下、「甲1発明」という。)が記載されていると認められる。
「スタック状に配置された複数の分離可能な畳み込みニューラルネットワーク層により入力画像を処理する、FPGAにより実行されるニューラルネットワークシステムであって、
分離可能な畳み込みニューラルネットワーク層は、空間方向への畳み込みであるdepthwise畳み込みと、チャネル方向への畳み込みであるpointwise畳み込みとを別々に適用するように構成され、まず、受け取った入力に関して1×1畳み込み演算であるpointwise畳み込みを行って、中間の出力を生成し、次いで、中間の出力に関して空間方向の畳み込みであるdepthwise畳み込みを行って、層の出力を生成し、この層の出力を次の分離可能な畳み込みニューラルネットワーク層に入力する
ニューラルネットワークシステム。」
3 甲2記載事項
甲第2号証には、次の事項が記載されている。
(1) 「【0034】
図1は、CNN処理部63の詳細構成を示す図である。演算部101は、シーケンサー部104からの制御信号に応じて、所定のデータ群に対して畳込み演算と非線形処理を実行する。
…(中略)…
【0036】
記憶部である内部メモリ(以下、単にメモリという)102は、入力画像/中間層の特徴抽出結果/最終検出結果、フィルタカーネルの重み係数等を格納する。本実施形態では、畳込み演算を高速に実行するため、メモリ102として、高速にランダムアクセスが可能なSRAM(Static RAM)を使用している。」
4 甲3記載事項
甲第3号証には、次の事項が記載されている。
(1) 「【0021】
図2に、本実施例における画像認識装置100の構成を示す。画像認識装置100の入力は画像101であり、出力は画像101の認識結果102である。画像認識装置100は内部に演算データ記憶領域103と演算ユニット104を持ち、入力ポートと出力ポートと演算データ記憶領域103と演算ユニット104はすべてバス105で接続されており、バス105を通じて演算データは転送される。
【0022】
演算データ記憶領域103の内部は一時記憶領域106とフィルタデータ記憶領域107で構成される。一時記憶領域106には、画像認識装置100で実行される演算の途中結果が格納される。フィルタデータ記憶領域107には、畳込みニューラルネットワークの中間層のフィルタデータが予め格納されている。
【0023】
演算ユニット104は、畳込みニューラルネットワークの演算に必要な演算モジュールで構成されている。」
(2) 「【0031】
自動車などの組込み用途においては、例えば、画像認識装置100はFPGA(field-programmable gate array)のような半導体集積回路で構成することができる。この半導体集積回路は、例えば1チップで構成され、汎用用途のCPU(Central Processing Unit)と協働して、主に画像に関する処理を行う。演算データ記憶領域103は、半導体メモリであって、例えばSRAM(Static Random Access Memory)のような高速のメモリが用いられる。また、画像認識装置100はFPGAではなく、記憶装置に格納されたプログラムがCPUによって実行されることで、定められた処理を他のハードウェアと協働して行うように構成することもできる。…」
5 甲4記載事項
甲第4号証には、図面とともに、次の事項が記載されている。
(1) 「【0020】
図1に,本実施例における画像認識装置1000の構成を示す。画像認識装置1000は、例えば自動車に搭載される装置として構成され、図示しないバッテリー等から電力を供給される。画像認識装置1000は、汎用の処理を行うCPU(Central Processing Unit)101、アクセラレータ100、データを記憶するためのメモリ102(便宜上「外部メモリ102」と呼ぶこともある)を含む。これらは外部バス115で接続され、データのやり取りが可能である。外部メモリ102は、例えば1または複数のチップで構成されるDRAMやフラッシュメモリなどの半導体メモリを用いることができる。
…(中略)…
【0023】
図1では、アクセラレータ100を1チップのFPGAで構成することを想定している。自動車などの組込み用途においては、アクセラレータ100はFPGAのような半導体集積回路で構成することができる。この半導体集積回路は、例えば1チップで構成され、汎用用途のCPU101と協働して、主に画像に関する処理を行う。演算データ記憶領域103は、半導体メモリであって、例えばSRAMのようなスケールが小さく高速のメモリが用いられる。なお、本実施例では画像認識処理を例に説明しているが、本実施例は他の処理に用いることも可能であり、特に用途を限定するものではない。また、外部メモリ102は、例えばDRAMやフラッシュメモリのようなメモリであり、内部メモリである演算データ記憶領域103に比較して、ソフトエラー耐性に優れるものを想定する。」
(2) 「【0041】
図2および図3で説明したように、畳込み層CN1,CN2や全結合層IP1等は基本的に積和演算、すなわち乗算の結果の加算を行うものである。この演算においては、図2や図3で説明したように、重みデータW等のパラメータを用いる。本実施例では重みデータWは、基本的にその全てを外部メモリ102に格納することにしている。電源ON時等、演算を行う前には、重みデータWの少なくとも一部Wmを、BRAM106あるいはCRAM107にロードする。すなわち、本実施例では、重みデータを所定のルールにより、外部メモリ102と演算データ記憶領域103に分散させる。
…(中略)…
【0043】
画像認識装置1000が画像認識を行う場合には、画像データ201を入力データIとしてBRAM106に保持し、演算ユニット104の論理モジュールで演算を行う。畳込み演算・全結合演算モジュール110を例に取れば、外部メモリ102あるいは演算データ記憶領域103から、演算に必要なパラメータを演算ユニット104に読み出し、演算を行う。内積演算の場合には、入力側ノードIと出力側ノードOの積の数だけの重みデータWが必要となる。図4では、出力O1に対する入力I1の重みデータW11を示している。演算結果である出力データOは、外部メモリ102に格納され、当該データは次の演算の入力データIとしてBRAM106に格納される。必要な演算が全て終了すると、演算ユニット104からの最終的な出力Oは、認識結果202として出力される。」
(3) 「【図4】
[図:0001416447000001.jpg]
」
(当審訳は省略)
6 甲5記載事項
甲第5号証には、次の事項が記載されている。
(1) 「[61] FIG. 2 illustrates an exemplary architecture of a system disclosed herein for applying a CNN. The system may include an integrated circuit 210 implementing application of a CNN system. The system may also include a main processor 201 and a main memory 203 for arranging and storing the data that are to be processed by the integrated circuit 210. The integrated circuit may comprise a computing unit 207 for performing multiplications, additions, and other related operations, an on-board memory unit 209 for storing a set of items such as parameters, biases and input data to be supplied to the computing unit, and communication unit 211 for handling data transmission between the integrated circuit and a main processor 201, various other functional circuits. …」
(当審訳)
「[61] 図2は、CNNを適用するためにここに開示されるシステムの例示的なアーキテクチャを示す。当該システムは、CNNシステムの適用を実装する集積回路210を含んでもよい。当該システムはまた、集積回路210により処理されるべきデータを配置及び記憶するためのメインプロセッサ201及びメインメモリ203を含んでもよい。集積回路は、乗算、追加及び他の関係する演算を実行するための計算ユニット207と、計算ユニットに供給されるべきパラメータ、バイアス及び入力データのような項目のセットを記憶するためのオンボードメモリユニット209と、集積回路とメインプロセッサ201との間のデータ送信を処理するための通信ユニット211と、様々な他の機能回路とを含んでもよい。…」
(2) 「[66] The computing unit 207 may comprise arrays of calculation circuits. The calculation circuits may include arithmetic logic units (ALUs) . The ALUs may be in the arrays that are connected via a network which may depend on the dataflow requirements. In some cases, the computing unit may be in the form of fine-gained spatial architectures such as FPGA. Other architectures such as application-specific integrated circuit (ASIC) can also be used. In some cases, the calculation circuits may comprise a plurality of multipliers. In some cases, the calculation circuits may comprise a plurality of multiplier-accumulator units (MACs) . The computing unit may include an ALU datapath which is capable of performing multiplications followed by addition/accumulations. In some cases, a FIFO may be used to control the traffic going in and out of the computing unit. The computing unit may comprise a plurality of multipliers and accumulators. For example, the computing unit may comprise 32, 64, 128, 256, 512 and more multipliers. Each multiplier may include a first input to receive a value of an input signal and a second input to receive a weight or kernel parameter. Multipliers may be hardware components that perform multiplication operation of integer or fixed-point inputs. The multipliers may be for example 8-bit or 16 bit fixed-point multipliers.」
(当審訳)
「[66] 計算ユニット207は、計算回路のアレイを含んでもよい。計算回路は、演算論理ユニット(ALU:arithmetic logic unit)を含んでもよい。ALUは、データフロー要件に依存し得るネットワークを介して接続されるアレイ内にあってもよい。いくつかの場合、計算ユニットは、FPGAのような細かい空間アーキテクチャの形式になってもよい。特定用途向け集積回路(ASIC:application-specific integrated circuit)のような他のアーキテクチャも使用できる。いくつかの場合、計算回路は、複数の乗算器を含んでもよい。いくつかの場合、計算回路は、複数の乗算器・累算器ユニット(MAC:multiplier-accumulator unit)を含んでもよい。計算ユニットは、乗算を実行して、続いて加算/累算を実行できるALUデータパスを含んでもよい。いくつかの場合、FIFOが、計算ユニットに対して出入りするトラフィックを制御するために使用されてもよい。計算ユニットは、複数の乗算器及び累算器を含んでもよい。例えば、計算ユニットは、32個、64個、128個、256個、512個及び更に多くの乗算器を含んでもよい。各乗算器は、入力信号の値を受信するための第1の入力と、重み又はカーネルパラメータを受信するための第2の入力とを含んでもよい。乗算器は、整数入力又は固定小数点入力の乗算演算を実行するハードウェアコンポーネントでもよい。乗算器は、例えば、8ビット又は16ビットの固定小数点乗算器でもよい。」
(3) 「[80] FIG. 3 illustrates an exemplary data organization in a main memory 300 of the system. The main memory may be used by or coupled to the processor. The main memory can be any suitable memory including static random-access memory (SRAM) , dynamic random-access memory (DRAM) , synchronous dynamic random-access memory (SDRAM) , double data rate (DDR) , double data rate synchronous dynamic random-access memory (DDR SDRAM) , DDR, DDR2, DDR3, T-RAM, Z-RAM, and so forth.[81] The main memory may store various instructions, data for processing including input data and parameters to be loaded to the CNN system. In some cases, the main memory may also receive output results of the CNN system and/or intermediate results generated during a CNN operation. The data may include input data to be analyzed using the CNN system. The input data can be images, text, audios, and the like. The input data may be obtained from other devices or systems. For example, the input data can be image data captured by an imaging device. The image data generated by an imaging device can include one or more images, which may be static images (e.g., photographs) , dynamic images (e.g., video) , or suitable combinations thereof.」
(当審訳)
「[80] 図3は、システムのメインメモリ300内の例示的なデータ編成を示す。メインメモリは、プロセッサにより使用されてもよく、或いはプロセッサに結合されてもよい。メインメモリは、スタティック・ランダムアクセスメモリ(SRAM:static random-access memory)、ダイナミック・ランダムアクセスメモリ(DRAM:dynamic random-access memory)、シンクロナス・ダイナミック・ランダムアクセスメモリ(SDRAM:synchronous dynamic random-access memory)、ダブルデータレート(DDR:double data rate)、ダブルデータレート・シンクロナス・ダイナミック・ランダムアクセスメモリ(DDR SDRAM:double data rate synchronous dynamic random-access memory)、DDR、DDR2、DDR3、T-RAM、ZRAM等を含むいずれか適切なメモリとすることができる。
[81] メインメモリは、様々な命令と、入力データを含む処理用のデータと、CNNシステムにロードされるべきパラメータとを記憶してもよい。いくつかの場合、メインメモリはまた、CNNシステムの出力結果及び/又はCNN演算中に生成された中間結果を受信してもよい。データは、CNNシステムを使用して分析されるべき入力データを含んでもよい。入力データは、画像、テキスト、オーディオ等とすることができる。入力データは、他のデバイス又はシステムから取得されてもよい。例えば、入力データは、撮像デバイスによりキャプチャされた画像データでもよい。撮像デバイスにより生成された画像データは、静止画像(例えば、写真)、動画像(例えば、ビデオ)又はこれらの適切な組み合わせでもよい1つ以上の画像を含むことができる。」
7 甲6記載事項
甲第6号証には、図面とともに、次の事項が記載されている。
(1) 「Abstract
We present a class of efficient models called MobileNets for mobile and embedded vision applications. MobileNets are based on a streamlined architecture that uses depthwise separable convolutions to build light weight deep neural networks.」
(当審訳)
「要約
我々は、モバイル及び組み込み用途のビジョンアプリケーションのためのMobileNetと呼ばれる効率的なモデルのクラスを提案する。MobileNetは、軽量なニューラルネットワークを構築するためにdepthwise分離可能畳み込みを用いる最新のアーキテクチャである。」
(2) 「3.1. Depthwise Separable Convolution
The MobileNet model is based on depthwise separable convolutions which is a form of factorized convolutions which factorize a standard convolution into a depthwise convolution and a 1×1 convolution called a pointwise convolution. For MobileNets the depthwise convolution applies a single filter to each input channel. The pointwise convolution then applies a 1×1 convolution to combine the outputs the depthwise convolution. A standard convolution both filters and combines inputs into a new set of outputs in one step. The depthwise separable convolution splits this into two layers, a separate layer for filtering and a separate layer for combining. This factorization has the effect of drastically reducing computation and model size.」
(当審訳)
「3.1. Depthwise分離可能畳み込み
MobileNet モデルは、標準的な畳み込みを、depthwise畳み込みと、pointwise畳み込みと呼ばれる1×1畳み込みへと分解する、分解された畳み込みの形をとる、depthwise分離可能畳み込みに基づく。MobileNetsでは、depthwise畳み込みは、各入力チャンネルに1つのフィルターを適用する。Pointwise畳み込みは、次に1×1畳み込みを適用して、depthwise畳み込みの出力を結合する。標準的な畳み込みは、1つのステップで入力をフィルタリングし、新しい出力の集合に結合する。Depthwise分離可能畳み込みは、これを2つのレイヤーに分割し、フィルタリングのレイヤーと結合のレイヤーに分ける。この因数分解は、計算とモデルのサイズを劇的に小さくする効果がある。」
(3) 「
[図:0001416447000002.jpg]
Figure 3. Left: Standard convolutional layer with batchnorm and ReLU. Right: Depthwise Separable convolutions with Depthwise and Pointwise layers followed by batchnorm and ReLU.」
(当審訳)
「図3.左図:バッチ正規化及び ReLU を伴う標準的な畳み込み層。右図:Depthwise 及び Pointwise 層を有する Depthwse 分離可能畳み込み及びそれに続くバッチ正規化及び ReLU。」
8 甲7記載事項
甲第7号証には、図面とともに、次の事項が記載されている。
(1) 「[0089] FIG. 19 is a schematic diagram showing example depthwise separable filters that contain a combination of a depthwise convolutional layer 1901 followed by a pointwise convolutional layer 1902. …」
(当審訳)
「[0089] 図19は、depthwise畳み込み層1901と、それに続くpointwise畳み込み層1902の組み合わせを含む、depthwise 分離可能フィルタの例を示す概略図である。…」
(2) 「FIG.19
[図:0001416447000003.jpg]
」
(当審訳は省略)
9 甲8記載事項
甲第8号証には、図面とともに、次の事項が記載されている。
(1) 第2ページ右欄第39行~第43行
「4 PROPOSED AUTOMATION FLOW
DNNBuilder produces board-level FPGA implementations in three steps: Design, Generation, and Execution (Fig. 1). After networks are determined, RTL codes and corresponding files for running DNN accelerators on FPGAs can be generated in seconds.」
(当審訳)
「4 提案する自動化フロー
DNNBuilderは、3つのステップ:設計、生成、実行(図1)によってボードレベルのFPGA実装を生成する。ネットワークが決定されると、FPGA上でDNNアクセラレータを実行するためのRTLコードと対応するファイルが数秒で生成される。」
(2) 第3ページ左欄第32行~右欄第12行
「5 ACCELERATOR ARCHITECTURE DESIGN
DNNBuilder generates a pipeline structure where each pipeline stage corresponds to each major neural network layer, like CONV or FC layer, which dominates computation and memory consumption. The rest of layers such as batch normalization (BN), scale, and activation layers are aggregated to the major layers so that we reduce the number of pipeline stages for lower latency. In Fig. 2, we present two pipeline stages instantiated on FPGA for computing two CONV layers (i and i + 1). This design consumes three types of FPGA resources as the computation resources (blue area), on-chip memory (green area), and external memory (orange area). Two datapathes are generated for passing input feature maps horizontally and trained weights vertically to the computation units. To maintain sufficient data supply, we setup two buffers for each pipeline stage as the reshape buffer for keeping slices of input feature map and the weight buffer for pumping in the trained weights from external memory.」
(当審訳)
「5 アクセラレータアーキテクチャの設計
DNNBuilder はパイプライン構造を生成し、各パイプラインステージは畳み込み層や全結合層など、計算とメモリ消費を支配する主要なニューラルネットワーク層に対応する。バッチ正規化(BN)層、スケール層、活性化層などの残りの層は主要な層に集約されるため、パイプラインステージの数を減らして低レイテンシを実現する。図2では、2つの畳み込み層(iとi+1)を計算するために、FPGA上でインスタンス化された2つのパイプラインステージを示す。この設計では、計算リソース(青色の領域)、オンチップメモリ(緑色の領域)、外部メモリ(オレンジ色の領域)の3種類のFPGAリソースを消費する。入力特徴マップを水平に、学習済み重みを垂直に計算ユニットに渡すために、2つのデータパスが生成される。十分なデータ供給を維持するため、入力特徴マップの一部分を保持するためのリシェイプバッファと、外部メモリから学習済み重みを取り込むための重みバッファの2つのバッファを各パイプラインステージに設定する。」
(3) 第4ページ右欄第27行~第5ページ左欄第10行
「6 AUTOMATIC RESOURCE ALLOCATION
One of the most critical problems in FPGA-based DNN implementation is the resource allocation under constraints while seeking for the optimal performance. To address this problem, we propose an automatic resource allocator for DNNBuilder, which can generate parallel schemes (e.g., CPF and KFP for each layer) and data buffering guidelines (e.g., size of the reshape buffer) with considerations of network complexity, external memory access bandwidth, and data reuse behaviors.
6.1 Theoretical Guideline
[図:0001416447000004.jpg]
The theory for maximum throughput performance of the pipeline architecture can be found in Equation 1 to 3. Li represents the latency of layer i, while the computation demand (computation complexity) of layer i is Ciand the computation resource consumed by that layer is Ri. Assuming the available resource is Rtotal, the increase of allocated resource for each layer Ri results in a proportional increase in parallelism and eventually lowers the latency for that layer (α is a constant of proportionality related to the hardware working frequency). Since the generated accelerator uses a pipeline architecture, the overall throughput depends on the layer with the maximum computation time (Equation 2). We derive the upper-bound of the throughput from Equation 3, which lists the conditions for achieving the maximum throughput when workloads for all pipeline stages are perfectly balanced. It gives us a theoretical guideline to allocate computation resource for each layer.」
(当審訳)
「6 自動リソース割り当て
FPGAベースのDNN実装における最も重要な問題の1つは、最適なパフォーマンスを追求しながら、制約の下でリソースを割り当てることである。この問題に対処するため、DNNBuilder の自動リソース割り当て機能を提案する。DNNBuilderは、ネットワークの複雑さ、外部メモリ・アクセス帯域幅、およびデータの再利用動作を考慮して、並列スキーム(各レイヤーのCPFおよびKFPなど)とデータ・バッファリング・ガイドライン(リシェイプバッファのサイズなど)を生成できる。
6.1 理論的ガイドライン
[図:0001416447000005.jpg]
パイプライン・アーキテクチャの最大スループット性能に関する理論は、式1~式3で求められる。Liは層iのレイテンシを表し、層iの計算需要(計算複雑度)はCi、その層で消費される計算リソースはRiである。利用可能なリソースを Rtotal とすると、各層Ri に割り当てられたリソースが増加すると、並列度が比例して増加し、最終的にその層のレイテンシが低下する(αはハードウェアの動作周波数に関連する比例定数)。生成されたアクセラレータはパイプライン・アーキテクチャを使用しているため、全体のスループットは計算時間が最大となる層に依存する(式2)。すべてのパイプラインステージの作業負荷が完全にバランスしているときに最大スループットを達成するための条件を列挙した式3から、スループットの上限値を導出する。これにより、各層に計算リソースを割り当てるための理論的な指針が得られる。」
(4) 第6ページ左欄第5行~第10行
「7 EXPERIMENTAL RESULTS
In this section, we demonstrate the capability and scalability of DNNBuilder by mapping four DNNs onto two FPGAs (XC7Z045 in Xilinx ZC706, KU115 in AlphaData 8K5) for running edge and cloud applications. We use a Yokogawa WT310 digital power meter to measure the power consumption.」
(当審訳)
「7 実験結果
このセクションでは、4つのDNNを2つのFPGA (Xilinx ZC706 の XC7Z045、AlphaData 8K5 の KU115)にマッピングし、エッジ・アプリケーションとクラウド・アプリケーションを実行することで、DNNBuilder の能力とスケーラビリティを実証する。消費電力の測定には、横河電機のデジタル電力計WT310を使用する。
」
(5) 第7ページ右欄第10行~第12行
「This accelerator utilizes 137 BRAMs for keeping columns of feature maps and 333 BRAMs (Table 3) for the whole accelerator.」
(当審訳)
「このアクセラレータは、特徴マップの列を保持するために137個のBRAMを使用し、アクセラレータ全体では333個のBRAMを使用する(表3)。」
(6) 第4ページ左欄 図2
「
[図:0001416447000006.jpg]
」
(当審訳は省略)
10 甲8発明
(1) 上記9(1)及び(4)から、甲8には、「DNNBuilderが生成したDNNアクセラレータをマッピングしたFPGA」が記載されているといえる。
(2) 上記9(2)、(4)及び(6)から、甲8には、「DNNアクセラレータをマッピングしたFPGA」は「2つの畳み込み層(層i、層i+1)を計算する2つのパイプラインステージを含む、ニューラルネットワーク層に対応するパイプラインステージを有するパイプライン構造」を備えることが記載されているといえる。
(3) 上記9(2)、(5)及び(6)から、甲8には、「各パイプラインステージ」が「計算リソースと、計算リソースの演算結果である特徴マップの一部分を保持するためのBRAMを使用したリシェイプバッファと、学習済み重みを取り込むための重みバッファ」を備えることが記載されているといえる。
(4) 上記9(6)から、甲8には、「畳み込み層iの計算リソースの演算結果は、畳み込み層i+1のリシェイプバッファに格納され、畳み込み層i+1の計算リソースは、畳み込み層i+1のリシェイプバッファに格納された畳み込み層iの演算結果を用いて演算を行う」ことが記載されていると読み取れる。
(5) 上記9(3)及び(4)から、甲8には、「DNNアクセラレータをマッピングしたFPGA」が「すべてのパイプラインステージで、各層の計算需要と各層で消費される計算リソースのバランスが取れるように、各層の計算リソースが割り当てられている」ことが記載されているといえる。
(6) したがって、甲8には、次の発明(以下、「甲8発明」という。)が記載されていると認められる。
「DNNBuilderが生成したDNNアクセラレータをマッピングしたFPGAであって、
2つの畳み込み層(層i、層i+1)を計算する2つのパイプラインステージを含む、ニューラルネットワーク層に対応するパイプラインステージを有するパイプライン構造を備え、
各パイプラインステージは、計算リソースと、計算リソースの演算結果である特徴マップの一部分を保持するためのBRAMを使用したリシェイプバッファと、学習済み重みを取り込むための重みバッファとを備え、
畳み込み層iの計算リソースの演算結果は、畳み込み層i+1のリシェイプバッファに格納され、畳み込み層i+1の計算リソースは、畳み込み層i+1のリシェイプバッファに格納された畳み込み層iの演算結果を用いて演算を行い、
すべてのパイプラインステージで、各層の計算需要と各層で消費される計算リソースのバランスが取れるように、各層の計算リソースが割り当てられている、
FPGA。」
11 甲9記載事項及び甲9発明
甲第9号証には、図面とともに、次の事項が記載されている。
(1) 「
[図:0001416447000007.jpg]
」
(当審訳)
「[0034] 軽量ニューラルネットワークとしてのMobileNetは、depthwise separable畳み込みの考え方を使用し、畳み込みを計算するときにチャネルを融合する代わりに(たとえば、3*3畳み込みカーネルまたはそれより大きいサイズ)、これは、depthwise(またはchannel-wiseと呼ばれる)および1*1 pointwise畳み込み法を使用して、畳み込みを分解し、それにより、速度およびモデルサイズが最適化され、計算精度は基本的に保たれる。」
(2) 「
[図:0001416447000008.jpg]
」
(当審訳)
「 [0052] ステップS110において、depthwise畳み込み計算およびpointwise畳み込み計算は、入力特徴マップ、depthwise畳み込みカーネル、pointwise畳み込みカーネルに従って実行され、すべてのpointwise畳み込み出力チャネル上で第1の所定の数p個の点の出力特徴値を取得する。
[0053] 第1の所定の数pは、メモリ内の利用可能な空間、depthwise畳み込み計算ユニットの数、高さおよび幅の大きさ、ならびに入力特徴マップのチャネル数の大きさのうちの少なくとも1つに従って決定され得る。
[0054] たとえば、メモリは、より高速なアクセス速度を実現し、データ伝送帯域幅を占有するのを回避するためにオンチップランダムアクセスメモリ(SRAM)であってよい。しかし、本開示は、それに限定されない。たとえば、メモリは、オフチップメモリ(DDR)などの、他のメモリであってよい。メモリ内の利用可能な空間は、depthwise畳み込み演算の中間出力結果をバッファリングするために使用され得る。」
(3) 「
[図:0001416447000009.jpg]
[図:0001416447000010.jpg]
」
(当審訳)
「 [0061] 既存の実装ソリューションによれば、depthwise畳み込み演算のすべての中間出力結果は、最初に計算され記憶される。depthwise畳み込み演算の中間出力結果として、高さおよび幅の大きさにおいて全部でH行およびW列があると仮定される。本開示の一実施形態において、MobileNetではdepthwise畳み込みの後にpointwise畳み込みが続くという特徴によれば、pointwise畳み込み演算を計算する前にH*W中間出力点のすべてに対する計算が完了しているのを待つ代わりに、pointwise畳み込み演算は、p(pはH*W未満、好ましくはH*Wよりかなり小さく、確かにpはH*Wに等しくてもよい)個の点のdepthwise畳み込み結果が計算された直後にのみ実行され、それにより、depthwise畳み込み演算の中間出力結果に必要な記憶領域は、従来の畳み込みニューラルネットワークに必要な記憶領域のp/(H*W)まで低減され、これは、depthwise畳み込み演算の中間出力結果を記憶するための記憶領域を著しく減らす。depthwise畳み込み演算によって出力される中間データ量がH*W*Mであると仮定すると、本開示の実施形態では、すべてのdepthwise畳み込み演算によって出力される中間結果が計算され、pointwise畳み込み計算のためにバッチで読み出されるまでオンチップ記憶領域が不十分なのでdepthwise畳み込み結果をオフチップメモリにバッチで書き込む複雑なプロセスを回避するために、p*M(H*W*Mよりかなり小さくてよい)サイズを有するオンチップ記憶リソースだけあればよい。統計によれば、オンチップ記憶リソースが畳み込み出力結果の次の完全層を記憶するのに十分でないが、畳み込み出力結果の次の完全層のp/(H*W)が記憶されてよい場合、本開示では、MobileNetネットワークのデータ伝送帯域幅を約50%低減する。」
(4) 「
[図:0001416447000011.jpg]
[図:0001416447000012.jpg]
」
(当審訳)
「 [0223] 5.上述のステップ4の結果に対してpointwise計算を直接実行し、レジスタまたはオンチップSRAMからp個の点、m個のチャネルのdepthwise畳み込み計算の結果を読み出し、p個の点、m個のチャネルの乗算および累算結果を計算し、累算はここではチャネル方向の累算であり、p個の点、1個の出力チャネルのpointwise畳み込み部分和(第1から第mの入力チャネルの部分和)を取得する。
[0224] 6.上述のステップ5の結果をレジスタまたはオンチップSRAMに記憶する。
[0225] 7.ステップ5およびステップ6の演算をN回循環させることによってp個の点、N個の出力チャネルのpointwise畳み込み部分和(第1から第mまでの入力チャネルの部分和)の計算および記憶を完了させるが、ただし、pointwise畳み込みは、全部でn個の畳み込みカーネルを有し、N個の出力チャネル上のp個の出力点の部分和の結果はレジスタまたはオンチップSRAMに記憶されると仮定する。
[0226] 図10に示されているように、pointwise畳み込みの畳み込みカーネルのサイズは1*1であり、また、512個の乗算器-加算器ユニット(ここでは512個の乗算器-加算器ユニットがあり、depthwise計算プロセスの512個の乗算器-加算器ユニットは、同じ512個の乗算器-加算器ユニットであっても、異なっていてもよい)があり、32個の点(上述のp=32)、16個のチャネル(上述のm=16、すなわち、チャネル変数cは0から15の範囲からの値をとる)、1つの畳み込みカーネルの畳み込みを毎回計算し、1個の出力チャネル上で32個の点の部分和のデータを取得すると仮定される。256個の畳み込みカーネルがあると仮定すると、256*(128/16)=2048回の計算の後、256個の出力チャネル上の32個の点の部分和のデータが取得される。」
上記(1)~(4)から、次の発明(以下、「甲9発明」という。)が記載されていると認められる。
「畳み込み演算をdepthwise畳み込みとpointwise畳み込みに分解して行うdepthwise separable畳み込みの考え方を使用した軽量ニューラルネットワークの回路であって、
前記depthwise畳み込みの512個の乗算器-加算器ユニットと、
畳み込みカーネルのサイズが1*1である前記pointwise畳み込みの512個の乗算器-加算器ユニットと、
前記depthwise畳み込み演算の中間出力結果、及び前記pointwise畳み込みの部分和の結果を記憶するオンチップSRAMと、を備え、
前記pointwise畳み込み演算は、所定の数p個の点のdepthwise畳み込み結果が計算された直後にのみ実行され、それにより、depthwise畳み込み演算の中間出力結果に必要な前記オンチップSRAM上の記憶領域は低減される、
軽量ニューラルネットワークの回路。」
12 甲10記載事項
甲第10号証には、図面とともに、次の事項が記載されている。
(1) 「[0188] …(中略)… To further decrease the number of parameters, a depthwise separable convolution (S-conv(・)) is utilized to replace standard convolution in each convolutional block. Depthwise separable convolution (also referred to as separable convolution) has proven effective in image processing and neural machine translation tasks. The depthwise separable convolution operator involves two consecutive operations, a depthwise convolution (D-conv(・)) followed by a standard convolution with kernel size 1 (pointwise convolution, 1×1-conv(・)):
[図:0001416447000013.jpg]
where Y∈RG×M is the input to the S-conv(?), K∈RG×P is the convolution kernel with size P, yj∈R1×M and kj∈R1×P are the rows of matrices Y and K, respectively, and L∈RG×H×1 is the convolution kernel with size 1. …(中略)…
[0189] With reference to FIG. 19, a flow diagram 1900 of operations performed by each 1-D convolutional block is shown. In each 1-D convolutional block, a 1×1-conv operation is followed by a S-conv operation. A nonlinear activation function and a normalization are added after both the first 1×1-conv and D-conv operations. The nonlinear activation function is the parametric rectified linear unit (PReLU), namely:」
(当審訳)
「[0188] …(中略)…パラメータ数をさらに減らすために、各畳み込みブロックにおいて標準的な畳み込みの代わりに、depthwise separable畳み込み(S-conv(・))が利用される。Depthwise separable畳み込み(分離可能畳み込みとも呼ばれる)は、画像処理やニューラル機械翻訳タスクにおいて効果的であることが証明されている。
Depthwise separable畳み込み演算子は、depthwise畳み込み(D-conv(・))と、それに続くカーネルサイズ1の標準畳み込み(pointwise畳み込み、1×1-conv(・))の2つの連続した演算を含み:
[図:0001416447000014.jpg]
ここで、Y∈RG×MはS-conv(・)への入力、K∈RG×PはサイズPの畳み込みカーネル、yj∈R1×Mとkj∈R1×Pはそれぞれ行列YとKの行、L∈RG×H×1はサイズ1の畳み込みカーネルである。
…(中略)…
[0189] 図19を参照すると、各1次元畳み込みブロックによって実行される動作のフロー図1900が示されている。各1次元畳み込みブロックでは、1×1-conv演算の後にS-conv演算が続く。非線形活性化関数と正規化は、最初の1×1-conv演算とD-conv演算の両方の後に追加される。」
(2) 「
[図:0001416447000015.jpg]
」
(当審訳 略)
13 甲11記載事項
甲第11号証には、図面とともに、次の事項が記載されている。
(1) 「【0017】
図3は、観測対象システム900及びデータ取得回路500を示すブロック図である。図3において、観測対象システム900は、CPU(観測対象システム内のプロセッサ)、I. C.(接続回路)、M.P.M.C.(メモリーコントローラ)、Priority register、LED、DDR/SD RAM(メモリ)、DMA(ダイレクトメモリアクセス)、BRAM(ICに内蔵されるSRAM)を構成する。観測対象システム900はpriorty registerを持ち、priorty register は、port0からport3に該当するHP0からHP3のデータ転送の優先順位を決める。このレジスタは、0から 16まで数値を持ち、他のportより数値が大きいときは、優先になるような回路となっている。」
14 甲12記載事項
甲第12号証には、図面とともに、次の事項が記載されている。
(1) 「(第2ページ右欄第4行~第3ページ左欄第7行)
A depthwise separable convolution, commonly called “separable convolution” in deep learning frameworks such as TensorFlow and Keras, consists in a depthwise convolution, i.e. a spatial convolution performed independently over each channel of an input, followed by a pointwise convolution, i.e. a 1x1 convolution, projecting the channels output by the depthwise convolution onto a new channel space. This is not to be confused with a spatially separable convolution, which is also commonly called “separable convolution” in the image processing community.
Two minor differences between and “extreme” version of an Inception module and a depthwise separable convolution would be:
・The order of the operations: depthwise separable convolutions as usually implemented (e.g. in TensorFlow) perform first channel-wise spatial convolution and then perform 1x1 convolution, whereas Inception performs the 1x1 convolution first.
・The presence or absence of a non-linearity after the first operation. In Inception, both operations are followed by a ReLU non-linearity, however depthwise separable convolutions are usually implemented without non-linearities.
We argue that the first difference is unimportant, in particular because these operations are meant to be used in a stacked setting. The second difference might matter, and we investigate it in the experimental section (in particular see figure 10).」
(当審訳)
「 TensorFlowやKerasなどのディープラーニングフレームワークで一般的に「分離可能畳み込み」と呼ばれるdepthwise separable畳み込みは、depthwise畳み込み、つまり入力の各チャンネルに対して独立して実行される空間畳み込みと、それに続く点方向畳み込み、つまりdepthwise畳み込みによって出力されたチャンネルを新しいチャンネル空間に投影する1x1畳み込みで構成される。これは、空間的に分離可能な畳み込みと混同されないようにするためのもので、画像処理の世界では一般的に「分離可能な畳み込み」とも呼ばれている。
Inceptionモジュールの "極端な "バージョンと、depthwise separable畳み込みの間には、2つの小さな違いがあります:
・演算の順序:(TensorFlowなどで)通常実装されているdepthwise separable畳み込みは、最初にchannel-wise空間的畳み込みを行い、次に1x1畳み込みを行うが、Inceptionでは1x1畳み込みを最初に行う。
・最初の演算の後の非線形性の有無。Inceptionでは、両方の演算の後にReLU非直線性が続くが、深さ方向に分離可能な畳み込みは通常、非直線性なしで実装される。
私たちは、最初の違いは重要ではないと主張する。特に、これらのオペレーションはスタックされたセッティングで使われることを想定しているからだ。二番目の違いは重要かもしれないので、実験セクションで調査する(特に図10参照)。」
15 引用文献A記載事項
引用文献Aには、次の事項が記載されている。
(1) 「【0050】
…(中略)…
実施の形態3では、処理回路15は、FPGA(Field-Programmable Gate Array)である。 FPGAは、複数の論理ブロックと複数の演算器ブロックと複数のブロックRAM(SRAM,Static Random Access Memory)とで構成され、論理ブロックの構成と各ブロックを接続する配線のルートとを切り替えることで、回路構成を動的に変更することが可能なLSI(Large-Scale Integration)である。」
16 引用文献B記載事項
引用文献Bには、次の事項が記載されている。
(1) 第207ページ左欄第24行~第29行
「… 処理の順序としては,第1層目で入力画像から畳み込み処理によって1枚の第1層目特徴マップn11を得る。次に,第2層目でそれを入力とした畳み込み処理を行うことによって,n11に対応した第2層目特徴マップが得られ,それをFPGA内蔵SRAMであるBRAM(Block RAM)に保持する。…」
17 周知技術について
(1) 甲2、甲3に記載された事項により、以下の事項は、本願の出願日時点における周知技術と認められる(以下、「周知技術1」とする。)。
(周知技術1)
畳み込みニューラルネットワークの畳み込み演算において中間結果がSRAMに格納されること。
(2) 甲4、甲5に記載された事項により、以下の事項は、本願の出願日時点における周知技術と認められる(以下、「周知技術2」とする。)
(周知技術2)
畳み込み演算回路への入力を回路外のDRAMから行うこと。
(3) 甲5、甲9に記載された事項により、以下の事項は、本願の出願日前における周知技術と認められる(以下、「周知技術3」とする。)。
(周知技術3)
畳み込み演算を2のn乗個の乗算器で行うこと。
(4) 甲7、甲9に記載された事項により、以下の事項は、本願の出願日時点における周知技術と認められる(以下、「周知技術4」とする)。
(周知技術4)
depthwise separable 畳み込みにおいて、フィルタサイズを3×3としたdepthwise 畳み込みを行うこと。
(5) 引用文献A、Bに記載された事項により、以下の事項は、本願の出願日時点における周知技術と認められる(以下、「周知技術5」とする)。
(周知技術5)
FPGAのBRAM(ブロックRAM)がSRAMであること。
(6) 甲1、甲12に記載された事項により、以下の事項は、本願の出願日前における周知技術と認められる(以下、「周知文献6」とする)。
(周知技術6)
Depthwise separable畳み込みにおいて、pointwise畳み込みを行った後、depthwise畳み込みを行うこと。
第7 取消理由についての当審の判断
上記第3のとおり本件訂正は認められたところ、上記第4に示した本件発明1~9に係る特許が上記第5で示した取消理由1によって取り消されるべきものであるかについて、以下検討する。
1 取消理由1-1
(1)本件発明1について
ア 対比
本件発明1と甲8発明とを対比する。
(ア)甲8発明の「DNNアクセラレータをマッピングしたFPGA」は、「2つの畳み込み層(層i、層i+1)を計算する2つのパイプラインステージを含む、ニューラルネットワーク層に対応するパイプラインステージを有するパイプライン構造を備え」るとの構成によれば、「ニューラルネットワーク」における「畳み込み層i」と「畳み込み層i+1」とが「パイプライン」の1ステージとして「DNNアクセラレータをマッピングしたFPGA」に配置されているものといえる。 ここで、「畳み込み層i」と「畳み込み層i+1」は、ニューラルネットワーク層における「畳み込み演算」を実行するものであるから、引用発明1における「DNNアクセラレータをマッピングしたFPGA」は、本件発明1における「ニューラルネットワーク回路」に相当するものといえる。
また、「畳み込み層i」と「畳み込み層i+1」は、別々のパイプラインステージに存在するものであるから、「DNNアクセラレータをマッピングしたFPGA」において、「畳み込み層i」と「畳み込み層i+1」とが個別に畳み込み演算を実行することは明らかである。
したがって、甲8発明における「2つの畳み込み層(層i、層i+1)を計算する2つのパイプラインステージを含む、ニューラルネットワーク層に対応するパイプラインステージを有するパイプライン構造」を備えた「DNNアクセラレータをマッピングしたFPGA」と、本件発明1における「畳み込み演算を空間方向への畳み込み演算とチャネル方向への畳み込み演算とに分けて、それらを個別に実行するニューラルネットワーク回路」とは、後述する相違点を除いて、「2つの畳み込み演算を個別に実行するニューラルネットワーク回路」という点で共通する。
(イ)甲8発明の「2つの畳み込み層(層i、層i+1)を計算する2つのパイプラインステージ」における「各パイプラインステージ」は、「計算リソースと、計算リソースの演算結果である特徴マップの一部分を保持するためのBRAMを使用したリシェイプバッファと、学習済み重みを取り込むための重みバッファとを備え」との構成から、「畳み込み層i」「畳み込み層i+1」のパイプラインステージはそれぞれ、畳み込み演算を実行する「計算リソース」と、畳み込み演算の演算結果である特徴マップを保持するための「リシェイプバッファ」である「BRAM」を備えるものといえる。また、上記アの検討も参酌すると、甲8発明の畳み込み演算を実行する「計算リソース」が、畳み込み演算を実行する「回路」であることは、本願の出願日時点における技術常識から明らかである。 したがって、甲8発明における「畳み込み層i」の「計算リソース」と、本件発明1における「チャネル方向への畳み込みを行う1×1畳み込み演算回路」とは、後述する相違点を除いて、「第1の畳み込み演算回路」という点で共通する。
(ウ)甲8発明の「畳み込み層iの計算リソースの演算結果は、畳み込み層i+1のリシェイプバッファに格納され、畳み込み層i+1の計算リソースは、畳み込み層i+1のリシェイプバッファに格納された畳み込み層iの演算結果を用いて演算を行」うとの構成から、「畳み込み層i+1」の「BRAM」は、「畳み込み層i」の「計算リソース」が実行する畳み込み演算の演算結果が格納されるものであり、さらに、「畳み込み層i+1」の「計算リソース」は、「畳み込み層i+1」の「BRAM」に格納された演算結果に対して畳み込み演算を実行するものであるといえる。
したがって、上記(イ)の検討も参酌すると、甲8発明における「畳み込み層i+1」の「BRAM」と、本件発明1の「前記1×1畳み込み演算回路の演算結果が格納されるSRAM」とは、後述する相違点を除いて、「前記第1の畳み込み演算回路の演算結果を格納するRAM」という点で共通する。
そして、甲8発明における「畳み込み層i+1」の「計算リソース」と、本件発明1の「前記SRAMに格納された演算結果に対して空間方向への畳み込みを行うN×N畳み込み演算回路」とは、後述する相違点を除いて、「前記RAMに格納された演算結果に対して畳み込み演算を行う第2の畳み込み演算回路」という点で共通する。
(エ)甲8発明の「DNNアクセラレータをマッピングしたFPGA」について、演算に用いるデータが「FPGA」外部から入力されることは、本願の出願日時点における技術常識から明らかである。そして、甲8発明の「畳み込み層i」の「計算リソース」は、「畳み込み層i+1」の「計算リソース」同様に、「畳み込み層i」の「リシェイプバッファ」を入力として畳み込み演算を実行するものであることも踏まえると、甲8発明の「FPGA」におけるi=1である最初の「畳み込み層i」の「計算リソース」は、「FPGA」の「外部」からの入力を「畳み込み層i」の「リシェイプバッファ」を介して行うものであるといえる。 ここで、本件発明1の「前記1×1畳み込み演算回路の入力はDRAMから行われる」という構成について、当該「DRAM」が「ニューラルネットワーク回路」の“回路内”あるいは“回路外”のいずれに存在するものであるのかが具体的に特定されていないから、当該構成は、「1×1畳み込み演算回路」への「入力」が、ニューラルネットワーク回路の“回路内”の「DRAM」から行われる態様と“回路外”の「DRAM」から行われる態様のいずれも含むものといえる。
また、本件発明1の「前記1×1畳み込み演算回路の入力はDRAMから行われる」という構成は、当該「DRAM」が「1×1畳み込み演算回路」への入力の入力元であることは特定しているものの、「DRAM」から直接「1×1畳み込み演算回路」への入力を行うことまで限定するものではない。 したがって、甲8発明の「FPGA」におけるi=1である最初の「畳み込み層i」の「計算リソース」の入力が「FPGA」の「外部」から「畳み込み層i」の「リシェイプバッファ」を介して行われることと、本件発明1における「前記1×1畳み込み演算回路」の入力が「ニューラルネットワーク回路」の“回路外”の「DRAM」を入力元として行われる態様とを対比すると、両者は、「前記第1の畳み込み演算回路」の入力が「ニューラルネットワーク回路の外部を入力元として行われる」という点で共通する。
イ 一致点、相違点
したがって、本件発明1と甲8発明は、以下の点において一致ないし相違する。
(一致点)
2つの畳み込み演算を個別に実行するニューラルネットワーク回路であって、
畳み込みを行う第1の畳み込み演算回路と、
第1の畳み込み演算回路の演算結果が格納されるRAMと、
RAMに格納された演算結果に対して畳み込みを行う第2の畳み込み演算回路とを備え、
第1の畳み込み演算回路の入力はニューラルネットワーク回路の外部を入力元として行われる
ニューラルネットワーク回路。
(相違点1)
本件発明1の「ニューラルネットワーク回路」は、「畳み込み演算を空間方向への畳み込み演算とチャネル方向への畳み込み演算とに分けて、それらを個別に実行する」ものであるが、甲8発明の「DNNアクセラレータをマッピングしたFPGA」は、「畳み込み演算を空間方向への畳み込み演算とチャネル方向への畳み込み演算とに分けて、それらを個別に実行する」ことについて具体的に特定していない点。
(相違点2)
畳み込みを行う第1の畳み込み演算回路が、本件発明1においては、「チャネル方向への畳み込みを行う1×1畳み込み演算回路」であるのに対し、甲8発明において、「畳み込み層i」の「計算リソース」は、どのような畳み込み演算を行う回路であるのかを具体的に特定していない点。
(相違点3)
演算結果を格納するRAMが、本件発明1においては、「SRAM」であるのに対し、甲8発明においては、「BRAM」である点。
(相違点4)
畳み込みを行う第2の畳み込み演算回路が、本件発明1においては、「空間方向への畳み込みを行うN×N畳み込み演算回路」であるのに対し、甲8発明において、「畳み込み層i+1」の「計算リソース」は、どのような畳み込み演算を行う回路であるのかを具体的に特定していない点。
(相違点5)
第1の畳み込み演算回路への外部からの入力が、本件発明1においては、「DRAM」から行われるのに対し、甲8発明においては、入力元を具体的に特定していない点。
ウ 相違点についての判断
上記相違点についてそれぞれ検討する。
(ア)相違点3について
上記第6の17(5)の周知技術5に示すように、FPGAのBRAM(ブロックRAM)がSRAMであることは、本願の出願日時点における技術常識であるから、甲8発明における「BRAM」が、本件発明1における「SRAM」に相当することは明らかである。
したがって、上記相違点3は実質的に相違点ではない。
(イ)相違点1、相違点2及び相違点4について
上記第6の1(3)及び(5)に示すとおり、甲1には、スタック状に配置された複数の分離可能な畳み込みニューラルネットワーク層の処理をFPGAにより実行するニューラルネットワークシステムにおいて、空間方向への畳み込みであるdepthwise畳み込みと、チャネル方向への畳み込みであるpointwise畳み込みとを別々に適用するようにし、まず、入力に関して1×1畳み込み演算であるpointwise畳み込みを行って、中間の出力を生成し、次いで、中間の出力に関して空間方向の畳み込みであるdepthwise畳み込みを行って、層の出力を生成することが記載されている(以下、「甲1技術事項」とする。)。
なお、甲1技術事項に記載された「depthwise畳み込み」が、空間方向への畳み込みのために、N×N(Nは2以上の自然数)の畳み込み演算を行うことは、本願の出願日時点における技術常識である。
甲8発明と甲1技術事項とは、ニューラルネットワーク回路による畳み込みニューラルネットワークの処理という共通の技術分野に属するものであり、さらに、複数の層から構成された畳み込み演算回路にて畳み込み演算を行うという共通の機能を有するものである。
したがって、甲8発明の「FPGA」において、上記甲1技術事項を参酌することにより、甲8発明の「畳み込み層iの計算リソース」として、「チャネル方向への畳み込みである1×1畳み込み演算」を、また、「畳み込み層i+1の計算リソース」として、「空間方向への畳み込みであるN×N畳み込み演算」をそれぞれ採用して、畳み込み層iの1×1畳み込み演算の演算結果に対して畳み込み層i+1のN×N畳み込み演算を行う構成とすることは、当業者が容易に想到し得たものである。
(ウ)相違点5について
本願の出願日時点の技術常識を参酌すれば、甲8発明において、「FPGA」の外部からの「入力」が、i=1である最初の「畳み込み層i」の「リシェイプバッファ」に入力されるまでの間、バッファ等の慣用技術により保持されていることは明らかである。
そして、上記第6の17(2)の周知技術2に示すように、FPGA外部のDRAMからFPGAに入力を行うことについても、当業者の間でよく知られているものであるから、甲8発明において、「FPGA」の外部から「入力」を行うためのバッファとして、DRAMを採用することについても、当業者が容易に想到し得たものである。
上記相違点を総合的に勘案しても、本件発明1の奏する作用効果は、甲8発明、甲1技術事項、周知技術2及び周知技術5の奏する作用効果から予測される範囲内のものにすぎず、格別顕著なものということはできない。
エ 特許権者の主張について
特許権者は、令和5年11月21日に提出した意見書において、概略、引用文献には、チャネル方向への畳み込みを行う1×1畳み込み演算回路と、空間方向への畳み込みを行うN×N畳み込み演算回路とで、特性が異なるメモリを入力元に配置することは記載も示唆もされていない、と主張している。
しかしながら、既に上記ア及びウで検討したとおり、甲8発明の「畳み込み層i+1」の「計算リソース」は、「畳み込み層i+1」の「BRAM」である「リシェイプバッファ」を入力元にするものであり、また、甲8発明の「畳み込み層i」の「計算リソース」は、本願の出願時における技術常識を参酌すれば、「外部」のバッファ等の慣用技術による保持手段を入力元にするものであるといえるから、甲8には、「計算リソース」ごとに特性が異なり得るメモリを入力元とすることが示唆されているものといえる。
そして、上記ウで検討したとおり、甲8発明において、周知技術を参酌すれば「BRAM」は「SRAM」であり、また、「外部」のバッファを「DRAM」とすることについても当業者であれば適宜なし得る程度の事項であるから、当該主張を採用することはできない。
オ 小括
以上のとおりであるから、本件発明1は、当業者が、甲8に記載された発明に基いて、甲1、4、5、引用文献A、Bに記載された事項を参酌することにより容易に発明をすることができたものである。
(2)本件発明3について
一般に、depthwise畳み込みのフィルタサイズをどのような大きさとするかは、対象とする処理に応じて適宜選択されるものである。
一例として、上記第6の17(4)の周知技術4に示すように、フィルタサイズを3×3としたdepthwise畳み込みについても、当業者の間でよく知られているものである。
以上のとおりであるから、本件発明3は、当業者が、甲8に記載された発明に基いて、甲1、4、5、7、9、引用文献A、Bに記載された事項を参酌することにより容易に発明をすることができたものである。
(3)本件発明4について
甲8発明の「DNNアクセラレータをマッピングしたFPGA」は、「すべてのパイプラインステージで、各層の計算需要と各層で消費される計算リソースのバランスが取れるように、各層の計算リソースが割り当てられている」との構成によれば、各層の「計算リソース」が、各層の計算需要、すなわち必要とされる計算量に基づいて割り当てられるものであるといえる。
したがって、上記(1)ウで検討したように、甲8発明の「FPGA」において、上記甲1技術事項を参酌することにより、甲8発明の「畳み込み層iの計算リソース」として、「チャネル方向への畳み込みである1×1畳み込み演算」を、「畳み込み層i+1の計算リソース」として、「空間方向への畳み込みであるN×N畳み込み演算」をそれぞれ採用した際に、各畳み込み層で必要とされる計算量に基づいて、FPGA上の各畳み込み層の演算器の数を設定する構成とすることは、当業者が容易に想到し得たものである。
以上のとおりであるから、本件発明4は、当業者が、甲8に記載された発明に基いて、甲1、4、5、7、9、引用文献A、Bに記載された事項を参酌することにより容易に発明をすることができたものである。
(4)本件発明6について
一般に、畳み込み演算回路の演算器の数を何個設けるかは、対象とする処理に応じて適宜選択されるものである。
一例として、上記第6の17(3)の周知技術3が示すように、畳み込み演算の演算器の数を2のn乗とすることは、当業者の間でよく知られていることである。
以上のとおりであるから、本件発明6は、当業者が、甲8に記載された発明に基いて、甲1、4、5、7、9、引用文献A、Bに記載された事項を参酌することにより容易に発明をすることができたものである。
(5)本件発明7について
甲8発明の「2つの畳み込み層(層i、層i+1)を計算する2つのパイプラインステージ」における「各パイプラインステージ」は、「計算リソースと、計算リソースの演算結果である特徴マップの一部分を保持するためのBRAMを使用したリシェイプバッファと、学習済み重みを取り込むための重みバッファとを備え」との構成から、「畳み込み層i」「畳み込み層i+1」のパイプラインステージはそれぞれ、畳み込み演算を実行する「計算リソース」と、畳み込み演算の演算結果である特徴マップを保持するための「リシェイプバッファ」である「BRAM」に加えて、学習済み重みを取り込む「重みバッファ」を備えるものといえる。
したがって、甲8発明の「畳み込み層i」の「重みバッファ」は、本件発明7の「第1の重みメモリ」に相当し、甲8発明の「畳み込み層i+1」の「重みバッファ」は、本件発明7の「第2の重みメモリ」に相当する。
また、甲8発明の「畳み込み層i」と「畳み込み層i+1」は、別々のパイプラインステージであるから、両者が並行して動作していることは、本願の出願日時点の技術常識から明らかである。
以上のとおりであるから、本件発明7は、当業者が、甲8に記載された発明に基いて、甲1、4、5、7、9、引用文献A、Bに記載された事項を参酌することにより容易に発明をすることができたものである。
(6)本件発明8、9について
上記(1)で検討したとおりである。
(7)まとめ
以上のとおり、本件発明1は、当業者が、甲8に記載された発明に基いて、甲1、4、5、引用文献A、Bに記載された事項を参酌することにより容易に発明をすることができたものである。
また、本件発明3、4、6~9は、当業者が、甲8に記載された発明に基いて、甲1、4、5、7、9、引用文献A、Bに記載された事項を参酌することにより容易に発明をすることができたものである。
したがって、本件発明1、3、4、6~9に係る特許は、特許法第29条第2項の規定に違反してされたものであり、取り消されるべきものである。
2 取消理由1-2
(1)本件発明1について
ア 対比
本件発明1と甲1発明とを対比する。
(ア)甲1発明の「FPGAにより実行されるニューラルネットワークシステム」は、スタック状に配置された複数の「分離可能な畳み込みニューラルネットワーク層」が「空間方向への畳み込みであるdepthwise畳み込みと、チャネル方向への畳み込みであるpointwise畳み込みとを別々に適用する」との構成から、「分離可能な畳み込みニューラルネットワーク層」において、「空間方向への畳み込みであるdepthwise畳み込み」と、「チャネル方向への畳み込みであるpointwise畳み込み」とを個別に実行していることは明らかである。
また、甲1発明の「FPGA」が「電子回路」であることは、本願の出願日時点における技術常識であるから、「FPGAにより実行されるニューラルネットワークシステム」が、「ニューラルネットワーク」を実現した「電子回路」であることも明らかである。
したがって、甲1発明における「空間方向への畳み込みであるdepthwise畳み込みと、チャネル方向への畳み込みであるpointwise畳み込みとを別々に適用する」ように構成された、複数の「分離可能な畳み込みニューラルネットワーク層」を備えた「FPGAにより実行されるニューラルネットワークシステム」は、本件発明1における「畳み込み演算を空間方向への畳み込み演算とチャネル方向への畳み込み演算とに分けて、それらを個別に実行するニューラルネットワーク回路」に相当する。
(イ)甲1発明の「pointwise畳み込み」は、「チャネル方向への畳み込み」を行うものであり、かつ「1×1畳み込み」である。
そして、上記(ア)で検討したとおり、甲1発明の「FPGAにより実行されるニューラルネットワークシステム」が「ニューラルネットワーク」を実現した「電子回路」であることを参酌すると、甲1発明における「pointwise畳み込み」は、本件発明1における「チャネル方向への畳み込みを行う1×1畳み込み演算回路」に相当するものといえる。
(ウ)甲1発明の「depthwise畳み込み」は、「空間方向への畳み込み」を行うものであり、空間方向への畳み込みのために、N×N(Nは2以上の自然数)畳み込み演算が行われていることは、本願の出願日時点における技術常識である。
そして、上記(ア)で検討したとおり、甲1発明の「FPGAにより実行されるニューラルネットワークシステム」が「ニューラルネットワーク」を実現した「電子回路」であることを参酌すると、甲1発明における「depthwise畳み込み」は、本件発明1における「空間方向への畳み込みを行うN×N畳み込み演算回路」に相当するものといえる。
(エ)甲1発明の「FPGAにより実行されるニューラルネットワークシステム」は、「分離可能な畳み込みニューラルネットワーク層」を有し、「受け取った入力に関して1×1畳み込み演算であるpointwise畳み込みを行って、中間の出力を生成し、次いで、中間の出力に関して空間方向の畳み込みであるdepthwise畳み込みを行って、層の出力を生成」との構成によれば、「pointwise畳み込み」により生成された「中間の出力」が、「depthwise畳み込み」に入力されているものといえる。
ここで、「pointwise畳み込み」により生成された「中間の出力」が、「depthwise畳み込み」に入力されるまでの間、バッファ等の慣用技術により保持されていることは、本願の出願日時点における技術常識から明らかである。
したがって、上記(イ)及び(ウ)の検討も参酌すると、甲1発明における「受け取った入力に関して1×1畳み込み演算であるpointwise畳み込みを行って、中間の出力を生成し、次いで、中間の出力に関して空間方向の畳み込みであるdepthwise畳み込みを行って、層の出力を生成」する「分離可能な畳み込みニューラルネットワーク層」を有する「FPGAにより実行されるニューラルネットワークシステム」と、本件発明1における「チャネル方向への畳み込みを行う1×1畳み込み演算回路と、前記1×1畳み込み演算回路の演算結果が格納されるSRAMと、前記SRAMに格納された演算結果に対して空間方向への畳み込みを行うN×N畳み込み演算回路」とを備える「ニューラルネットワーク回路」とは、「チャネル方向への畳み込みを行う1×1畳み込み演算回路と、前記1×1畳み込み演算回路の演算結果が格納される格納手段と、格納手段に格納された演算結果に対して空間方向への畳み込みを行うN×N畳み込み演算回路」という点で共通する。
(オ)甲1発明の「スタック状に配置された複数の分離可能な畳み込みニューラルネットワーク層により入力画像を処理する、FPGAにより実行されるニューラルネットワークシステムであって、分離可能な畳み込みニューラルネットワーク層は、…(中略)…、まず、受け取った入力に関して1×1畳み込み演算であるpointwise畳み込みを行って」との構成から、甲1発明の「FPGAにより実行されるニューラルネットワークシステム」には、「入力画像」が入力され、その入力に関して「1×1畳み込み演算であるpointwise畳み込み」が行われるものであるといえる。
ここで、「入力画像」が、「1×1畳み込み演算であるpointwise畳み込み」に入力されるまでの間、バッファ等の慣用技術により保持されていることは、本願の出願日時点における技術常識から明らかである。
したがって、甲1発明における「1×1畳み込み演算であるpointwise畳み込み」に「入力画像」が入力されることと、本件発明1における「前記1×1畳み込み演算回路の入力はDRAMから行われる」こととは、「前記1×1畳み込み演算回路の入力は格納手段から行われる」という点で共通する。
イ 一致点、相違点
したがって、本件発明1と甲1発明は、以下の点において一致ないし相違する。
(一致点)
畳み込み演算を空間方向への畳み込み演算とチャネル方向への畳み込み演算とに分けて、それらを個別に実行するニューラルネットワーク回路であって、
チャネル方向への畳み込みを行う1×1畳み込み演算回路と、
1×1畳み込み演算回路の演算結果が格納される格納手段と、
格納手段に格納された演算結果に対して空間方向への畳み込みを行うN×N畳み込み演算回路とを備え、
1×1畳み込み演算回路の入力は格納手段から行われる
ニューラルネットワーク回路。
(相違点1)
1×1畳み込み演算回路の演算結果が格納される格納手段が、本件発明1においては、「SRAM」であるのに対し、甲1発明においては、具体的に特定していない点。
(相違点2)
1×1畳み込み演算回路への入力が、本件発明1においては、「DRAM」から行われるのに対し、甲1発明においては、入力元を具体的に特定していない点。
ウ 相違点についての判断
上記相違点について検討する。
(ア)相違点1について
上記第6の17(1)の周知技術1に示すように、畳み込みニューラルネットワークの畳み込み演算において中間結果がSRAMに格納されることは、当業者において通常行われていることである。
したがって、甲1発明において、周知技術1を参酌して、1×1畳み込み演算回路の演算結果をSRAMに格納する構成とすることは、当業者であれば容易に想到し得たことである。
(イ)相違点2について
上記第6の17(2)の周知技術2に示すように、畳み込み演算回路に回路外のDRAMから入力を行うことは、当業者において通常行われていることである。
したがって、甲1発明において、周知技術2を参酌して、1×1畳み込み演算回路の入力をDRAMから行うように構成することについても、当業者であれば容易に想到し得たものである。
その際、DRAMをニューラルネットワークシステムの内部あるいは外部のいずれに配置するか、また、DRAMから直接1×1畳み込み演算回路に入力画像を入力するように構成するかは、当業者であれば必要に応じて適宜設計し得る程度の事項である。
上記相違点を総合的に勘案しても、本件発明1の奏する作用効果は、甲1発明、周知技術1及び周知技術2の奏する作用効果から予測される範囲内のものにすぎず、格別顕著なものということはできない。
エ 小括
以上のとおりであるから、本件発明1は、当業者が、甲1に記載された発明に基いて、甲2~5に記載された事項を参酌することにより容易に発明をすることができたものである。
(2)本件発明3について
一般に、depthwise畳み込みのフィルタサイズをどのような大きさとするかは、対象とする処理に応じて適宜選択されるものである。
一例として、上記第6の17(4)の周知技術4に示すように、フィルタサイズを3×3としたdepthwise畳み込みについても、当業者の間でよく知られているものである。
以上のとおりであるから、本件発明3は、当業者が、甲1に記載された発明に基いて、甲2~5、7、9に記載された事項を参酌することにより容易に発明をすることができたものである。
(3)本件発明6について
一般に、畳み込み演算回路の演算器の数を何個設けるかは、対象とする処理に応じて適宜選択されるものである。
一例として、上記第6(17)ウの周知技術3に示すように、畳み込み演算の演算器の数を2のn乗とすることは、当業者の間でよく知られていることである。
以上のとおりであるから、本件発明6は、当業者が、甲1に記載された発明に基いて、甲2~5、7、9に記載された事項を参酌することにより容易に発明をすることができたものである。
(4)本件発明8、9について
上記(1)で検討したとおりである。
(5)まとめ
以上のとおり、本件発明1は、当業者が、甲1に記載された発明に基いて、甲2~5に記載された事項を参酌することにより容易に発明をすることができたものである。
また、本件発明3、6、8、9は、当業者が、甲1に記載された発明に基いて、甲2~5、7、9に記載された事項を参酌することにより容易に発明をすることができたものである。
したがって、本件発明1、3、6、8、9に係る特許は、特許法第29条第2項の規定に違反してされたものであり、取り消されるべきものである。
第8 取消理由通知において採用しなかった特許異議申立理由について
1 甲第1号証に記載された発明に基づく進歩性欠如(上記第2の1(1))について
(1) 本件発明2について
ア 対比・判断
甲1発明と、本件発明2とを対比する。
甲1発明は、第7の2(1)イの「相違点1」、「相違点2」に加え、“前記N×N畳み込み演算回路の演算結果が格納されるDRAMを備え、前記1×1畳み込み演算回路は、前記DRAMに格納された演算結果に対してチャネル方向への畳み込みを行う”構成(以下、「相違点6」という。)を有するものとはいえず、少なくともこの点において本件発明2とは相違する。
そして、第6の3~6に記載した甲2~5記載事項を含め、上記相違点6に係る構成が、本件特許出願前に周知技術であったとする証拠もない。
よって、本件発明2は、上記甲2~5記載事項を参酌しても、甲1発明に基づいて当業者が容易になし得たものとはいえない。
イ 小括
したがって、本件発明2は、甲第1号証に記載された発明及び甲第2~5号証に記載された事項に基づいて当業者が容易に発明できたものとはいえない。
(2) 本件発明5について
ア 対比・判断
甲1発明と、本件発明5とを対比する。
甲1発明は、第7の2(1)イの「相違点1」、「相違点2」に加え、“前記1×1畳み込み演算回路における演算器の数は、前記N×N畳み込み演算回路における演算器の数よりも多い”との構成(以下、「相違点7」という。)を有するものとはいえず、少なくともこの点において本件発明5とは相違する。
そして、第6の3~9、13に記載した甲2~8、11記載事項を含め、上記相違点7に係る構成が、本件特許出願前に周知技術であったとする証拠もない。
よって、本件発明5は、上記甲2~8、11記載事項を参酌しても、甲1発明に基づいて当業者が容易になし得たものとはいえない。
イ 小括
したがって、本件発明5は、甲第1号証に記載された発明及び甲第2~8、11号証に記載された事項に基づいて当業者が容易に発明できたものとはいえない。
2 甲第9号証に記載された発明に基づく新規性欠如及び進歩性欠如(上記第2の1(2)及び(3))について
(1) 本件発明1~3、5~8、11、12について
ア 対比・判断
甲9発明と、本件発明1とを対比する。
甲9発明は、少なくとも、“SRAMに格納された1×1畳み込み演算回路の演算結果に対して空間方向への畳み込みを行う”との構成(以下、「相違点8」という。)を有するものとはいえず、少なくともこの点において本件発明1とは相違する。また、この相違は、形式的なものではなく、実質的なものである。
よって、本件発明1及び請求項1を引用する本件発明3、6は、甲9発明に対して新規性を有する。
また、第6の11によれば、甲9発明は、pointwise畳み込み演算が、所定の数p個の点のdepthwise畳み込み結果が計算された直後にのみ実行されるという構成により、depthwise畳み込み演算の中間出力結果に必要な前記オンチップSRAM上の記憶領域が低減されるという顕著な作用効果が得られるものである。
上記第6の17(6)の周知技術6に示すように、depthwise separable畳み込みにおいて、pointwise畳み込みを行った後、depthwise畳み込みを行うことが周知技術であったとしても、甲9発明の構成とその作用効果に鑑みれば、甲9発明において、周知技術6を採用することには、阻害要因があるといわざるを得ない。
加えて、pointwize畳み込みの後にdepthwise畳み込みを行った場合に、必要なオンチップSRAMの記憶領域が低減されることが、本件特許出願時における技術常識とも認められない。
よって、本件発明1及び請求項1を引用する本件発明2、3、5~8は、上記甲1、12記載事項の他、上記甲3、6記載事項を参酌しても、甲9発明に基づいて当業者が容易に発明できたものとはいえない。
イ 小括
したがって、本件発明1、3、6は、甲9発明に対して新規性を有する。
そして、本件発明1~3、5~8は、甲第9号証に記載された発明及び甲3、6~8、11、12号証に記載された事項に基づいて当業者が容易に発明できたものとはいえない。
3 甲第8号証に記載された発明に基づく進歩性欠如(上記第2の1(4))について
(1) 本件発明2について
ア 対比・判断
甲8発明と、本件発明2とを対比する。
甲8発明は、第7の1(1)イの「相違点1~5」に加え、上記第8の1(1)イの「相違点6」に係る構成を有するものとはいえず、少なくともこの点において本件発明2とは相違する。
そして、第6の1、2、4、7、12、13に記載した甲1、3、6、10、11記載事項を含め、上記相違点6に係る構成が、本件特許出願前に周知技術であったとする証拠もない。
よって、本件発明2は、上記甲1、3、6、10、11記載事項を参酌しても、甲8発明に基づいて当業者が容易になし得たものとはいえない。
イ 小括
したがって、本件発明2は、甲第8号証に記載された発明及び甲第3、6、12号証に記載された事項に基づいて当業者が容易に発明できたものとはいえない。
(2) 本件発明5について
ア 対比・判断
甲8発明と、本件発明5とを対比する。
甲8発明は、第7の1(1)イの「相違点1~5」に加え、上記第8の1(2)イの「相違点7」に係る構成を有するものとはいえず、少なくともこの点において本件発明5とは相違する。
そして、第6の1、2、4、7、8、12、13に記載した甲1、3、6、7、10、11記載事項を含め、上記相違点7に係る構成が、本件特許出願前に周知技術であったとする証拠もない。
よって、本件発明5は、上記甲1、3、6、7、10、11記載事項を参酌しても、甲8発明に基づいて当業者が容易になし得たものとはいえない。
イ 小括
したがって、本件発明5は、甲第8号証に記載された発明及び甲第1、3、6、7、10、11号証に記載された事項に基づいて当業者が容易に発明できたものとはいえない。
第9 むすび
以上のとおり、本件特許に対する訂正は適法であるから、これを認める。
そして、本件発明1、3、4、6~9に係る特許は、特許法第29条第2項の規定に違反してされたものであるから、特許法第113条第2号に該当し、取り消されるべきものである。
よって、結論のとおり決定する。
審決本文(J-PlatPat)
J-PlatPatの審決検索トップを開きます。番号入力で「審判番号」を選び、下の番号を貼り付けて検索してください。
J-PlatPat 審決検索を開く
2023-700561