คำถามติดแท็ก reinforcement-learning

พื้นที่ของการเรียนรู้ของเครื่องเกี่ยวข้องกับวิธีที่ตัวแทนซอฟต์แวร์ควรดำเนินการในสภาพแวดล้อมเพื่อเพิ่มแนวคิดเกี่ยวกับรางวัลสะสม

5
ฟังก์ชั่นถามคืออะไรและฟังก์ชั่น V ในการเรียนรู้การเสริมแรงคืออะไร?
สำหรับฉันแล้วดูเหมือนว่าฟังก์ชั่นสามารถแสดงออกได้อย่างง่ายดายด้วยฟังก์ชั่นและทำให้ฟังก์ชั่นดูเหมือนจะไม่จำเป็นสำหรับฉัน อย่างไรก็ตามฉันใหม่เพื่อเสริมการเรียนรู้ดังนั้นฉันคิดว่าฉันมีบางอย่างผิดปกติVVVQQQVVV คำนิยาม Q- และ V-การเรียนรู้อยู่ในบริบทของมาร์คอฟกระบวนการตัดสินใจ MDPเป็น 5 tupleด้วย(S,A,P,R,γ)(S,A,P,R,γ)(S, A, P, R, \gamma) SSSคือชุดของสถานะ (โดยทั่วไปจะ จำกัด ) AAAคือชุดของการกระทำ (โดยทั่วไป จำกัด ) s s ′ aP(s,s′,a)=P(st+1=s′|st=s,at=a)P(s,s′,a)=P(st+1=s′|st=s,at=a)P(s, s', a) = P(s_{t+1} = s' | s_t = s, a_t = a)ความน่าจะเป็นที่จะได้รับจากรัฐไปยังรัฐด้วยการกระทำssss′s′s'aaa s s ′ a s ′R(s,s′,a)∈RR(s,s′,a)∈RR(s, s', a) \in \mathbb{R}เป็นรางวัลที่ได้ทันทีหลังจากที่ไปจากรัฐไปยังรัฐด้วยการกระทำ (สำหรับฉันดูเหมือนว่าโดยทั่วไปมักเรื่องของ)ssss′s′s'aaas′s′s' γ …

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 

