Sansan Tech Blog

Sansanのものづくりを支えるメンバーの技術やデザイン、プロダクトマネジメントの情報を発信

Hands-on guidance to DGL library _ (1) Introduction and Message Passing

f:id:s_yuka:20200520111027p:plain Hi, I am XING LI, a researcher from Sansan DSOC.

Graph is a more general data form to describe our world. Sansan DSOC is creatively exploiting graph data to mining new value for benefitting customers. To coin a phrase, sharp tools make good work. Deep Graph Library(DGL) is just the sharp tool you need to explore deep graph learning. I am planning to post a series hands-on guidance to DGL library together with graph learning topics as examples. This is the first blog of this series, starting with a brief introduction and one core feature of DGL.

Introduction

In the last few years, many challenging tasks in machine learning field have been extraordinary successfully solved or almost solved by deep learning. These tasks are mainly located in CV(computer vision) or NLP(nature language processing) areas. They share one common feature that most of them are described as euclidean data, the image data usually has a structure of two-dimensional coordinate, sometimes with more layers information and the human language could contain a time series information. While in our real world, non-euclidean data is a more general form of data structure than euclidean data or the tensors. Learning from this more general structured data, more specifically, the graph data, is naturally and widely regarded as an important task.

Recently, Graph Neural Networks(GNNs) family emerges from a tons of models as a versatile fundamental model structure to tackle graph data across several subjects. Such as chemical molecules, social networks, bioinformatics, knowledge graphs and recommendation systems.

An obvious trend in deep learning area is the higher integration of deep learning framework. From Theano, Caffe to current mainstreams Tensorflow, PyTorch. These frameworks provide us an off-the-shelf tool to conveniently and quickly deploy neural networks but also keep the necessary model flexibility for customising specific architectures. In the area of graph neural networks, there are also several frameworks. The two most popular frameworks are Deep Graph Library(DGL) and PyTorch Geometric(PyG).

Name Github Stars Support Team Supported Framework
DGL 4.7K Amazon Web Services PyTorch, TensorFlow and Maxnet
PyG 7.5K TU Dortmund University PyTorch

(All information in this table is retrieved at 12/MAY/2020, DGL 0.4, PyG Latest).

In addition to the above table, DGL could train at most 0.5 billion nodes and 25 billion edges in one single machine with appropriate memory while PyG does not reveal such information. PyG has slightly faster training speed in small graph but DGL is faster when graph is getting larger. Both of them implement most mainstream graph neural network models, but DGL supports more tools and features, such as more optional sampling methods, Heterogeneous Graphs, Knowledge graph and etc..

Here, we only use DGL as the example to explore deep graph learning, but PyG is also a popular framework and worthy of attention. The following contents may involve some concepts of Graph Convolutional Networks and assume other basic understandings of graph learning.

DGL works with the following operating systems:

  • Ubuntu 16.04
  • macOS X
  • Windows 10

Python 3.5 or later version is required to run DGL. More information of installing DGL could be found here.

DGL contains many sophisticated features, such as Message Passing API, Nodeflow Data Structure, Sampling Methods, Heterogeneous Graphs, Scale to Giant Graphs, Knowledge Graph and etc.. They play different roles when facing different requirements and still keep updating continuously. However, some features are fundamental to understand the overall framework and understanding these cornerstones will make it easier to master other features. We will discuss one main feature in this blog: Message Passing.

続きを読む

JavaMailでHTMLメールとTEXTメールを同時送信する方法と注意

新規事業開発室 新卒1年目の山邊です。 Sansan の新規事業で2020年5月11日にリリースされた「あらゆる請求書をオンラインで受け取る。」ことの出来るサービスBill Oneを開発しています。
その過程でメールを送信する際にHTML形式とTEXT形式をまとめて一つのメールで送信する方法を学びました。 実際のコードと共に注意点を踏まえてまとめたいと思います。

HTML + TEXTメールを配信する理由

メールはテキスト形式に代わり、表現力豊かなHTML形式が一般的になってきています。一方でメーラーや受信者の環境によって、HTML形式を表示しない場合があります。
1通のメールの中で両方の形式があれば受信者側が好きな方を選んで閲覧する事ができます。その為、HTML形式で書かれているHTMLパートとTEXT形式で書かれているTEXTパートを両方含むメールを送信する方がより良いでしょう。

続きを読む

【Geek Seek Toolsで買われた、気になるモノ達】第12回「Niz Plum 84(静電容量無接点スイッチ キーボード)」

f:id:hartmann3555:20200511124224j:plain

はじめに

こんにちは。DSOC Data Direction Group でデータエンジニアをしている千葉祐大です。

前回の記事で心配していたコロナ禍で危ぶまれたネット回線の開通工事は、今月中に実施できると業者から連絡を受けたので安心している最近です。

さて、この連載は弊社の社内制度である Geek Seek Tools *1で購入されたガジェットの中から、僕がイケてると感じたものを気の赴くままに紹介していく連載となっています。

今回は在宅勤務前に買い揃えた、静電容量無接点キーボードである Niz Plum 84 をご紹介します。

*1:生産性向上に資するガジェット・デバイスその他が購入しやすくなる制度。Geek Seek Tools の詳しい説明については第1回をご覧ください。

続きを読む

