ハッカソンの助けを借りて数学者やMLスペシャリストと対峙する方法、そして誰が勝つか

前書き



この記事では、Rosneftの子会社であるSamaraneftekhimproektとKazan Federal Universityとともに、2020年9月に3つの都市のハッカソンを開催し、地平線を反映する地震相関の古典的な問題を解決するよう学生を招待した方法について説明します。これらは、世界中の地震専門家が日常的に直面している課題です。参加者には、ひどい言葉で生徒を怖がらせないように、「最適な道を見つける問題」として提示することにしました。この記事では、問題について詳しく説明し、参加者の興味深い解決策を分析します。これは、応用数学モデリングと機械学習およびデータアナリストの両方にとってエキサイティングなものになるでしょう。



組織的な部分



vc.ruの記事で、3つの都市でオンラインハッカソンを開催することの興味深い詳細を説明しました-オイルとハッカソン。マラソンはただ走るだけではありません

オンライン形式の場合、Discordサービスを選択し、ハッカソンルールへのリンク(Boostersサイトのリンク)を残すことだけを説明します



問題の定式化



地震探査では、「地震反射地平線」という概念があります。これは、特定の地質境界に対応する、ダイナミクスと伝搬領域で安定した反射波です。現場の地震データを正しく処理し、地震の地平線を認識して(地震探査の専門家は「解釈する」と言います)、5〜10メートルの精度でそれらの発生の深さを決定することが可能です。深さを決定したら、地質学者と一緒に、これらの地平線を地質年代学的スケール(地質年代学的スケール-Wikipediaに結び付け、それらのより小さな対応物を認識することが可能です。そして、オイルトラップがどの範囲にあるか、フィールドの構造モデルのレリーフがどのように見えるかなどを決定します。



画像



地震キューブの垂直セクションと認識された地震反射地平線



実際には、地平線は、地震キューブの地震セクション上でレイヤーごとに区別されます-手動で、多数の参照点の配列(地震の専門家は言う-「ダイビング」)を使用し、自動および半自動の検索手順を使用します..。もちろん、ソフトウェアを使用して地震の地平線を解釈する問題に対する高品質のソリューションは大きな需要があり、地震探査の専門家が費やす時間を大幅に削減することができます。



同時に、ソースの研究(ローカルスロープとマルチグリッド相関を持つ最小二乗地平線、波形埋め込み:監視されていない深層学習による自動地平線ピッキング)は、開発されたアルゴリズムとソリューションが少数の数学的アプローチに基づいていることを示しているため、科学的研究によってまだ曇っていない意識を持つ学生を引き付け、複雑な表面で最適なパスを見つける問題の形でこの問題を提供することにしました。

その結果、問題は次のように定式化されました。与えられた点を通過し、経路の長さとその角度(勾配)に応じて特定の関数の最小条件を満たす複雑な表面上に運動経路を構築します



画像

地平線を構築するための元の地震セクションの一部の例。緑の線は事前にわかっている部分、赤の線は目的の部分です。



コンテストの参加者は、データセットの隠された部分で最適な軌道に沿って旅を続けることができる解決策を12時間以内に見つける必要がありました。ソリューションの検証は20回試行され、最小のメトリック値を持つ参加者が勝ちました。



詳細なデータの説明
, :

  1. . , [x,y] z(x,y) .

  2. (x,y) L1 L2. x, hor_1, …, hor_4

  3. L2 4 (1, 2, 3, 4), L1 – 3 (1, 3, 4). 2- L1 (40%). 60% .



image

, – 2 .



-, hor_2 L1. L2 L1. . , , .



競争を通して、順位はテストデータの公開部分のメトリック値に基づいて構築されました。競技終了後、プライベート部分でメトリック値が再計算され、順位が更新されました。これは、持続可能なソリューションを取得するために重要です。つまり、公開データに合わせて調整するだけでなく、プライベートデータで同等の結果を表示することもできます。これは無駄に行われなかったことが判明し、最終的な品質評価の後、順位が変わりました。

得られた結果を定量化するために、次のメトリックが使用されました。

F(y^,z^)=i=0N(y^ipredy^ietalon)+(z^(i,yipred)z^(i,yietalon))2



ここで、

Nは必要な地平線の寸法です。

yipred -アルゴリズムを使用して取得された地平線の座標、 i0,N¯;

yietalon -参照範囲の座標。

z^(i,yi) -座標i、yiのポイントでのサーフェスマップの値;

y^i=yiheight、ここで、heightはサーフェスマップのy座標の可能な最大値です。

z^(i,yi)=z(i,yi)max(z)ここで、max(z)はサーフェスマップの最大値です。



Pythonでのメトリックの実装
def score(true, submission, all_data):
   #true – pandas.Dataframe    ;
   #submission - pandas.Dataframe   , 
   #;
   #all_data - numpy.ndarray    
   all_data = all_data.astype('float64')
   #    
   max_z = abs(all_data).max()
   #   
   y_pred = submission.loc[idx.index.values].y.values.astype('int')
   #  
   y_true = true.y.astype(int)
   #     
   z_pred = all_data[true.index.values.astype(int), y_pred.astype(int)]
   #     
   z_true = all_data[true.index.values, y_true]
   #   
   y_err = ((y_pred - y_true)/3000)** 2
   z_err = ((z_pred - z_true)/max_z) ** 2
   #     
   total_err = np.sqrt(np.sum(y_err + z_err))
   return total_err




チームが使用した方法



問題は当初、直接および逆(それぞれ古典的な数学的方法と機械学習方法)のいくつかの方法で解決できるように選択されました。機械学習



の観点から、問題は2つの方法で解決できます。1) 既知のポイントのペアを使用した回帰の構築