5
ความแตกต่างระหว่างเครือข่ายนโยบายของ AlphaGo และเครือข่ายค่า
ฉันกำลังอ่านสรุประดับสูงเกี่ยวกับ AlphaGo ของ Google ( http://googleresearch.blogspot.co.uk/2016/01/alphago-mastering-ancient-game-of-go.html ) ของ Google และฉันได้พบกับคำว่า "นโยบาย เครือข่าย "และ" เครือข่ายค่า " ในระดับสูงฉันเข้าใจว่ามีการใช้เครือข่ายนโยบายเพื่อแนะนำการเคลื่อนย้ายและใช้เครือข่ายค่าเพื่อ "ลดความลึกของโครงสร้างการค้นหา [และประเมิน] ผู้ชนะในแต่ละตำแหน่งแทนการค้นหาไปจนถึง จบเกม " เครือข่ายทั้งสองนี้ดูเหมือนจะซ้ำซ้อนกับฉัน เครือข่ายนโยบายกำลังทำอะไรหากไม่ได้ใช้เครือข่ายค่าเพื่อตัดนโยบาย ดูเหมือนว่าค่อนข้างชัดเจนว่าเครือข่ายค่าเป็นเครือข่ายประสาทการเรียนรู้ลึก เครือข่ายนโยบายเป็นเพียงนามธรรมในเชิงทฤษฎีไม่ใช่เครือข่ายประสาทจริงหรือ ตัวแปรเป้าหมายสำหรับเครือข่ายค่าดูเหมือนว่าจะเป็นชนะ / แพ้ มีตัวแปรเป้าหมายสำหรับเครือข่ายนโยบายหรือไม่ ถ้าเป็นเช่นนั้นมันคืออะไร? เครือข่ายนโยบายพยายามเพิ่มประสิทธิภาพอะไร ไฟล์ PDF ฉบับเต็มของ Google ที่เผยแพร่ใน Nature สามารถดูได้ที่นี่: https://vk.com/doc-44016343_437229031?dl=56ce06e325d42fbc72

2
อะไรคือความร่วมมือในการเรียนรู้เสริม?
เห็นได้ชัดว่าในการเรียนรู้การเสริมแรงวิธี temporal-different (TD) เป็นวิธีการบูตสแตรป ในทางกลับกันวิธีมอนติคาร์โลไม่ใช่วิธีการบูตสแตรป bootstrapping ใน RL คืออะไร วิธี bootstrapping ใน RL คืออะไร?

1
“ การเล่นซ้ำประสบการณ์” คืออะไรและมีประโยชน์อย่างไร
ฉันได้อ่าน DeepMind Atari ของ Google กระดาษและฉันพยายามที่จะเข้าใจแนวคิดของ "ประสบการณ์การเล่นใหม่ที่" การเล่นซ้ำประสบการณ์เกิดขึ้นในเอกสารการเรียนรู้เสริมอื่น ๆ จำนวนมาก (โดยเฉพาะกระดาษ AlphaGo) ดังนั้นฉันจึงต้องการเข้าใจวิธีการทำงาน ด้านล่างเป็นข้อความที่ตัดตอนมาบางส่วน อันดับแรกเราใช้กลไกที่ได้รับแรงบันดาลใจทางชีววิทยาเรียกว่าการเล่นซ้ำที่สุ่มข้อมูลผ่านซึ่งจะเป็นการลบความสัมพันธ์ในลำดับการสังเกตและทำให้การเปลี่ยนแปลงการกระจายข้อมูลราบรื่นขึ้น กระดาษจะทำอย่างละเอียดดังนี้: ขณะที่วิธีการที่มั่นคงอื่น ๆ ที่มีอยู่สำหรับการฝึกอบรมเครือข่ายประสาทในการตั้งค่าการเรียนรู้การเสริมแรงเช่นประสาทติดตั้ง Q-ย้ำวิธีการเหล่านี้เกี่ยวข้องกับการฝึกอบรมการทำซ้ำของเครือข่ายเดอโนโวหลายร้อยซ้ำ ดังนั้นวิธีการเหล่านี้ซึ่งแตกต่างจากอัลกอริทึมของเราจึงไม่มีประสิทธิภาพเกินกว่าที่จะใช้กับเครือข่ายประสาทขนาดใหญ่ได้สำเร็จ เรา parameterize ค่าตัวอย่างฟังก์ชั่นQ(s,a;θi)Q(s,a;θi)Q(s, a; \theta_i) . โดยใช้เครือข่ายประสาทลึกสับสนแสดงในรูปที่ 1 ซึ่งในθiθi\theta_iมีพารามิเตอร์ (นั่นคือน้ำหนัก) ของ Q-เครือข่ายที่ซ้ำฉันiiiในการเล่นซ้ำประสบการณ์เราเก็บประสบการณ์ของตัวแทนไว้et=(st,at,rt,st+1)et=(st,at,rt,st+1)e_t = (s_t, a_t, r_t, s_{t+1})ในแต่ละครั้งขั้นตอนtttในชุดข้อมูลDt={e1,…,et}Dt={e1,…,et}D_t = \{e_1, \dots, e_t \} } ในระหว่างการเรียนรู้เราใช้การปรับปรุง Q-learning กับตัวอย่าง (หรือชุดเล็ก ๆ ) …

4
AlphaGo (และโปรแกรมเกมอื่น ๆ ที่ใช้การเสริมแรงการเรียนรู้) โดยไม่มีฐานข้อมูลมนุษย์
ฉันไม่ได้เป็นผู้เชี่ยวชาญเรื่องและคำถามของฉันอาจไร้เดียงสามาก มันเกิดจากเรียงความเพื่อทำความเข้าใจพลังและข้อ จำกัด ของการเรียนรู้การเสริมแรงที่ใช้ในโปรแกรม AlphaGo โปรแกรม AlphaGo ได้รับการสร้างขึ้นโดยใช้สิ่งอื่น ๆ (การสำรวจต้นไม้ - มอนติคาร์โล ฯลฯ ), โครงข่ายประสาทเทียมซึ่งได้รับการฝึกฝนจากฐานข้อมูลขนาดใหญ่ของเกมที่เล่นโดยมนุษย์และซึ่งได้รับการเสริมด้วยการให้ โปรแกรมกับตัวเองหลายครั้ง ตอนนี้ฉันสงสัยว่าสิ่งที่จะเกิดขึ้นคือเราพยายามสร้างโปรแกรมเช่นที่ไม่มีฐานข้อมูลมนุษย์เช่นเริ่มต้นด้วยโปรแกรมพื้นฐานของ Go เพียงแค่รู้กฎและวิธีการสำรวจต้นไม้และปล่อยให้เล่นกับตัวเองเพื่อปรับปรุงโครงข่ายประสาทเทียม เราจะเล่นเกมที่สามารถแข่งขันกับหรือเอาชนะผู้เล่นที่ดีที่สุดของมนุษย์ได้หรือไม่? และถ้าเป็นเช่นนั้นจะต้องมีกี่เกม (เรียงตามขนาด) สำหรับสิ่งนั้น? หรือในทางตรงกันข้ามโปรแกรมดังกล่าวจะรวมตัวเข้าหาผู้เล่นที่อ่อนแอกว่าหรือไม่? ฉันถือว่าการทดลองไม่ได้ถูกสร้างขึ้นเนื่องจาก AlphaGo เป็นรุ่นล่าสุด แต่อย่างไรก็ตามคำตอบอาจชัดเจนสำหรับผู้เชี่ยวชาญ ไม่เช่นนั้นการเดาที่มีการศึกษาจะทำให้ฉันสนใจ ท่านสามารถถามคำถามเดียวกันสำหรับเกม "ง่ายกว่า" ถ้าเราใช้เทคนิคการเรียนรู้เสริมแบบเดียวกับที่ใช้กับ AlphaGo แต่โดยไม่ใช้ฐานข้อมูลมนุษย์สำหรับโปรแกรมหมากรุกในที่สุดเราจะได้โปรแกรมที่สามารถเอาชนะมนุษย์ที่ดีที่สุดได้หรือไม่? และถ้าเป็นเช่นนั้นวิธีการที่รวดเร็ว? มีการทดลองนี้หรือไม่? หรือถ้าไม่ใช่สำหรับหมากรุกแล้วหมากฮอสหรือเกมที่เรียบง่ายกว่านี้ล่ะ? ขอบคุณมาก.

