рдирдорд╕реНрддреЗ,
рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдореИрдВрдиреЗ рддреНрд░реБрдЯрд┐ рдХреЗ рдкреНрд░рдЪрд╛рд░ рдХреЗ рд▓рд┐рдП рдПрд▓реНрдЧреЛрд░рд┐рдердо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреА рдФрд░ рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд▓рд╛рдпрд╛ рдЬреЛ рддреНрд░реБрдЯрд┐ рдлрд╝рдВрдХреНрд╢рди рдФрд░ рдиреНрдпреВрд░реЙрди рдХреЗ рд╕рдХреНрд░рд┐рдпрдг рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд╣реИред рдЗрди рд╕рдорд╛рди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЗ рдХрдИ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛рдП рдЧрдП рдереЗ: рдпреВрдХреНрд▓рд┐рдбрд┐рдпрди рд╡рд░реНрдЧ рдХрд╛ рдиреНрдпреВрдирддрдордХрд░рдг рдФрд░ рд╕рд┐рдЧреНрдореЛрдЗрдб рдлрд╝рдВрдХреНрд╢рди рдФрд░ рд╣рд╛рдЗрдкрд░рдмреЛрд▓рд┐рдХ рд╕реНрдкрд░реНрд╢рд░реЗрдЦрд╛ рдХреЗ рд▓рд┐рдП рд▓рдШреБрдЧрдгрдХреАрдп рд╕рдВрднрд╛рд╡рдирд╛ред рдпрд╣ рдкреЛрд╕реНрдЯ рдЕрддреАрдд рдХреА рдПрдХ рддрд╛рд░реНрдХрд┐рдХ рдирд┐рд░рдВрддрд░рддрд╛ рд╣реЛрдЧреА, рдЬрд┐рд╕рдореЗрдВ рдореИрдВ
рдХреНрд░реЙрд╕-рдПрдВрдЯреНрд░реЛрдкреА рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рдЧреИрд░-рдорд╛рдирдХ рдЙрджрд╛рд╣рд░рдг, рдЕрд░реНрдерд╛рддреН
рд╕реЙрдлреНрдЯрдореИрдХреНрд╕ рд╕рдХреНрд░рд┐рдпрдг рдлрд╝рдВрдХреНрд╢рди рдкрд░
рд╡рд┐рдЪрд╛рд░ рдХрд░реВрдВрдЧрд╛ ред рдпрд╣ рдореЙрдбрд▓ рд╡рд░реНрдЧреАрдХрд░рдг рд╕рдорд╕реНрдпрд╛ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИ, рдЬрдм рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЗрдирдкреБрдЯ рдЫрд╡рд┐ рдЧреИрд░-рдЕрдВрддрд░-рд╡рд░реНрдЧ рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛрддреА рд╣реИред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдЖрдЙрдЯрдкреБрдЯ рдкрд░рдд рдХреЗ рд╕рднреА рдиреНрдпреВрд░реЙрдиреНрд╕ рдХреЗ рд▓рд┐рдП рдХреБрд▓ рдиреЗрдЯрд╡рд░реНрдХ рдЖрдЙрдЯрдкреБрдЯ рдПрдХ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (рд╕рд╛рде рд╣реА рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдирдореВрдиреЗ рдХреА рдЖрдЙрдЯрдкреБрдЯ рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП)ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдХреЗрд╡рд▓ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдиреЗрдЯрд╡рд░реНрдХ рдХреЛ рд╕рдВрднрд╛рд╡реНрдпрддрд╛ рд╡рд┐рддрд░рдг рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕реЗ рдмрд╕ рд╕рд┐рдЦрд╛рдПрдВред рд╡реИрд╕реЗ, рд╡рд░реНрддрдорд╛рди рдореЗрдВ
рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдПрдХ
рдХреЛрд░реНрд╕ coursera.org рдкрд░ рд╣реЛ
рд░рд╣рд╛ рд╣реИ , рдпрд╣ рд╡рд╣ рдерд╛ рдЬрд┐рд╕рдиреЗ рд╕реЙрдлреНрдЯрдореИрдХреНрд╕ рдХреА рд╕рдордЭ рдореЗрдВ рджреЗрд░реА рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХреА, рдЕрдиреНрдпрдерд╛ рдореИрдВ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреВрдВрдЧрд╛ред
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП
рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рдЖрдк рдХреЛ
рдкрд┐рдЫрд▓реА рдкреЛрд╕реНрдЯ рдХреЗ рд╕рд╛рде рдкрд░рд┐рдЪрд┐рдд рдХрд░реЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╕рднреА рд╕рдВрдХреЗрддрди, рдЗрдВрдЯрд░рдлреЗрд╕ рдФрд░ рд▓рд░реНрдирд┐рдВрдЧ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдпрд╣рд╛рдВ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╕реЙрдлреНрдЯрдореИрдХреНрд╕ рдПрдХреНрдЯрд┐рд╡реЗрд╢рди рдлрдВрдХреНрд╢рди
рдЗрд╕рд▓рд┐рдП, рдкрд╣рд▓рд╛ рдХрд╛рд░реНрдп рдЬреЛ рд╣рдореЗрдВ рд╕рд╛рдордирд╛ рдХрд░рддрд╛ рд╣реИ рд╡рд╣ рд╣реИ рдиреЗрдЯрд╡рд░реНрдХ рдХреЛ рд╕рдВрднрд╛рд╡реНрдпрддрд╛ рд╡рд┐рддрд░рдг рдХреЛ рдореЙрдбрд▓ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдкреНрд░рддреНрдпрдХреНрд╖ рд╡рд┐рддрд░рдг рдиреЗрдЯрд╡рд░реНрдХ рдмрдирд╛рдПрдВ рдЬреИрд╕реЗ:
- рдиреЗрдЯрд╡рд░реНрдХ рдореЗрдВ рдХрдИ рдЫрд┐рдкреА рд╣реБрдИ рдкрд░рддреЗрдВ рд╣реЛрддреА рд╣реИрдВ, рд╕рднреА рдиреНрдпреВрд░реЙрдиреНрд╕ рдХрд╛ рдЕрдкрдирд╛ рд╕рдХреНрд░рд┐рдпрдг рдХрд╛рд░реНрдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИ;
- рдЕрдВрддрд┐рдо рдкрд░рдд рдкрд░ рдиреНрдпреВрд░реЙрдиреНрд╕ рдХреА рдПрдХ рдРрд╕реА рд╕рдВрдЦреНрдпрд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ рдХрдХреНрд╖рд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ; рдЗрди рд╕рднреА рдиреНрдпреВрд░реЙрдиреНрд╕ рдХреЛ рд╕реЙрдлреНрдЯрдореИрдХреНрд╕ рдкрд░рдд рдпрд╛ рд╕рдореВрд╣ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ред
рд╕реЙрдлреНрдЯрдореИрдХреНрд╕-рд╕рдореВрд╣ рдХреЗ рдиреНрдпреВрд░реЙрдиреНрд╕ рдореЗрдВ
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдХреНрд░рд┐рдпрдг рд╕рдорд╛рд░реЛрд╣ рд╣реЛрдЧрд╛ (рдЗрд╕ рдЦрдВрдб рдореЗрдВ рдореИрдВ рдкрд░рдд рд╕реВрдЪрдХрд╛рдВрдХ рдХреЛ рдЫреЛрдбрд╝ рджреВрдВрдЧрд╛, рдпрд╣ рдирд┐рд╣рд┐рдд рд╣реИ рдХрд┐ рдпрд╣ рдЕрдВрддрд┐рдо рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ
рдПрди рдиреНрдпреВрд░реЙрдиреНрд╕ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ):
i-th рдиреНрдпреВрд░реЙрди рдХреЗ рд▓рд┐рдП
рдпрд╣ рд╕реВрддреНрд░ рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдиреНрдпреВрд░реЙрди рдХрд╛ рдЙрддреНрдкрд╛рджрди рд╕реЙрдлреНрдЯрдореИрдХреНрд╕ рд╕рдореВрд╣ рдХреЗ рдЕрдиреНрдп рд╕рднреА рдиреНрдпреВрд░реЙрдиреНрд╕ рдХреЗ рдЬреЛрдбрд╝ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдкреВрд░реЗ рд╕рдореВрд╣ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдорд╛рдиреЛрдВ рдХрд╛ рдпреЛрдЧ рдПрдХрддрд╛ рд╣реИред рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреА рд╕реБрдВрджрд░рддрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рдпреЛрдЬрдХ рдореЗрдВ i-th рдиреНрдпреВрд░реЙрди рдХрд╛ рдЖрдВрд╢рд┐рдХ рд╡реНрдпреБрддреНрдкрдиреНрди рдмрд░рд╛рдмрд░ рд╣реИ:
рд╣рдо
рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рд╕реЗ
IF рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ:
рд╕реЙрдлреНрдЯрдореИрдХреНрд╕ рдлрд╝рдВрдХреНрд╢рдВрд╕ рд▓рд╛рдЧреВ рдХрд░реЗрдВрдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐
double Compute(double x)
рд╡рд┐рдзрд┐ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЖрдорддреМрд░ рдкрд░ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕реЙрдлреНрдЯрдореИрдХреНрд╕ рдкрд░рдд рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рд╕рдореВрд╣ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдореВрд▓реНрдпреЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рдирд╛ рд╕рд╕реНрддрд╛ рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рдкреВрд░реНрдгрддрд╛ рдХреЗ рд▓рд┐рдП, рдФрд░ рд╕рд┐рд░реНрдл рдорд╛рдорд▓реЗ рдореЗрдВ, рдЗрд╕реЗ рд░рд╣рдиреЗ рджреЛ)
internal class SoftMaxActivationFunction : IFunction { private ILayer _layer = null; private int _ownPosition = 0; internal SoftMaxActivationFunction(ILayer layer, int ownPosition) { _layer = layer; _ownPosition = ownPosition; } public double Compute(double x) { double numerator = Math.Exp(x); double denominator = numerator; for (int i = 0; i < _layer.Neurons.Length; i++) { if (i == _ownPosition) { continue; } denominator += Math.Exp(_layer.Neurons[i].LastNET); } return numerator/denominator; } public double ComputeFirstDerivative(double x) { double y = Compute(x); return y*(1 - y); } public double ComputeSecondDerivative(double x) { throw new NotImplementedException(); } }
рддреНрд░реБрдЯрд┐ рд╕рдорд╛рд░реЛрд╣
рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдо рдПрдХ рдиреЗрдЯрд╡рд░реНрдХ рдЖрдЙрдЯрдкреБрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗ рдЬреЛ рдХрд┐ рд╕рдВрднрд╛рд╡реНрдпрддрд╛ рд╡рд┐рддрд░рдг рдХреЛ рдореЙрдбрд▓ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рджреЛ рдкреНрд░рд╛рдпрд┐рдХрддрд╛ рд╡рд┐рддрд░рдг рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╣реА рдорд╛рдк рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рдЙрдкрд╛рдп рдХреЗ рд░реВрдк рдореЗрдВ
рдХреНрд░реЙрд╕ рдПрдиреНрдЯреНрд░рд╛рдкреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:

