summaryrefslogtreecommitdiff
path: root/training/risk.cc
diff options
context:
space:
mode:
authorChris Dyer <cdyer@allegro.clab.cs.cmu.edu>2012-11-18 13:35:42 -0500
committerChris Dyer <cdyer@allegro.clab.cs.cmu.edu>2012-11-18 13:35:42 -0500
commit8aa29810bb77611cc20b7a384897ff6703783ea1 (patch)
tree8635daa8fffb3f2cd90e30b41e27f4f9e0909447 /training/risk.cc
parentfbdacabc85bea65d735f2cb7f92b98e08ce72d04 (diff)
major restructure of the training code
Diffstat (limited to 'training/risk.cc')
-rw-r--r--training/risk.cc45
1 files changed, 0 insertions, 45 deletions
diff --git a/training/risk.cc b/training/risk.cc
deleted file mode 100644
index d5a12cfd..00000000
--- a/training/risk.cc
+++ /dev/null
@@ -1,45 +0,0 @@
-#include "risk.h"
-
-#include "prob.h"
-#include "candidate_set.h"
-#include "ns.h"
-
-using namespace std;
-
-namespace training {
-
-// g = \sum_e p(e|f) * loss(e) * (phi(e,f) - E[phi(e,f)])
-double CandidateSetRisk::operator()(const vector<double>& params,
- SparseVector<double>* g) const {
- prob_t z;
- for (unsigned i = 0; i < cands_.size(); ++i) {
- const prob_t u(cands_[i].fmap.dot(params), init_lnx());
- z += u;
- }
- const double log_z = log(z);
-
- SparseVector<double> exp_feats;
- if (g) {
- for (unsigned i = 0; i < cands_.size(); ++i) {
- const double log_prob = cands_[i].fmap.dot(params) - log_z;
- const double prob = exp(log_prob);
- exp_feats += cands_[i].fmap * prob;
- }
- }
-
- double risk = 0;
- for (unsigned i = 0; i < cands_.size(); ++i) {
- const double log_prob = cands_[i].fmap.dot(params) - log_z;
- const double prob = exp(log_prob);
- const double cost = metric_.IsErrorMetric() ? metric_.ComputeScore(cands_[i].eval_feats)
- : 1.0 - metric_.ComputeScore(cands_[i].eval_feats);
- const double r = prob * cost;
- risk += r;
- if (g) (*g) += (cands_[i].fmap - exp_feats) * r;
- }
- return risk;
-}
-
-}
-
-