1
การเรียนรู้แบบมีผู้เรียนเทียบกับการเสริมแรงการเรียนรู้สำหรับรถบังคับเลี้ยวแบบ RC
ฉันกำลังสร้างรถขับเคลื่อนด้วยตนเองที่ควบคุมจากระยะไกลเพื่อความสนุกสนาน ฉันใช้ Raspberry Pi เป็นคอมพิวเตอร์ออนบอร์ด และฉันใช้ปลั๊กอินต่าง ๆ เช่นกล้อง Raspberry Pi และเซ็นเซอร์ระยะทางเพื่อรับคำติชมเกี่ยวกับสภาพแวดล้อมของรถ ฉันใช้ OpenCV เพื่อเปลี่ยนเฟรมวิดีโอเป็นเทนเซอร์และฉันใช้ TensorFlow ของ Google เพื่อสร้างเครือข่ายประสาทที่ซับซ้อนเพื่อเรียนรู้ขอบเขตถนนและอุปสรรค คำถามหลักของฉันคือฉันควรใช้การเรียนรู้แบบมีผู้สอนเพื่อสอนรถยนต์ให้ขับรถหรือฉันควรให้วัตถุประสงค์และบทลงโทษและเรียนรู้การเสริมแรง (เช่นไปที่จุด B ให้เร็วที่สุดเท่าที่จะทำได้ในขณะที่ไม่ชนอะไร ด้านล่างนี้เป็นรายการข้อดีและข้อเสียที่ฉันคิดขึ้นมา ผู้เชี่ยวชาญด้านการเรียนรู้ภายใต้การดูแล: อินพุตของอัลกอริทึมการเรียนรู้นั้นค่อนข้างตรงไปตรงมา รถเรียนรู้ที่จะเชื่อมโยงเทนเซอร์เฟรมวิดีโอและการอ่านระยะทางเซ็นเซอร์กับการเคลื่อนที่ไปข้างหน้าถอยหลังและล้อเชิงมุม ฉันสามารถสอนรถยนต์ให้มากขึ้นหรือน้อยลงได้อย่างที่ฉันต้องการ (โดยไม่ต้องใส่มากเกินไป) ฉันเคยทำปัญหาการเรียนรู้แบบมีผู้ควบคุมมาก่อนและวิธีนี้ดูเหมือนจะเหมาะกับทักษะที่มีอยู่ของฉัน ข้อเสียการเรียนรู้ภายใต้การดูแล: มันยังไม่ชัดเจนว่าจะสอนความเร็วอย่างไรและความเร็วที่ถูกต้องนั้นค่อนข้างไร้เหตุผลตราบใดที่รถไม่ไปอย่างรวดเร็วจนมันเบี่ยงเบนไปจากถนน ฉันคิดว่าฉันสามารถขับรถเร็วในระหว่างการฝึกอบรม แต่นี่ดูเหมือนจะเป็นวิธีที่หยาบ บางทีฉันสามารถเพิ่มตัวแปรคงที่ด้วยตนเองในระหว่างการฝึกอบรมที่สอดคล้องกับความเร็วสำหรับเซสชันการฝึกอบรมนั้นและเมื่อมีการปรับใช้อัลกอริทึมการเรียนรู้ฉันจะตั้งค่าตัวแปรนี้ตามความเร็วที่ฉันต้องการ? ข้อดีการเรียนรู้การเสริมแรง: ถ้าฉันสร้างรถด้วยจุดประสงค์เฉพาะในการแข่งรถขับด้วยตนเองของผู้อื่นการเรียนรู้การเสริมแรงนั้นดูเหมือนจะเป็นวิธีธรรมชาติในการบอกรถของฉันว่า "ไปถึงที่นั่นให้เร็วที่สุด" ฉันเคยอ่านว่า RL บางครั้งใช้สำหรับโดรนอัตโนมัติดังนั้นในทางทฤษฎีมันควรจะง่ายขึ้นในรถยนต์เพราะฉันไม่ต้องกังวลเกี่ยวกับการขึ้นลง ข้อเสียการเรียนรู้เสริม: ฉันรู้สึกว่าการเรียนรู้การเสริมแรงจะต้องใช้เซ็นเซอร์เพิ่มเติมจำนวนมากและตรงไปตรงมารถของฉันมีความยาวไม่มากพอที่จะพิจารณาว่ามันจำเป็นต้องใส่แบตเตอรี่, Raspberry Pi, และเขียงหั่นขนม รถจะมีพฤติกรรมที่ผิดพลาดอย่างมากในตอนแรกดังนั้นมันอาจทำลายตัวเองได้ อาจใช้เวลานานเกินสมควรในการเรียนรู้ (เช่นเดือนหรือปี) ฉันไม่สามารถสร้างกฎที่ชัดเจนได้ในภายหลังเช่นหยุดที่ไฟแดงของเล่น ด้วยการเรียนรู้ภายใต้การดูแลฉันสามารถรวมอัลกอริธึม …

3
มีรูปแบบภาษาที่ดีนอกกรอบสำหรับงูใหญ่หรือไม่?
ฉันกำลังสร้างต้นแบบแอปพลิเคชันและฉันต้องการโมเดลภาษาเพื่อคำนวณความงุนงงในประโยคที่สร้างขึ้น มีรูปแบบภาษาที่ผ่านการฝึกอบรมในภาษาไพ ธ อนที่ฉันสามารถใช้ได้หรือไม่? บางสิ่งที่เรียบง่ายเช่น model = LanguageModel('en') p1 = model.perplexity('This is a well constructed sentence') p2 = model.perplexity('Bunny lamp robert junior pancake') assert p1 < p2 ฉันดูบางกรอบ แต่ไม่สามารถค้นหาสิ่งที่ฉันต้องการ ฉันรู้ว่าฉันสามารถใช้สิ่งที่ชอบ: from nltk.model.ngram import NgramModel lm = NgramModel(3, brown.words(categories='news')) สิ่งนี้ใช้การแจกแจงความน่าจะเป็นที่ดีใน Brown Corpus แต่ฉันกำลังมองหาโมเดลที่สร้างขึ้นอย่างดีในชุดข้อมูลขนาดใหญ่เช่นชุดข้อมูลคำ 1b สิ่งที่ฉันสามารถเชื่อถือได้จริง ๆ ผลลัพธ์สำหรับโดเมนทั่วไป (ไม่เพียงข่าว)
11 python  nlp  language-model  r  statistics  linear-regression  machine-learning  classification  random-forest  xgboost  python  sampling  data-mining  orange  predictive-modeling  recommender-system  statistics  dimensionality-reduction  pca  machine-learning  python  deep-learning  keras  reinforcement-learning  neural-network  image-classification  r  dplyr  deep-learning  keras  tensorflow  lstm  dropout  machine-learning  sampling  categorical-data  data-imputation  machine-learning  deep-learning  machine-learning-model  dropout  deep-network  pandas  data-cleaning  data-science-model  aggregation  python  neural-network  reinforcement-learning  policy-gradients  r  dataframe  dataset  statistics  prediction  forecasting  r  k-means  python  scikit-learn  labels  python  orange  cloud-computing  machine-learning  neural-network  deep-learning  rnn  recurrent-neural-net  logistic-regression  missing-data  deep-learning  autoencoder  apache-hadoop  time-series  data  preprocessing  classification  predictive-modeling  time-series  machine-learning  python  feature-selection  autoencoder  deep-learning  keras  tensorflow  lstm  word-embeddings  predictive-modeling  prediction  machine-learning-model  machine-learning  classification  binary  theory  machine-learning  neural-network  time-series  lstm  rnn  neural-network  deep-learning  keras  tensorflow  convnet  computer-vision 

2
การเรียนรู้การเสริมแรงแบบมีส่วนร่วม
ฉันมีการใช้งานสำหรับตัวแทนเดียวที่ทำงานเกี่ยวกับปัญหาราคาแบบไดนามิกโดยมีเป้าหมายในการเพิ่มรายได้ให้สูงสุด อย่างไรก็ตามปัญหาที่ฉันทำงานด้วยเกี่ยวข้องกับผลิตภัณฑ์ที่แตกต่างกันหลายอย่างซึ่งเป็นการทดแทนกันดังนั้นการกำหนดราคาแบบไดนามิกทั้งหมดกับผู้เรียนอิสระดูเหมือนจะไม่ถูกต้องเนื่องจากราคาหนึ่งมีผลต่อรางวัลของอีกคนหนึ่ง เป้าหมายคือการกำหนดราคาแบบไดนามิกทั้งหมดเพื่อเพิ่มผลรวมของรายได้ของแต่ละบุคคลให้ได้มากที่สุดQ(λ)Q(λ)Q(\lambda) ฉันได้ทำการวิจัยเพื่อค้นหาสิ่งที่ประยุกต์ใช้การเรียนรู้การเสริมแรงด้วยวิธีนี้ แต่การใช้หลายเอเจนต์ที่ฉันพบเน้นไปที่เกมการแข่งขันมากกว่าการร่วมมือกันหรือพวกเขาคิดว่าความรู้ที่ไม่สมบูรณ์ของตัวแทนอื่น ความรู้ของแต่ละตัวแทนในสถานการณ์นี้) มีแอปพลิเคชันที่มีการวิจัย / จัดทำเป็นเอกสารที่ดีเกี่ยวกับการเรียนแบบร่วมมือในลักษณะนี้หรือไม่?