- рдЯреА - рд╡рд░реНрддрдорд╛рди рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдЖрдЙрдЯрдкреБрдЯ
- рд╡рд╛рдИ - рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЖрдЙрдЯрдкреБрдЯ
рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдиреЗрдЯрд╡рд░реНрдХ рддреНрд░реБрдЯрд┐ рдХреА рдЧрдгрдирд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рдЬрд╛рддреА рд╣реИ:

рдкреВрд░реЗ рдореЙрдбрд▓ рдХреА рднрд╡реНрдпрддрд╛ рдХрд╛ рдПрд╣рд╕рд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдпрд╣ рджреЗрдЦрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рдХрд┐ рдХреИрд╕реЗ рдЧреНрд░реЗрдбрд┐рдПрдВрдЯ рдХреА рдЧрдгрдирд╛ рдЖрдЙрдЯрдкреБрдЯ рдЖрдпрд╛рдореЛрдВ рдпрд╛ рдиреНрдпреВрд░реЙрди рдореЗрдВ рд╕реЗ рдПрдХ рд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИред "рдЖрдЙрдЯрдкреБрдЯ рд▓реЗрдпрд░" рдЕрдиреБрднрд╛рдЧ рдореЗрдВ
рдкрд┐рдЫрд▓реА рдкреЛрд╕реНрдЯ рдореЗрдВ, рдпрд╣ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдХрд╛рд░реНрдп dC / dz_i рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдо рд╣реИ, рд╣рдо рдЕрднреА рд╕реЗ рдЬрд╛рд░реА рд░рдЦреЗрдВрдЧреЗ:
рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдиреНрдпреВрд░реЙрди рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рдХрд░рдВрдЯ рдХрд╛ рдпреЛрдЬрдХ рд╣реЛрддрд╛ рд╣реИ, рд╣рдореЗрдВ рдкреВрд░реА рд░рд╛рд╢рд┐ рдХреЛ рдЕрд▓рдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рд▓рд╛рдЧрдд рдлрд╝рдВрдХреНрд╢рди рдХреЗрд╡рд▓ рдиреНрдпреВрд░реЙрдиреНрд╕ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдХреЗрд╡рд▓ рдПрдбрд░реЛрдВ рдкрд░ рдЖрдЙрдЯрдкреБрдЯ, рдпрд╣ рджреЛ рдЖрдВрд╢рд┐рдХ рдбреЗрд░рд┐рд╡реЗрдЯрд┐рд╡ рдореЗрдВ рд╡рд┐рдШрдЯрд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рд░рд╛рд╢рд┐ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рд╕рджрд╕реНрдп рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ (рдореБрдЦреНрдп рдмрд╛рдд рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдирд╛ рд╣реИ, рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рдореВрд╣ рдХреЗ рд╕реЙрдлреНрдЯрдореИрдХреНрд╕ рдиреНрдпреВрд░реЙрдиреНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рддрд╛ рд╣реИ, рдФрд░ рдореИрдВ рд╡рд░реНрддрдорд╛рди рдиреНрдпреВрд░реЙрди рд╣реИ)



