คำถามติดแท็ก loss-function

5
ทำไมฟังก์ชั่นค่าใช้จ่ายใช้ความผิดพลาดกำลังสอง?
ฉันเพิ่งเริ่มต้นด้วยการเรียนรู้ของเครื่องและจนถึงตอนนี้ฉันได้จัดการกับการถดถอยเชิงเส้นมากกว่าหนึ่งตัวแปร ฉันได้เรียนรู้ว่ามีสมมติฐานซึ่งก็คือ: hθ(x)=θ0+θ1xhθ(x)=θ0+θ1xh_\theta(x)=\theta_0+\theta_1x เพื่อหาค่าที่ดีสำหรับพารามิเตอร์และθ 1เราต้องการลดความแตกต่างระหว่างผลการคำนวณและผลลัพธ์จริงของข้อมูลทดสอบของเรา เราก็ลบออกθ0θ0\theta_0θ1θ1\theta_1 hθ(x(i))−y(i)hθ(x(i))−y(i)h_\theta(x^{(i)})-y^{(i)} สำหรับทุกจาก1ไปม. ดังนั้นเราคำนวณผลรวมเหนือความแตกต่างนี้แล้วคำนวณค่าเฉลี่ยด้วยการคูณผลรวมด้วย1iii111mmm . จนถึงตอนนี้ดีมาก สิ่งนี้จะส่งผลให้:1m1m\frac{1}{m} 1m∑mi=1hθ(x(i))−y(i)1m∑i=1mhθ(x(i))−y(i)\frac{1}{m}\sum_{i=1}^mh_\theta(x^{(i)})-y^{(i)} แต่นี่ไม่ใช่สิ่งที่ได้รับการแนะนำ แต่หลักสูตรแนะนำให้ใช้ค่ากำลังสองของความแตกต่างและคูณด้วย . ดังนั้นสูตรคือ:12m12m\frac{1}{2m} 12m∑mi=1(hθ(x(i))−y(i))212m∑i=1m(hθ(x(i))−y(i))2\frac{1}{2m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})^2 ทำไมถึงเป็นอย่างนั้น? ทำไมเราถึงใช้ฟังก์ชันสแควร์ตรงนี้, ทำไมเราคูณด้วยแทน112m12m\frac{1}{2m} ?1m1m\frac{1}{m}

4
คำอธิบายที่ใช้งานง่ายของการสูญเสียการประมาณค่าเสียงรบกวน (NCE)?
ฉันอ่านเกี่ยวกับ NCE (รูปแบบของการสุ่มตัวอย่างผู้สมัคร) จากทั้งสองแหล่ง: การเขียน Tensorflow กระดาษต้นฉบับ ใครสามารถช่วยฉันด้วยสิ่งต่อไปนี้: คำอธิบายง่ายๆเกี่ยวกับวิธีการทำงานของ NCE (ฉันพบว่าข้างต้นยากที่จะแยกวิเคราะห์และทำความเข้าใจเกี่ยวกับดังนั้นสิ่งที่ใช้งานง่ายที่นำไปสู่คณิตศาสตร์ที่นำเสนอจะมีมาก) หลังจากจุดที่ 1 ด้านบนคำอธิบายที่ใช้งานง่ายตามธรรมชาติของสิ่งนี้แตกต่างจากการสุ่มตัวอย่างเชิงลบ ฉันเห็นว่ามีการเปลี่ยนแปลงเล็กน้อยในสูตร แต่ไม่สามารถเข้าใจคณิตศาสตร์ได้ ฉันมีความเข้าใจที่เข้าใจง่ายเกี่ยวกับการสุ่มตัวอย่างเชิงลบในบริบทของword2vec- เราสุ่มเลือกตัวอย่างจากคำศัพท์Vและอัปเดตเฉพาะสิ่งเหล่านั้นเนื่องจาก|V|มีขนาดใหญ่และนี่เป็นการเพิ่มความเร็ว โปรดแก้ไขหากผิด เมื่อใดควรใช้สิ่งใดและจะตัดสินใจอย่างไร มันจะดีถ้าคุณมีตัวอย่าง (อาจเข้าใจได้ง่ายเกี่ยวกับแอปพลิเคชัน) NCE ดีกว่าการสุ่มตัวอย่างเชิงลบหรือไม่ ดีกว่าในลักษณะใด ขอขอบคุณ.

