ทำไม tanh เกือบดีกว่า sigmoid ในฐานะฟังก์ชั่นการเปิดใช้งานเกือบทุกครั้ง


33

ในแอนดรูอึ้งของหลักสูตรโครงข่ายประสาทและลึกการเรียนรู้เกี่ยวกับ Courseraเขากล่าวว่าการใช้มักจะดีกว่าที่จะใช้sigmoidtanhsigmoid

เหตุผลที่เขาให้คือผลลัพธ์ที่ใช้ศูนย์ประมาณ 0 มากกว่า 's 0.5 และสิ่งนี้ "ทำให้การเรียนรู้สำหรับชั้นถัดไปง่ายขึ้นเล็กน้อย"tanhsigmoid

  1. เหตุใดการทำให้การเรียนรู้ความเร็วของการเปิดใช้งานเป็นศูนย์อยู่ตรงกลาง ฉันคิดว่าเขาพูดถึงเลเยอร์ก่อนหน้านี้เมื่อการเรียนรู้เกิดขึ้นระหว่างการทำโพสต์?

  2. มีคุณสมบัติอื่น ๆ ที่ทำให้ดีกว่า ? การไล่ระดับสีชันช้ากว่าจะทำให้การไล่ระดับสีหายไปหรือไม่tanh

  3. มีสถานการณ์ใดบ้างที่น่าจะดีกว่า?sigmoid

ต้องการคำตอบทางคณิตศาสตร์ที่เข้าใจง่าย


13
ฟังก์ชั่น sigmoid เป็นรูปตัว S (ดังนั้นชื่อ) สมมุติว่าคุณกำลังพูดถึงฟังก์ชันลอจิสติกส์ex1+ex x นอกเหนือจากสเกลและตำแหน่งทั้งสองนั้นเหมือนกัน:logistic(x)=12+12tanh(x2) ) ตัวเลือกที่แท้จริงคือว่าคุณต้องการเอาท์พุทในช่วงเวลา(1,1)หรือช่วงเวลา(0,1)
เฮนรี่

คำตอบ:


21

Yan LeCun และคนอื่น ๆ แย้งในBackPropที่มีประสิทธิภาพ