рдЕрдВрддрд┐рдо рдкрд░рд┐рд╡рд░реНрддрди рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рд╕реЙрдлреНрдЯрдореИрдХреНрд╕ рд╕рдореВрд╣ рдХреЗ рдиреНрдпреВрд░реЙрдиреНрд╕ рдХреА рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЖрдЙрдЯрдкреБрдЯ рд╡реЗрдХреНрдЯрд░ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХрд╛ рдпреЛрдЧ рдПрдХрддрд╛ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдирдореВрдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЕрдиреНрдпрдерд╛ рдЧреНрд░реЗрдбрд┐рдПрдВрдЯ рдХреА рд╕рд╣реА рдЧрдгрдирд╛ рдирд╣реАрдВ рдХреА рдЬрд╛рдПрдЧреА!
рд╣рдо рдкрд╣рд▓реЗ рдХреЗ рд╕рдорд╛рди рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВ:
рдХреНрд░реЙрд╕ рдПрдВрдЯреНрд░реЙрдкреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди internal class CrossEntropy : IMetrics<double> { internal CrossEntropy() { }
рд╕реЙрдлреНрдЯрдореИрдХреНрд╕ рдкрд░рдд
рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛, рдЖрдкрдХреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкрд░рдд рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдмрд╕ рдКрдкрд░ рджрд┐рдЦрд╛рдП рдЧрдП рд╕рдХреНрд░рд┐рдпрдг рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдкреНрд░рддреНрдпрдХреНрд╖ рд╡рд┐рддрд░рдг рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рдореЗрдВ рдЕрдВрддрд┐рдо рдкрд░рдд рдмрдирд╛рдПрдВ рдФрд░ рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛ рдХреЛ рд╕реЙрдлреНрдЯрдореИрдХреНрд╕ рдкрд░рдд рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рдкрд╛рд╕ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рддрдм рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╣рд░ рдХреА рдЧрдгрдирд╛ рдкреНрд░рддреНрдпреЗрдХ рдиреНрдпреВрд░реЙрди рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╕рдордп рдХреА рдЬрд╛рдПрдЧреАред рд╕рдХреНрд░рд┐рдпрдг, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ
double[] ComputeOutput(double[] inputVector)
рдареАрдХ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ:
public double[] ComputeOutput(double[] inputVector) { double[] outputVector = inputVector; for (int i = 0; i < _layers.Length; i++) { outputVector = _layers[i].Compute(outputVector); } return outputVector; }
рдлрд┐рд░, рдХреНрдпреЛрдВрдХрд┐ рдиреЗрдЯрд╡рд░реНрдХ рд╕реАрдзреЗ рдиреНрдпреВрд░реЙрди рдХреА рдЧрдгрдирд╛ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд░рдд рдореЗрдВ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ, рдПрдХ рдмрд╛рд░ рдЧрдгрдирд╛ рдХреА рдЧрдИ рд╕рдХреНрд░рд┐рдпрдг рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╣рд░ рдХреЛ рдмрдирд╛рдирд╛ рд╕рдВрднрд╡ рд╣реИред
рд╕реЙрдлреНрдЯрдореИрдХреНрд╕ рдкрд░рдд internal class SoftmaxFullConnectedLayer : FullConnectedLayer { internal SoftmaxFullConnectedLayer(int inputDimension, int size) { _neurons = new INeuron[size]; for (int i = 0; i < size; i++) { IFunction smFunction = new SoftMaxActivationFunction(this, i); _neurons[i] = new InLayerFullConnectedNeuron(inputDimension, smFunction); } } public override double[] Compute(double[] inputVector) { double[] numerators = new double[_neurons.Length]; double denominator = 0; for (int i = 0; i < _neurons.Length; i++) { numerators[i] = Math.Exp(_neurons[i].NET(inputVector)); denominator += numerators[i]; } double[] output = new double[_neurons.Length]; for (int i = 0; i < _neurons.Length; i++) { output[i] = numerators[i]/denominator; _neurons[i].LastState = output[i]; } return output; } }
рдкрд░рд┐рдгрд╛рдо
рддреЛ, рд▓рд╛рдкрддрд╛ рд╣рд┐рд╕реНрд╕реЗ рддреИрдпрд╛рд░ рд╣реИрдВ, рдФрд░ рдЖрдк
рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВ рдПрдХ рд╣реА рд╕реАрдзреЗ рд╡рд┐рддрд░рдг рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдмрд╕ рдПрдХ рдЕрд▓рдЧ
рдирд┐рд░реНрдорд╛рддрд╛ рдХреЗ рд╕рд╛рде ред
рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдЙрджрд╛рд╣рд░рдг