xi,yi)、マッピングを作成できます f:ϕ(xi)yi 損失関数Lを最小化することによって。 ϕ(xi)--i番目のポイントの説明。



例えば、ϕ:xixi または ϕ:xi(xi,xi2,xix)



損失関数は、問題ステートメントからの初期エラー関数、またはより単純な関数、たとえば、構築されたパスと元のパスの標準偏差のいずれかです。

1Ni=0N(yiy^i)2





多くの一般的な機械学習方法を使用 して、マッピングfを構築できます。多項式回帰から始まり、ランダムフォレストをトラバースし、深いニューラルネットワークを構築します。



いくつかのチームは、ϕ畳み込みまたは完全に接続されたニューラルネットワーク、およびf-ニューラルネットワークまたはガウスプロセスとして。



2)セマンティックセグメンテーションセマンティックセグメンテーション



画像

の例



元の問題は、コンピュータービジョンの問題として解決できます。ポイント(x、y)は画像のピクセルと見なされます。ここで、画像全体がデータセット全体であり、ピクセル(x、y)の「明るさ」がz(x、y)値です。パスを作成するには、クラスの1つを各ピクセル(0または1)に割り当てる必要があります。パスの下にある、またはパスを含む画像の部分はクラス0に属し、残りはクラス1に割り当てます。このような問題の一般的な解決策は、完全に畳み込みのニューラルネットワークU-Netです。元の画像の一部(パッチ)を受け取り、対応するピクセルのクラスを示す、0と1で構成される同じサイズの配列を出力する入力。



深い学習手法に加えて、画像のセグメンテーションに従来のコンピュータビジョンやフラッドフィルなどの画像処理手法を使用することもできます。これは参加者の1人によって行われ、それによって最短パスを見つけるためのアルゴリズムをさらに適用するために画像を前処理しました。



古典的な数学的方法の観点から、提案された問題は古典的な最適化問題であり、以下の方法のグループによってそれを解決する試みを観察しました。



  1. , ;



    . y , y, .
  2. , ;



    yi .
  3. , .



    , .




