<label id="jgr5k"></label>
    <legend id="jgr5k"><track id="jgr5k"></track></legend>

    <sub id="jgr5k"></sub>
  1. <u id="jgr5k"></u>
      久草国产视频,91资源总站,在线免费看AV,丁香婷婷社区,久久精品99久久久久久久久,色天使av,无码探花,香蕉av在线
      您正在使用IE低版瀏覽器,為了您的雷峰網賬號安全和更好的產品體驗,強烈建議使用更快更安全的瀏覽器
      此為臨時鏈接,僅用于文章預覽,將在時失效
      人工智能開發者 正文
      發私信給不靈叔
      發送

      0

      基于結構化SVM進行序列標注

      本文作者: 不靈叔 2018-02-06 09:56
      導語:實戰!

      雷鋒網 AI 研習社按:本文為 seaboat 為雷鋒網 AI 研習社撰寫的獨家稿件,未經雷鋒網許可不得轉載。

      關于SVM

      SVM 即支持向量機,常用于二分類模型。它主要的思想是:

      • 它是特征空間上間隔最大的線性分類器。

      • 對于線性不可分的情況,通過非線性映射算法將低維空間的線性不可分的樣本映射到高維特征空間,高維特征空間能夠進行線性分析。

      什么是結構化

      其實機器學習中,如果按照輸出空間不同可以分為:

      • 二元分類(binary classification)

      • 多元分類(multiclass classification)

      • 回歸問題(regression)

      • 結構化預測(structured prediction)

      其中前面三類都是我們常見且經常用的,第四種結構化預測重點體現在結構化上,前面三類的輸出都是標簽類別或者回歸值之類的單變量,而結構化預測輸出是一種結構化的數據結構,比如輸入一句話,輸出是一顆語法樹。此外,結構還可以是圖結構、序列結構等。

      基于結構化SVM進行序列標注

      結構化SVM

      把前面的SVM與結構化結合起來就是結構化SVM了。它為了處理更加復雜的彼此之間互相存在依賴關系的結構數據,對傳統SVM進行了改進,可以說結構化SVM是在傳統SVM的基礎上擴展出來的。結構化SVM使用時主要涉及學習和推理兩個過程,與大多數機器學習算法一樣,學習其實就是確定模型的參數的過程,而推理就是根據學習到的模型對給定的輸入進行預測的過程。

      假設給定了訓練集基于結構化SVM進行序列標注,其中X和Y是兩個集合,結構化SVM就是通過這些樣本來訓練一個輸入輸出對的函數基于結構化SVM進行序列標注。預測時,對于給定的輸入X,在所有X∈Y中取得最大值的Y即為預測項。

      學習過程

      學習結構化數據就是要找到上述的一個判別函數,使之在判別函數確定后,對給定的輸入X,能選擇最大化函數f值的Y作為輸出。假定函數f的形式為,

      基于結構化SVM進行序列標注

      其中判別函數基于結構化SVM進行序列標注,W是參數向量,而Ψ(X,Y)可以看成是輸入輸出對的特征表示,代表將輸入輸出對合并起來的特征向量,它的形式取決于具體問題。 一般會假設F(X,Y;W)是(X,Y)和參數向量W的線性函數,即基于結構化SVM進行序列標注

      接著還得再定義一個損失函數Δ:Y×Y→R,它應該滿足Y=Y'時Δ(Y,Y')=0,當Y≠Y',時Δ(Y,Y')>0。那么有經驗風險函數,

      基于結構化SVM進行序列標注

      所以我們的目標是要找到一個基于結構化SVM進行序列標注使得經驗風險函數最小,而它可能存在經驗風險為0的情況,此時,滿足如下條件

      基于結構化SVM進行序列標注

      其中,基于結構化SVM進行序列標注。根據間隔最大化來求解,固定ww的長度,求能使得間隔最大的W。兩個超平面的距離為基于結構化SVM進行序列標注,最大化基于結構化SVM進行序列標注其實就等價于最小化基于結構化SVM進行序列標注,這時已經可以轉成SVM中優化問題的形式了,

      基于結構化SVM進行序列標注

      但實際情況中經驗風險為0可能會導致過擬合現象,這時要考慮容忍訓練集中某些樣本錯誤分類,從而引入松弛變量,于是優化問題變為:

      基于結構化SVM進行序列標注

      約束條件引入損失函數的影響,得

      基于結構化SVM進行序列標注

      那么現在不管是經驗風險為0還是不為0,剩下要做的事就是求解上述優化問題,即根據上述各個式子中的約束條件解得最優值W。怎么求解還是個難題,如果樣本數較少且Y狀態數較少,能用傳統的二次優化求解。

      而實際情況中樣本數和狀態數都較多,于是產生的約束條件規模非常大,總數量為 n*(|Y|-1),其中n為樣本數,|Y|為y可能的狀態數。所以在求解過程中需要先將上述優化問題轉換成對偶形式,采用割平面訓練法,具體優化過程不考慮所有約束條件,從無約束問題出發,逐步選擇約束直到精度滿足期望后停止。

      IOB標記

      常用的標注策略有IOB標記,即塊的第一個符號處標注為B,塊內部的符號標注為I,塊外的符號標注O。其中B為Begin,表示開始;I為Intermediate,表示中間;O為Other,表示其他。比如:

      我明天去北京。

      OBIOBI


      實現例子

      使用dlib庫實現結構化SVM序列標注功能,以下僅僅是一個簡單的功能。對“我 昨 天 在 學 校 看 到 小 明”,“小 紅 剛 剛 才 去 晚 自 習”中的人名進行標注,并且使用BIO標記方式,通過訓練后對“我 昨 天 在 學 校 見 到 大 東”句子進行人名提取。

      輸出分別為:

      小 明

      小 紅

      大 東

      #include <iostream>#include <cctype>#include <dlib/svm_threaded.h>#include <dlib/string.h>using namespace std;using namespace dlib;class feature_extractor{public: typedef std::vector<std::string> sequence_type; const static bool use_BIO_model = true; const static bool use_high_order_features = true; const static bool allow_negative_weights = true; unsigned long window_size()  const { return 3; } unsigned long num_features() const { return 1; } template <typename feature_setter> void get_features(
      feature_setter& set_feature, const sequence_type& sentence, unsigned long position
      ) const
      { if (sentence[0].compare("小") == 0 || sentence[0].compare("明") == 0 || sentence[0].compare("紅") == 0 || sentence[0].compare("張") == 0 || sentence[0].compare("陳") == 0)
      set_feature(0);
      }
      };void make_training_examples( std::vector<std::vector<std::string> >& samples, std::vector<std::vector<std::pair<unsigned long, unsigned long> > >& segments
      ){ std::vector<std::pair<unsigned long, unsigned long> > names;

      samples.push_back(split("我 昨 天 在 學 校 看 到 小 明"));
      names.push_back(make_pair(8, 10));
      segments.push_back(names); names.clear();

      samples.push_back(split("小 紅 剛 剛 才 去 晚 自 習"));
      names.push_back(make_pair(0, 2));
      segments.push_back(names); names.clear();

      }void print_segment( const std::vector<std::string>& sentence, const std::pair<unsigned long, unsigned long>& segment
      ){ for (unsigned long i = segment.first; i < segment.second; ++i) cout << sentence[i] << " "; cout << endl;
      }int main(){ std::vector<std::vector<std::string> > samples; std::vector<std::vector<std::pair<unsigned long, unsigned long> > > segments;
      make_training_examples(samples, segments);

      structural_sequence_segmentation_trainer<feature_extractor> trainer;

      sequence_segmenter<feature_extractor> segmenter = trainer.train(samples, segments); for (unsigned long i = 0; i < samples.size(); ++i)
      { std::vector<std::pair<unsigned long, unsigned long> > seg = segmenter(samples[i]); for (unsigned long j = 0; j < seg.size(); ++j)
      {
      print_segment(samples[i], seg[j]);
      }
      } std::vector<std::string> sentence(split("我 昨 天 在 學 校 見 到 大 東")); std::vector<std::pair<unsigned long, unsigned long> > seg = segmenter(sentence); for (unsigned long j = 0; j < seg.size(); ++j)
      {
      print_segment(sentence, seg[j]);
      }

      }

      雷峰網特約稿件,未經授權禁止轉載。詳情見轉載須知

      基于結構化SVM進行序列標注

      分享:
      相關文章
      當月熱門文章
      最新文章
      請填寫申請人資料
      姓名
      電話
      郵箱
      微信號
      作品鏈接
      個人簡介
      為了您的賬戶安全,請驗證郵箱
      您的郵箱還未驗證,完成可獲20積分喲!
      請驗證您的郵箱
      立即驗證
      完善賬號信息
      您的賬號已經綁定,現在您可以設置密碼以方便用郵箱登錄
      立即設置 以后再說
      主站蜘蛛池模板: 超碰人人操| 亚洲欧美日韩高清一区二区三区| 国产一级做美女做受视频| 精品无码一区二区三区水蜜桃| 国产日韩精品欧美一区灰| 三区在线视频| 91在线免费视频| 久久久噜噜噜久久熟女aa片| 97久久国产亚洲精品超碰热| 中文字幕一区二区三区一一| 亚洲激情一区二区三区视频| 苗栗县| 中文字幕天天色色干干| 狠狠v日韩v欧美v| 亚洲欧美成aⅴ人在线观看| 亚洲中文精品久久久久久不卡 | 中文字幕网红自拍偷拍视频| 午夜阳光精品一区二区三区| 国产在线网址| 精品国产一区二区三区四区 | 国产色综合网| 法国白嫩大屁股xxxx| 梨树县| 人妻互换一二三区激情视频| 操夜夜操| 蜜桃av一卡二卡三卡| 亚洲中文字幕播放| 久久成人18免费| 成人美女黄网站色大免费的| 宝丰县| 中国丰满少妇人妻xxx性董鑫洁| 中文字幕三区| 四虎库影成人在线播放| 国产精品国产高清国产av| 亚洲精品乱码久久久久久按摩| 风韵丰满熟妇啪啪区老老熟妇| 久久无码中文字幕免费影院| 成在线人免费无码高潮喷水 | 成人麻豆日韩在无码视频| 天天爱天天躁XXXXAAAA| 男人扒开女人内裤强吻桶进去|