歴史をたどってディープラーニングを学ぶ第六回 M対Nのコンボリューションでカラー画像を扱う

こんにちは、ニューラルネット老人こと糟谷勇児です。

今回は色について考えていきます。

色を扱うのは難しい

画像認識といえば色の活用が重要そうですが、実際は一筋縄ではいきません。
私が新入社員だったころのことです。
中国人の先輩が画像検索エンジンを作っていました。その際、色は使用せず、輝度の変化のみを使用していました。
私は「色は使わないんですか」と尋ねたところ、「Color is artificial」という答えが返ってきました。
なるほど、色の見え方は人間とそれ以外の動物では全然違うといわれています。
もちろん人間同士でも、人種や性別、色覚特性などによって色の見え方はかなり変わってきます。
色というものは人間の感性に大きく依存するもので、独立した物理現象としてみるのは難しいのかもしれません。

前職の別の案件で、顔検出を行う際に肌色領域に絞ることで高速化できないのかという検討が行われたことがありました。
ただそれも結構難しかったようです。肌色といっても人種ごとに異なるし、環境光に強く影響を受けます。
例えば、水族館で青い光に照らされた肌色は青くなります。
環境光の影響を取り除くような画像処理も考えられますが、高速化という観点ではより時間がかかってしまいます。

色空間

画像の色を扱うとなると、色空間の選定は重要です。
というのもRGBという光の三原色であらわされた色空間は人間の感じる色同士の距離と合っていないからです。
ペイントの画面で作った例を出します。

f:id:kasuya_ug:20200504131757p:plain
RGB色空間

上は灰色同士です。左の色と右の色の間のRGB色空間上のユークリッド距離は86、下は黄色と緑色の比較ですが、ユークリッド距離で80です。
同じ80の距離でも灰色同士だと似たような色に見え、緑と黄だと全然違うように見えないでしょうか。
色の話になると、人間は明るさはあまり重視せず、色合いや鮮やかさを重視する傾向があります。

そこで、人間の知覚に近い色空間がいろいろ提案されています。
私はLab色空間が好きでよく使っていました。
Lは輝度、a,bは色の成分です。


さて話をニューラルネットに戻します。
色空間のどれを使うかというあたりで技術者の個性も出る感じだったのですが、ディープラーニングではRGBをそのまま使うのが主流と聞きちょっと驚きました。
今回はそのあたりも含めてみていきましょう。

続きを読む

【Techの道も一歩から】第28回「深層学習による物体検出で遊んでみる」

f:id:kanjirz50:20190104142720j:plain

こんにちは。DSOC 研究開発部の高橋寛治です。 新型コロナウイルス感染症対策では、外出自粛を徹底することが大事とされており、自宅でできる遊びを日々模索中です。

さて、今回は自宅のノートパソコンや物を使って、深層学習による物体検出で遊びます。 物体検出はなんとなく知っていただけなのですが、実際動かしてみると楽しいものです。

今回作るもの

リアルタイムでの任意の物体検出を作ります。 今回、検出したいものはゲームのコントローラー類です。

似たようなものばかり買って何になるのかと、家族に言われるかもしれません。 でも、物体検出器は似たようなものと文句を言わず、きっと種別を分けて認識してくれるはずです。

今回、リアルタイムの物体検出には、YOLO(You only look once)を用います。 YOLOはリアルタイム物体検出で最先端なモデルと言われており、扱いやすいツールキットを提供しています。

公式マニュアルの次の箇所を見れば進められるはずです。

続きを読む

▲The Prism of Creativity ▽ vol.8 商品パッケージをつくるシステム [機械学習編]

f:id:s_yuka:20200430105229j:plain

こんにちは、Sansan DSOC 研究員の西田です。
最近は、外に出れずせっかく購入した春夏物が着れないので、かわりに在宅勤務時には香水をつけて気分を高めています。
次のパリコレは無事に開催されることを祈っています。

さて、前回の記事では、Computational Creativityについて解説し、人間がAIを活用しながら、イラストを描くタスクにおいて、いかにクリエイティビティを高めていくのかという実験を紹介しました。前回の結果では、コンセプトの変化を促すようなサジェストを行うと、思いつかなかったデザインにヒントをもらい、ユーザー自身が考えるものと異なるデザインを描くようになり、クリエイティビティが高まるということがわかりました。

前回の実験は、やや実務とは差のあるタスクだったと思われます。そこで、今回はより実務に近いタスクを題材としたCo-Creative Systemの研究をご紹介したいと思います。

続きを読む

ECSのDAEMONをDRAININGで直ぐに停止しないようにした

DSOCインフラチームの藤田です。コロナの影響で大好きなバスケットボールができずに悶々とした日々を送っていましたが、最近Netflixで配信されたマイケル・ジョーダンのドキュメンタリーを視聴して、更に悶々としています。マイケル・ジョーダンについて名前は知ってるけど詳しく知らないという人にもおすすめな内容になっています。なぜなら僕もその一人なのです。

ここ数ヶ月はあるシステムのコンテナ化をメイン業務として進めていました。移行先のマネージドプラットフォームとしてECS on EC2を採用し、主にECSクラスターや監視・ログ収集の設計・構築に取り組んでいます。その中でぶつかった問題、その解決のために作成したツールについて紹介したいと思います。

続きを読む

© Sansan, Inc.