การคอนเวอร์เจนซ์มักจะเร็วกว่าหากค่าเฉลี่ยของตัวแปรอินพุทของแต่ละชุดการฝึกอบรมใกล้เคียงกับศูนย์ หากต้องการดูสิ่งนี้ให้พิจารณากรณีที่รุนแรงซึ่งอินพุตทั้งหมดเป็นค่าบวก น้ำหนักของโหนดเฉพาะในเลเยอร์น้ำหนักแรกจะได้รับการอัปเดตโดยจำนวนสัดส่วนกับδxโดยที่δเป็นข้อผิดพลาด (สเกลาร์) ที่โหนดนั้นและxเป็นเวกเตอร์อินพุต (ดูสมการ (5) และ (10) เมื่อทุกองค์ประกอบของเวกเตอร์การป้อนข้อมูลที่เป็นบวกการปรับปรุงทั้งหมดของน้ำหนักที่ป้อนเข้าสู่โหนดจะมีเครื่องหมายเดียวกัน (เช่นการเข้าสู่ระบบ ( δ )) เป็นผลให้น้ำหนักเหล่านี้ลดลงหรือเพิ่มขึ้นพร้อมกันเท่านั้นสำหรับรูปแบบการป้อนข้อมูลที่กำหนด ดังนั้นหากเวกเตอร์น้ำหนักต้องเปลี่ยนทิศทางมันสามารถทำได้โดยการคดเคี้ยวไปมาซึ่งไม่มีประสิทธิภาพและช้ามาก

นี่คือเหตุผลที่คุณควรทำให้อินพุตของคุณเป็นปกติเพื่อให้ค่าเฉลี่ยเป็นศูนย์

ตรรกะเดียวกันนี้ใช้กับเลเยอร์กลาง:

ฮิวริสติกนี้ควรใช้กับทุกเลเยอร์ซึ่งหมายความว่าเราต้องการค่าเฉลี่ยของเอาต์พุตของโหนดใกล้เคียงกับศูนย์เพราะผลลัพธ์เหล่านี้เป็นอินพุตของเลเยอร์ถัดไป

Postscript @craq ทำให้จุดที่ข้อความนี้ไม่สมเหตุสมผลสำหรับ ReLU (x) = max (0, x) ซึ่งได้กลายเป็นฟังก์ชั่นการเปิดใช้งานที่เป็นที่นิยมอย่างกว้างขวาง ในขณะที่ ReLU หลีกเลี่ยงปัญหาซิกแซกแรกที่ LeCun กล่าวถึง แต่ก็ไม่ได้แก้จุดที่สองนี้โดย LeCun ผู้ซึ่งกล่าวว่าเป็นสิ่งสำคัญที่จะผลักดันค่าเฉลี่ยให้เป็นศูนย์ ฉันชอบที่จะรู้ว่าสิ่งที่ LeCun ได้พูดเกี่ยวกับเรื่องนี้ ไม่ว่าในกรณีใดมีเอกสารที่เรียกว่าBatch Normalizationซึ่งสร้างขึ้นจากการทำงานของ LeCun และเสนอวิธีแก้ไขปัญหานี้:

เป็นที่ทราบกันมานาน (LeCun et al., 1998b; Wiesler & Ney, 2011) ว่าการฝึกอบรมเครือข่ายมาบรรจบกันได้เร็วขึ้นหากอินพุตมีสีขาว - กล่าวคือการแปลงเชิงเส้นให้มีค่าเฉลี่ยศูนย์และความแปรปรวนของหน่วย เมื่อแต่ละเลเยอร์ตรวจสอบอินพุตที่ผลิตโดยเลเยอร์ด้านล่างมันจะเป็นประโยชน์ในการบรรลุไวท์เทนนิ่งที่เหมือนกันของอินพุตของแต่ละชั้น


อย่างไรก็ตามวิดีโอนี้โดย Sirajอธิบายเกี่ยวกับฟังก์ชั่นการเปิดใช้งานใน 10 นาที


@ elkout กล่าวว่า"เหตุผลที่แท้จริงที่ tanh เป็นที่ต้องการเมื่อเทียบกับ sigmoid (... ) คืออนุพันธ์ของ tanh นั้นใหญ่กว่าอนุพันธ์ของ sigmoid"

ฉันคิดว่านี่ไม่ใช่ปัญหา ฉันไม่เคยเห็นสิ่งนี้เป็นปัญหาในวรรณคดี หากมันรบกวนจิตใจคุณว่าอนุพันธ์หนึ่งมีขนาดเล็กกว่าอีกอนุพันธ์หนึ่งคุณก็สามารถขยายได้

ฟังก์ชันลอจิสติกมีรูปร่างσ(x)=11+ekx x โดยปกติเราใช้k=1แต่ไม่มีสิ่งใดที่ห้ามไม่ให้คุณใช้ค่าอื่นสำหรับkเพื่อทำให้อนุพันธ์ของคุณกว้างขึ้นหากนั่นเป็นปัญหาของคุณ


Nitpick: tanh ยังเป็นฟังก์ชันsigmoid ฟังก์ชั่นใด ๆ ที่มีรูปร่าง S เป็น sigmoid สิ่งที่พวกคุณกำลังเรียก sigmoid เป็นฟังก์ชันลอจิสติก เหตุผลที่ฟังก์ชันลอจิสติกเป็นที่นิยมมากขึ้นก็คือเหตุผลทางประวัติศาสตร์ มันถูกนำมาใช้เป็นเวลานานโดยนักสถิติ นอกจากนี้บางคนรู้สึกว่ามันเป็นไปได้ทางชีวภาพมากขึ้น


1
คุณไม่จำเป็นต้องมีการอ้างอิงเพื่อแสดง , เพียงแคลคูลัสระดับมัธยมปลาย σ ( x ) = σ ( x ) ( 1 - σ ( x ) ) 0.25เรารู้ว่านี่เป็นความจริงเพราะ0 < σ ( x ) < 1ดังนั้นคุณต้องเพิ่มกำลังสองกำลังเว้า tanh maxxσ(x)<maxxtanh(x)
σ(x)=σ(x)(1σ(x))0.25
0<σ(x)<1ซึ่งสามารถตรวจสอบได้โดยการตรวจสอบ
tanh(x)=sech2(x)=2exp(x)+exp(x))1.0
Sycorax พูดว่า Reinstate Monica

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

แขวนไว้ ... ที่ฟังดูน่าเชื่อถือ แต่ถ้าเลเยอร์กลางควรมีเอาต์พุตเฉลี่ยเป็นศูนย์ทำไม ReLU จึงทำงานได้ดี? นั่นไม่ใช่ความขัดแย้งใช่มั้ย
craq

@ ก่อนหน้านี้อนุพันธ์ของมีขนาดใหญ่กว่าsigmoidนั้นไม่ใช่ปัญหา คุณสามารถปรับขนาดถ้ามันรบกวนคุณ tanhsigmoid
Ricardo Cruz

@raq จุดที่ดีฉันคิดว่านั่นเป็นข้อบกพร่องในการโต้แย้งของ LeCun แน่นอน ฉันได้เพิ่มลิงก์ไปยังเอกสารการทำให้เป็นมาตรฐานของแบทช์ซึ่งจะกล่าวถึงเพิ่มเติมเกี่ยวกับปัญหานั้นและวิธีแก้ไขได้ น่าเสียดายที่กระดาษไม่ได้เปรียบเทียบ relu กับ tanh เพียงเปรียบเทียบ relu กับ logistic (sigmoid)
Ricardo Cruz

14

