From a6f144b5a0ffc16b0e39c891500b4c245a2244b9 Mon Sep 17 00:00:00 2001 From: chokkan Date: Wed, 2 May 2012 18:38:30 +0900 Subject: [PATCH] Implemented instance weighting. Currently, only L-BFGS can support instance weighting. Debugging later. --- frontend/reader.c | 10 +++++++++- include/crfsuite.h | 4 +++- lib/crf/src/crf1d_encode.c | 2 +- lib/crf/src/crf1d_feature.c | 4 ++-- lib/crf/src/crfsuite.c | 4 ++++ lib/crf/src/train_arow.c | 4 ++-- lib/crf/src/train_l2sgd.c | 2 +- win32/liblbfgs/lbfgs.h | 13 +++++++++++-- win32/liblbfgs/lbfgs.lib | Bin 43388 -> 43588 bytes win32/liblbfgs/lbfgs_debug.lib | Bin 40312 -> 0 bytes 10 files changed, 33 insertions(+), 10 deletions(-) delete mode 100644 win32/liblbfgs/lbfgs_debug.lib diff --git a/frontend/reader.c b/frontend/reader.c index c7912c1f..fd2a7c01 100644 --- a/frontend/reader.c +++ b/frontend/reader.c @@ -34,6 +34,7 @@ #include #include +#include #include #include "iwa.h" @@ -106,7 +107,13 @@ int read_data(FILE *fpi, FILE *fpo, crfsuite_data_t* data, int group) break; case IWA_ITEM: if (lid == -1) { - lid = labels->get(labels, token->attr); + if (strncmp(token->attr, "@weight:", 8) == 0) { + /* Instance weighting. */ + inst.weight = atof(token->attr+8); + } else { + /* Label. */ + lid = labels->get(labels, token->attr); + } } else { crfsuite_attribute_init(&cont); cont.aid = attrs->get(attrs, token->attr); @@ -124,6 +131,7 @@ int read_data(FILE *fpi, FILE *fpo, crfsuite_data_t* data, int group) crfsuite_data_append(data, &inst); crfsuite_instance_finish(&inst); inst.group = group; + inst.weight = 1.; ++n; break; } diff --git a/include/crfsuite.h b/include/crfsuite.h index fa3c1492..b9e3be17 100644 --- a/include/crfsuite.h +++ b/include/crfsuite.h @@ -54,7 +54,7 @@ extern "C" { */ /** Version number of CRFSuite library. */ -#define CRFSUITE_VERSION "0.12" +#define CRFSUITE_VERSION "0.12.1" /** Copyright string of CRFSuite library. */ #define CRFSUITE_COPYRIGHT "Copyright (c) 2007-2011 Naoaki Okazaki" @@ -160,6 +160,8 @@ typedef struct { crfsuite_item_t *items; /** Array of the label sequence. */ int *labels; + /** Instance weight. */ + floatval_t weight; /** Group ID of the instance. */ int group; } crfsuite_instance_t; diff --git a/lib/crf/src/crf1d_encode.c b/lib/crf/src/crf1d_encode.c index 3e4b7bca..7f296d58 100644 --- a/lib/crf/src/crf1d_encode.c +++ b/lib/crf/src/crf1d_encode.c @@ -834,7 +834,7 @@ static int encoder_objective_and_gradients_batch(encoder_t *self, dataset_t *ds, logl += logp; /* Update the model expectations of features. */ - crf1de_model_expectation(crf1de, seq, g, 1.); + crf1de_model_expectation(crf1de, seq, g, seq->weight); } *f = -logl; diff --git a/lib/crf/src/crf1d_feature.c b/lib/crf/src/crf1d_feature.c index 90776f0e..441cd429 100644 --- a/lib/crf/src/crf1d_feature.c +++ b/lib/crf/src/crf1d_feature.c @@ -199,7 +199,7 @@ crf1df_feature_t* crf1df_generate( f.type = FT_TRANS; f.src = prev; f.dst = cur; - f.freq = 1; + f.freq = seq->weight; featureset_add(set, &f); } @@ -208,7 +208,7 @@ crf1df_feature_t* crf1df_generate( f.type = FT_STATE; f.src = item->contents[c].aid; f.dst = cur; - f.freq = item->contents[c].value; + f.freq = seq->weight * item->contents[c].value; featureset_add(set, &f); /* Generate state features connecting attributes with all diff --git a/lib/crf/src/crfsuite.c b/lib/crf/src/crfsuite.c index 2df24440..12a5c2bf 100644 --- a/lib/crf/src/crfsuite.c +++ b/lib/crf/src/crfsuite.c @@ -155,6 +155,7 @@ int crfsuite_item_empty(crfsuite_item_t* item) void crfsuite_instance_init(crfsuite_instance_t* inst) { memset(inst, 0, sizeof(*inst)); + inst->weight = 1.; } void crfsuite_instance_init_n(crfsuite_instance_t* inst, int num_items) @@ -186,6 +187,7 @@ void crfsuite_instance_copy(crfsuite_instance_t* dst, const crfsuite_instance_t* dst->cap_items = src->cap_items; dst->items = (crfsuite_item_t*)calloc(dst->num_items, sizeof(crfsuite_item_t)); dst->labels = (int*)calloc(dst->num_items, sizeof(int)); + dst->weight = src->weight; dst->group = src->group; for (i = 0;i < dst->num_items;++i) { crfsuite_item_copy(&dst->items[i], &src->items[i]); @@ -200,11 +202,13 @@ void crfsuite_instance_swap(crfsuite_instance_t* x, crfsuite_instance_t* y) x->cap_items = y->cap_items; x->items = y->items; x->labels = y->labels; + x->weight = y->weight; x->group = y->group; y->num_items = tmp.num_items; y->cap_items = tmp.cap_items; y->items = tmp.items; y->labels = tmp.labels; + y->weight = tmp.weight; y->group = tmp.group; } diff --git a/lib/crf/src/train_arow.c b/lib/crf/src/train_arow.c index 27a17ba3..7ae2a1c8 100644 --- a/lib/crf/src/train_arow.c +++ b/lib/crf/src/train_arow.c @@ -308,8 +308,8 @@ int crfsuite_train_arow( d = diff(inst->labels, viterbi, inst->num_items); if (0 < d) { floatval_t alpha, frac; - floatval_t sc, norm2; - floatval_t tau, cost; + floatval_t sc; + floatval_t cost; /* Compute the cost of this instance. diff --git a/lib/crf/src/train_l2sgd.c b/lib/crf/src/train_l2sgd.c index ca5ada00..85712177 100644 --- a/lib/crf/src/train_l2sgd.c +++ b/lib/crf/src/train_l2sgd.c @@ -289,7 +289,7 @@ l2sgd_calibration( const training_option_t* opt ) { - int i, s; + int i; int dec = 0, ok, trials = 1; int num = opt->calibration_candidates; clock_t clk_begin = clock(); diff --git a/win32/liblbfgs/lbfgs.h b/win32/liblbfgs/lbfgs.h index 7aa7b1f7..cd944a33 100644 --- a/win32/liblbfgs/lbfgs.h +++ b/win32/liblbfgs/lbfgs.h @@ -573,7 +573,7 @@ Among the various ports of L-BFGS, this library provides several features: The library is thread-safe, which is the secondary gain from the callback interface. - Cross platform. The source code can be compiled on Microsoft Visual - Studio 2005, GNU C Compiler (gcc), etc. + Studio 2010, GNU C Compiler (gcc), etc. - Configurable precision: A user can choose single-precision (float) or double-precision (double) accuracy by changing ::LBFGS_FLOAT macro. - SSE/SSE2 optimization: @@ -592,12 +592,20 @@ This library is used by: @section download Download -- Source code +- Source code +- GitHub repository libLBFGS is distributed under the term of the MIT license. @section changelog History +- Version 1.10 (2010-12-22): + - Fixed compiling errors on Mac OS X; this patch was kindly submitted by + Nic Schraudolph. + - Reduced compiling warnings on Mac OS X; this patch was kindly submitted + by Tamas Nepusz. + - Replaced memalign() with posix_memalign(). + - Updated solution and project files for Microsoft Visual Studio 2010. - Version 1.9 (2010-01-29): - Fixed a mistake in checking the validity of the parameters "ftol" and "wolfe"; this was discovered by Kevin S. Van Horn. @@ -718,6 +726,7 @@ Special thanks go to: - Yoshimasa Tsuruoka and Daisuke Okanohara for technical information about OWL-QN - Takashi Imamichi for the useful enhancements of the backtracking method + - Kevin S. Van Horn, Nic Schraudolph, and Tamas Nepusz for bug fixes Finally I would like to thank the original author, Jorge Nocedal, who has been distributing the effieicnt and explanatory implementation in an open source diff --git a/win32/liblbfgs/lbfgs.lib b/win32/liblbfgs/lbfgs.lib index 521206881dd7e99dea726af727c539034456a3ef..72f137d0a455d451141f2def9a5b052466dec8ff 100644 GIT binary patch literal 43588 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 literal 43388 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 Y4~}mP2kS*&UGU#4cOms$UnIl-0qWQDZ2$lO diff --git a/win32/liblbfgs/lbfgs_debug.lib b/win32/liblbfgs/lbfgs_debug.lib deleted file mode 100644 index c9989e892f0680be7205de9f2ce763086c211956..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40312 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 BcpCr!