まず、参加者の決定を分析しましょう。



機械学習方法:

解決策の1つは、実数(パスの値)を生成する自動回帰畳み込みニューラルネットワークでした。y^ii番目のステップ。元の画像の32x32ピクセルパッチがニューラルネットワークの入力に供給されました。機能としてϕ特徴の抽出には、事前にトレーニングされた畳み込みニューラルネットワークResNet34が使用されました。このニューラルネットワークによって取得された特徴表現は、前の32ステップからのこのパスの値と組み合わされました。さらに32ステップを予測するために、以前のニューラルネットワーク予測が以前のホライズン値として使用されました。ニューラルネットワークは、アダムの確率的勾配降下を修正することによってトレーニングされ、トレーニング中にオプティマイザーステップが指数関数的に減少しました。トレーニングでは、平均絶対偏差が最小化されました(標準偏差を使用した実験では、より悪い結果が得られました)。オーバーフィットを回避するために、ドロップアウト、つまりニューロンの一部のランダムなゼロ調整が使用されました。ニューラルネットワークのトレーニングには約10分、データセット全体で20回のフルパス、720回のオプティマイザーステップが必要でした。



画像

畳み込みニューラルネットワークを使用して得られたソリューション。赤い線は実際のパスで、青い線は参加者が受け取ったパスです。



ニューラルネットワークの予測には、AMD Threadripper 2950xCPUとNvidiaGTX 1080 TiGPUで約1分かかります。



ニューラルネットワーク(メトリック)の結果は、公の立場で5.71です。畳み込み神経網を再発神経網に置き換える実験も行われたが、その結果はさらに悪かった。その結果、計算数学の古典的な方法が最終的な解決策として使用されました。



完成したソリューションに加えて、参加者はアイデアを共有しましたが、競争の時間枠が厳しく、アイデアの計算が複雑であったため、実装できませんでした。彼らの中にはニューラルネットワークを適用しようとした人もいましたが、ほとんどの時間を費やした後、よりシンプルで効率的なアルゴリズムに切り替えたり、ブルートフォースやルールに切り替えたりして、最終的に最高の結果をもたらし、賞品につながりました。



また、多くの興味深いソリューションは、他の分野からの知識に基づいています。たとえば、古典的なコンピュータービジョンと画像処理、グラフ理論、時系列分析などです。チームの1つは、聞いたことがあるかもしれない強化学習の観点から問題を提起し、解決策を考え出しましたが、残念ながらそれを実装する時間がありませんでした。



古典的な数学的方法:



画像

ローカル極値法によって得られたソリューションの1つ。赤い線は実際のパスで、青い線は参加者が受け取ったパスです。



この方法では、極大値が極値として使用されました。参加者が作成したパスは青でマークされ、目的の地平線は赤でマークされています。詳細な説明を以下に示します。



yi+1=min|jyi|,i0,N1¯,jΩ,

Ω={m|z(i,m)>z(i,m1)z(i,m)>z(i,m+1),mm1,m2¯}

m1=max(1,yisizey)

m2=min(height1,yi+sizey

どこ:

height -サーフェスマップのy座標の可能な最大値。

sizey-検索ウィンドウのサイズ。



このメソッドはPythonで実装されています。動作時間は約0.103秒、F(y、z) = 1.57、sizey= 100。



結論:この方法は実装が簡単で、実行時間は0.1秒を超えません。



画像

グローバル極限によって得られたソリューションの1つ。赤い線は実際のパスで、青い線は参加者が受け取ったパスです。



次のグループに移りましょう。以前と同様に、この方法では、最大値が極値として使用されました。



yi=argmax(1sizexj=0sizex1z(i+j,m))),i0,N¯,mm1,m2¯

m1=max(1,yisizey)

m2=min(height1,yi+sizey)

ここで、

heightは、サーフェスマップのy座標の可能な最大値です。