1
ทำไม xgboost จึงเร็วกว่า GradientBoostingClassifier ของ sklearn มาก?
ฉันพยายามที่จะฝึกอบรมการยกระดับความลาดชันของตัวอย่างมากกว่า 50k ด้วยคุณสมบัติตัวเลข 100 ตัว XGBClassifierจัดการ 500 ต้นภายใน 43 วินาทีบนเครื่องของฉันในขณะที่GradientBoostingClassifierจัดการเพียง 10 ต้น (!) ใน 1 นาทีและ 2 วินาที :( ฉันไม่ได้พยายามที่จะเติบโต 500 ต้นเพราะจะใช้เวลาหลายชั่วโมงฉันใช้แบบเดียวกันlearning_rateและmax_depthการตั้งค่า ดูด้านล่าง อะไรทำให้ XGBoost เร็วขึ้นมาก? มันใช้การปรับแต่งแบบใหม่เพื่อส่งเสริมการไล่ระดับสีที่พวก sklearn ไม่รู้หรือไม่? หรือว่า "ตัดมุม" และปลูกต้นไม้ที่ตื้นขึ้น? ป.ล. ฉันตระหนักถึงการสนทนานี้: https://www.kaggle.com/c/higgs-boson/forums/t/10335/xgboost-post-competition-surveyแต่ไม่สามารถหาคำตอบได้ที่นั่น ... XGBClassifier(base_score=0.5, colsample_bylevel=1, colsample_bytree=1, gamma=0, learning_rate=0.05, max_delta_step=0, max_depth=10, min_child_weight=1, missing=None, n_estimators=500, nthread=-1, objective='binary:logistic', reg_alpha=0, reg_lambda=1, …
29 scikit-learn  xgboost  gbm  data-mining  classification  data-cleaning  machine-learning  reinforcement-learning  data-mining  bigdata  dataset  nlp  language-model  stanford-nlp  machine-learning  neural-network  deep-learning  randomized-algorithms  machine-learning  beginner  career  xgboost  loss-function  neural-network  software-recommendation  naive-bayes-classifier  classification  scikit-learn  feature-selection  r  random-forest  cross-validation  data-mining  python  scikit-learn  random-forest  churn  python  clustering  k-means  machine-learning  nlp  sentiment-analysis  machine-learning  programming  python  scikit-learn  nltk  gensim  visualization  data  csv  neural-network  deep-learning  descriptive-statistics  machine-learning  supervised-learning  text-mining  orange  data  parameter-estimation  python  pandas  scraping  r  clustering  k-means  unsupervised-learning 

2
Sparse_categorical_crossentropy vs categorical_crossentropy (keras ความแม่นยำ)
ข้อไหนดีกว่าเพื่อความถูกต้องหรือเหมือนกัน แน่นอนถ้าคุณใช้ categorical_crossentropy คุณใช้การเข้ารหัสแบบร้อนและหากคุณใช้ sparse_categorical_crossentropy คุณจะเข้ารหัสเป็นจำนวนเต็มปกติ นอกจากนี้เมื่อใดจะดีกว่าอีกอัน

2
การถดถอยแบบปรับพารามิเตอร์ของมุมการหมุน
สมมติว่าฉันมีรูปลูกศรจากบนลงล่างและฉันต้องการทำนายมุมที่ลูกศรนี้สร้างขึ้น นี้จะอยู่ระหว่างและองศาหรือระหว่างและ2ปัญหาคือเป้าหมายนี้มีลักษณะเป็นวงกลมและองศาเหมือนกันทุกประการซึ่งเป็นค่าคงที่ที่ฉันต้องการรวมไว้ในเป้าหมายของฉันซึ่งจะช่วยให้การวางนัยทั่วไปเป็นนัยสำคัญ (นี่คือสมมุติฐานของฉัน) ปัญหาคือฉันไม่เห็นวิธีการแก้ปัญหานี้ที่สะอาดมีเอกสารใดบ้างที่พยายามแก้ไขปัญหานี้ (หรือสิ่งที่คล้ายกัน)? ฉันมีความคิดบางอย่างกับข้อเสียที่เป็นไปได้:0003603603600002 π2π2\pi000360360360 ใช้การเปิดใช้งาน sigmoid หรือ tanh ปรับขนาดเป็นช่วง (และรวมคุณสมบัติแบบวงกลมในฟังก์ชันการสูญเสีย ฉันคิดว่าสิ่งนี้จะล้มเหลวอย่างหนักเพราะถ้าอยู่บนเส้นขอบ (การคาดคะเนที่เลวร้ายที่สุด) เพียงเสียงเล็ก ๆ เท่านั้นที่จะผลักดันให้น้ำหนักไปทางใดทางหนึ่ง นอกจากนี้ค่าที่ใกล้กับชายแดนของและจะเข้าถึงได้ยากขึ้นเนื่องจากค่าการเปิดใช้งานแบบสัมบูรณ์จะต้องใกล้เคียงกับอนันต์0 , 2 π)0,2π)0, 2\pi)0002 π2π2\pi ถอยกลับไปที่ค่าสองค่า aและและคำนวณการสูญเสียตามมุมทั้งสองค่าทำ ฉันคิดว่าอันนี้มีศักยภาพมากกว่า แต่บรรทัดฐานของเวกเตอร์นี้ไม่มีขอบเขตซึ่งอาจนำไปสู่ความไม่แน่นอนของตัวเลขและอาจนำไปสู่การระเบิดหรือเป็น 0 ในระหว่างการฝึก สิ่งนี้สามารถแก้ไขได้โดยใช้ regularizer แปลก ๆ เพื่อป้องกันบรรทัดฐานนี้ไม่ให้อยู่ห่างจาก 1 มากเกินไปyxxxyyy ตัวเลือกอื่น ๆ กำลังทำอะไรบางอย่างกับฟังก์ชั่นไซน์และโคไซน์ แต่ฉันรู้สึกเหมือนความจริงที่ว่าแผนที่การเปิดใช้งานล่วงหน้าหลายรายการไปยังเอาต์พุตเดียวกันจะทำให้การเพิ่มประสิทธิภาพและการสรุปทั่วไปทำได้ยากมาก