2
การใช้ความแตกต่างชั่วคราวในหมากรุก
ฉันได้พัฒนาโปรแกรมหมากรุกซึ่งใช้อัลกอริทึมการตัดอัลฟ่าเบต้าและฟังก์ชั่นการประเมินที่ประเมินตำแหน่งโดยใช้คุณสมบัติดังต่อไปนี้คือวัสดุความเป็นกษัตริย์ความปลอดภัยคล่องตัวโครงสร้างจำนำและชิ้นส่วนที่ติดอยู่ ฯลฯ ..... มาจาก ฉ( p ) = w1⋅ วัสดุ+ w2⋅ kingsafety + W3⋅ ความคล่องตัว+ w4awn pawn-structure + w5⋅ ชิ้นที่ติดอยู่f(p)=w1⋅material+w2⋅kingsafety+w3⋅mobility+w4⋅pawn-structure+w5⋅trapped piecesf(p) = w_1 \cdot \text{material} + w_2 \cdot \text{kingsafety} + w_3 \cdot \text{mobility} + w_4 \cdot \text{pawn-structure} + w_5 \cdot \text{trapped pieces} โดยที่คือน้ำหนักที่กำหนดให้กับแต่ละคุณสมบัติ ณ จุดนี้ฉันต้องการปรับน้ำหนักของฟังก์ชั่นการประเมินของฉันโดยใช้ความแตกต่างชั่วคราวที่ตัวแทนเล่นกับตัวเองและในกระบวนการรวบรวมข้อมูลการฝึกอบรมจากสภาพแวดล้อมของมัน (ซึ่งเป็นรูปแบบของการเรียนรู้การเสริมแรง) ฉันได้อ่านหนังสือและบทความบางอย่างเพื่อให้เข้าใจอย่างลึกซึ้งเกี่ยวกับวิธีการใช้งานใน Java แต่ดูเหมือนว่าพวกเขาจะใช้ทฤษฎีมากกว่าการใช้งานจริง ฉันต้องการคำอธิบายโดยละเอียดและรหัสหลอกเกี่ยวกับวิธีการปรับน้ำหนักของฟังก์ชั่นการประเมินของฉันโดยอัตโนมัติตามเกมก่อนหน้าWww

4
หนังสือเกี่ยวกับการเสริมแรงการเรียนรู้
ฉันพยายามทำความเข้าใจการเรียนรู้การเสริมแรงมานานแล้ว แต่อย่างใดฉันไม่สามารถจินตนาการวิธีการเขียนโปรแกรมสำหรับการเรียนรู้การเสริมแรงเพื่อแก้ปัญหาโลกกริด คุณช่วยแนะนำหนังสือเรียนซึ่งจะช่วยสร้างแนวความคิดที่ชัดเจนของการเรียนรู้เสริมแรงได้ไหม?

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.