sizex,sizey-検索ウィンドウのサイズ。



このメソッドはPythonで実装されています。動作時間は約0.19秒、F(y、z)= 1.97、sizex= 9、 sizey= 21.



結論:この方法は実装が簡単で、実行時間は0.2秒を超えません。



画像

ヒューリスティックソリューションの1つ。赤い線は実際のパスで、青い線は参加者が受け取ったパスです。



メソッドの最後のグループを見てみましょう。前述のように、次の座標yi+1指定された検索ウィンドウ内の最小限の機能によって検索されます。



以下は、チームによって提案された機能の1つです。数学的な観点からは、次のようになります。

yi+1=min((z(i,j)z(i,yi))2max2(z)+α(jyi)2height2),i0,N1¯,jΩ,

Ω={m|z(i,m)>z(i,m1)z(i,m)>z(i,m+1),mm1,m2¯}

m1=max(1,yisizey)

m2=min(height1,yi+sizey)

どこ:

height -サーフェスマップのy座標の可能な最大値。

α-汎関数の値に対するyの誤差の影響の原因となる係数。

sizey -検索ウィンドウのサイズ。

max(z)サーフェスマップの最高値です。

このメソッドはPythonで実装されました。動作時間は約0.12秒、F(y、z) = 1.58、sizey= 50、 α= 15000.7。



結論:メソッドの実行時間は0.15秒を超えません。



3つのグループすべての方法は、特定のデータセットでかなり類似した結果を示しました。最小のメトリック値(1.57)は、特定の検索ウィンドウ内の表面値の局所的な極値の検索に基づく方法によって達成されました。



最後の部分



残念ながら、ハッカソンの終わりまでに、ほとんどすべてのイノベーターはダークサイドに切り替え、再訓練して保守的になりました。つまり、古典的なアルゴリズムを使用してソリューションを送信し始めました...そして保守派が勝ちました。



私たちは、計算数学と機械学習という2つの分野からの貢献者を集めたかったのです。性質が不明な構造化されていないデータを扱うことに慣れている人もいれば、物理的なプロセスを研究し、それに基づいて数学モデルを構築することに慣れている人もいます。アイデアとソリューションの多様性を高めるために、データの取得方法について簡単に説明しました。これが、単純な数値手法に基づくソリューションが最良の結果をもたらした理由の1つです。 2つ目の理由は、学生ハッカソンでは、少量の「複雑な」データをあまり準備しなかったため、現代の面倒な機械学習方法は、より単純な代替手段に負けてしまうことでした。



これは、参加者が問題を正しく設定し、問題を解決するための最良の方法を選択するのに役立つ優れたレッスンであると信じています。最初に、単純なソリューション、いわゆるベースラインを試す必要があることを覚えておくことが重要です。おそらく、それによって短時間で目標を達成できるようになります。



ハッカソンの参加者は、地質学と地震学の分野における企業ソフトウェアの開発の一環として現在解決されている自動地震運動学的解釈の問題に関連して、ビッグデータセット内の最適なパスを見つけるための独自のアルゴリズムを提案しました。アルゴリズムの最も競争力のある実装は、これらのソフトウェアシステムのソフトウェアモジュールの開発と実装に適用されます。



11月28日にオンラインで開催されるITコンペティションマラソンの決勝戦でお会いできてうれしく思います。プログラムには、コンテストの勝者への報酬、プロッパントの品質を明示的に評価するためのモバイルアプリケーションの最初のバージョンの提示が含まれます。また、イベントの枠組みの中で、「データ管理とDSプロジェクト」と「コンピュータービジョン」というトピックについてパネルディスカッションが開催されます。データサイエンスアルファの責任者、CDO Megafon、Huawei、CV X5の責任者などの代表者が興味深い事例を共有します。すべての楽しみをお見逃しなく(ITコンペティションマラソン2020-Rosneft)。



All Articles