3
Tensorflow การปรับฟังก์ชั่นต้นทุนสำหรับข้อมูลที่ไม่สมดุล
ฉันมีปัญหาการจำแนกข้อมูลที่มีความไม่สมดุลสูง ฉันได้อ่านแล้วการสุ่มตัวอย่างเกินจริงและการเปลี่ยนแปลงค่าใช้จ่ายสำหรับผลลัพธ์ที่เป็นหมวดหมู่ที่ต่ำกว่าจะนำไปสู่การปรับที่ดีขึ้น ก่อนที่สิ่งนี้จะทำเสร็จแล้วก็จะแบ่งออกเป็นแต่ละกลุ่มส่วนใหญ่เทนเซอร์กระแส (และได้รับความแม่นยำมากกว่า 90% ไม่มีความหมายเท่าที่เป็น) ฉันสังเกตว่าบันทึกของค่าผกผันของแต่ละกลุ่มทำให้ตัวคูณที่ดีที่สุดที่ฉันได้ลอง มีการจัดการมาตรฐานมากขึ้นสำหรับฟังก์ชันต้นทุนหรือไม่ สิ่งนี้ถูกนำไปใช้อย่างถูกต้องหรือไม่? from collections import Counter counts = Counter(category_train) weightsArray =[] for i in range(n_classes): weightsArray.append(math.log(category_train.shape[0]/max(counts[i],1))+1) class_weight = tf.constant(weightsArray) weighted_logits = tf.mul(pred, class_weight) cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(weighted_logits, y)) optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate).minimize(cost)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.