มันไม่ได้ว่ามันเป็นสิ่งที่จำเป็นต้องดีกว่าsigmoidกล่าวอีกนัยหนึ่งมันไม่ใช่ศูนย์กลางของการเปิดใช้งานที่ทำให้ดีขึ้น และแนวคิดที่อยู่เบื้องหลังทั้งสองฟังก์ชั่นนั้นเหมือนกันและพวกเขายังแบ่งปัน "แนวโน้ม" ที่คล้ายกัน จำเป็นต้องพูดว่าฟังก์ชันtanhเรียกว่าฟังก์ชันsigmoidรุ่น shiftedsigmoidtanhsigmoid

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

แต่ทำไมไฮเพอร์โบลิกแทนเจนต์จึงมีอนุพันธ์ที่ใหญ่กว่า เพียงเพื่อให้คุณได้สัญชาตญาณง่ายมากคุณอาจสังเกตกราฟต่อไปนี้:

Sigmoid vs Hyperbolic Tangent

ความจริงที่ว่าช่วงอยู่ระหว่าง -1 ถึง 1 เมื่อเทียบกับ 0 และ 1 ทำให้ฟังก์ชั่นนี้สะดวกสำหรับเครือข่ายประสาท นอกจากนั้นถ้าฉันใช้คณิตศาสตร์ฉันสามารถพิสูจน์ได้ว่า:

tanhx=2σ(2x)1

|tanh(x)x|>|σ(x)x|


เหตุใด Prof. Ng จึงกล่าวว่ามันเป็นข้อดีที่จะได้ผลลัพธ์ของฟังก์ชันโดยเฉลี่ย 0?
Tom Hale

2
ไม่ใช่ความจริงที่ว่าค่าเฉลี่ยอยู่ที่ประมาณ 0 tanhได้เร็วขึ้น ความจริงที่ว่าการมีค่าประมาณศูนย์นั้นหมายความว่าช่วงนั้นก็น่ากลัวกว่าเมื่อเปรียบเทียบกับประมาณ 0.5 ในกรณีของsigmoid) ซึ่งนำไปสู่อนุพันธ์ที่ใหญ่กว่าซึ่งเกือบจะนำไปสู่การลู่เข้าสู่จุดต่ำสุดได้เร็วขึ้น ฉันหวังว่ามันชัดเจนแล้ว อึ้งถูกต้องที่เราชอบtanhฟังก์ชั่นเพราะมันอยู่กึ่งกลางรอบ 0 แต่เขาก็ไม่ได้ให้เหตุผลที่สมบูรณ์
ekoulier

การตั้งศูนย์เป็นศูนย์สำคัญกว่า 2xอัตราส่วนเพราะมัน skews การกระจายตัวของการเปิดใช้งานและที่เจ็บประสิทธิภาพ ถ้าคุณใช้sigmoid(x) - 0.5และ2x smaller learning rate, it will learn on par with tanh.
Maxim

@Maxim Which "it" skews the distribution of activations, zero-centering or 2x? If zero-centering is a Good Thing, I still don't feel that the "why" of that has been answered.
Tom Hale

3

Answering the part of the question so far unaddressed:

Andrew Ng says that using the logistic function (commonly know as sigmoid) really only makes sense in the final layer of a binary classification network.

As the output of the network is expected to be between 0 and 1, the logistic is a perfect choice as it's range is exactly (0,1). No scaling and shifting of tanh required.


For the output, the logistic function makes sense if you want to produce probabilities, we can all agree on that. What is being discussed is why tanh is preferred over the logistic function as an activation for the middle layers.
Ricardo Cruz

How do you know that's what the OP intended? It seems he was asking a general question.
Tom Hale

2

It all essentially depends on the derivatives of the activation function, the main problem with the sigmoid function is that the max value of its derivative is 0.25, this means that the update of the values of W and b will be small.

The tanh function on the other hand, has a derivativ of up to 1.0, making the updates of W and b much larger.

This makes the tanh function almost always better as an activation function (for hidden layers) rather than the sigmoid function.

To prove this myself (at least in a simple case), I coded a simple neural network and used sigmoid, tanh and relu as activation functions, then I plotted how the error value evolved and this is what I got.

enter image description here

The full notebook I wrote is here https://www.kaggle.com/moriano/a-showcase-of-how-relus-can-speed-up-the-learning

If it helps, here are the charts of the derivatives of the tanh function and the sigmoid one (pay attention to the vertical axis!)

enter image description here

enter image description here


(-1) Although this is an interesting idea, it doesn't stand on it's own. In particular, most optimization methods used for DL/NN are first order gradient methods, which have a learning rate α. If the max derivative with regards to one activation function is too small, one could easily just increase the learning rate.
Cliff AB

Don't you run the risk of not having a stable learning curve with a higher learning rate?
Juan Antonio Gomez Moriano

Well, if the derivatives are more stable, then increasing the learning rate is less likely to destablize the estimation.
Cliff AB

That's a fair point, do you have a link where I could learn more of this?
Juan Antonio Gomez Moriano
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.