Искусственный нейрон аксон это

From Wikipedia, the free encyclopedia

An artificial neuron is a mathematical function conceived as a model of biological neurons, a neural network. Artificial neurons are elementary units in an artificial neural network.[1] The artificial neuron receives one or more inputs (representing excitatory postsynaptic potentials and inhibitory postsynaptic potentials at neural dendrites) and sums them to produce an output (or activation, representing a neuron’s action potential which is transmitted along its axon). Usually each input is separately weighted, and the sum is passed through a non-linear function known as an activation function or transfer function[clarification needed]. The transfer functions usually have a sigmoid shape, but they may also take the form of other non-linear functions, piecewise linear functions, or step functions. They are also often monotonically increasing, continuous, differentiable and bounded. Non-monotonic, unbounded and oscillating activation functions with multiple zeros that outperform sigmoidal and ReLU like activation functions on many tasks have also been recently explored. The thresholding function has inspired building logic gates referred to as threshold logic; applicable to building logic circuits resembling brain processing. For example, new devices such as memristors have been extensively used to develop such logic in recent times.[2]

The artificial neuron transfer function should not be confused with a linear system’s transfer function.

Artificial neurons can also refer to artificial cells in neuromorphic engineering (see below) that are similar to natural physical neurons.

Basic structure[edit]

For a given artificial neuron k, let there be m + 1 inputs with signals x0 through xm and weights wk0 through wkm. Usually, the x0 input is assigned the value +1, which makes it a bias input with wk0 = bk. This leaves only m actual inputs to the neuron: from x1 to xm.

The output of the kth neuron is:

y_{k}=varphi left(sum _{{j=0}}^{m}w_{{kj}}x_{j}right)

Where varphi (phi) is the transfer function (commonly a threshold function).

Artificial neuron.png

The output is analogous to the axon of a biological neuron, and its value propagates to the input of the next layer, through a synapse. It may also exit the system, possibly as part of an output vector.

It has no learning process as such. Its transfer function weights are calculated and threshold value are predetermined.

Types[edit]

Depending on the specific model used they may be called a semi-linear unit, Nv neuron, binary neuron, linear threshold function, or McCulloch–Pitts (MCP) neuron.

Simple artificial neurons, such as the McCulloch–Pitts model, are sometimes described as «caricature models», since they are intended to reflect one or more neurophysiological observations, but without regard to realism.[3]

[icon]

This section needs expansion. You can help by adding to it. (May 2017)

Biological models[edit]

Neuron and myelinated axon, with signal flow from inputs at dendrites to outputs at axon terminals

Artificial neurons are designed to mimic aspects of their biological counterparts. However a significant performance gap exists between biological and artificial neural networks. In particular single biological neurons in the human brain with oscillating activation function capable of learning the XOR function have been discovered.[4]

  • Dendrites – In a biological neuron, the dendrites act as the input vector. These dendrites allow the cell to receive signals from a large (>1000) number of neighboring neurons. As in the above mathematical treatment, each dendrite is able to perform «multiplication» by that dendrite’s «weight value.» The multiplication is accomplished by increasing or decreasing the ratio of synaptic neurotransmitters to signal chemicals introduced into the dendrite in response to the synaptic neurotransmitter. A negative multiplication effect can be achieved by transmitting signal inhibitors (i.e. oppositely charged ions) along the dendrite in response to the reception of synaptic neurotransmitters.
  • Soma – In a biological neuron, the soma acts as the summation function, seen in the above mathematical description. As positive and negative signals (exciting and inhibiting, respectively) arrive in the soma from the dendrites, the positive and negative ions are effectively added in summation, by simple virtue of being mixed together in the solution inside the cell’s body.
  • Axon – The axon gets its signal from the summation behavior which occurs inside the soma. The opening to the axon essentially samples the electrical potential of the solution inside the soma. Once the soma reaches a certain potential, the axon will transmit an all-in signal pulse down its length. In this regard, the axon behaves as the ability for us to connect our artificial neuron to other artificial neurons.

Unlike most artificial neurons, however, biological neurons fire in discrete pulses. Each time the electrical potential inside the soma reaches a certain threshold, a pulse is transmitted down the axon. This pulsing can be translated into continuous values. The rate (activations per second, etc.) at which an axon fires converts directly into the rate at which neighboring cells get signal ions introduced into them. The faster a biological neuron fires, the faster nearby neurons accumulate electrical potential (or lose electrical potential, depending on the «weighting» of the dendrite that connects to the neuron that fired). It is this conversion that allows computer scientists and mathematicians to simulate biological neural networks using artificial neurons which can output distinct values (often from −1 to 1).

Encoding[edit]

Research has shown that unary coding is used in the neural circuits responsible for birdsong production.[5][6] The use of unary in biological networks is presumably due to the inherent simplicity of the coding. Another contributing factor could be that unary coding provides a certain degree of error correction.[7]

Physical artificial cells[edit]

There is research and development into physical artificial neurons – organic and inorganic.

For example, some artificial neurons can receive[8][9] and release dopamine (chemical signals rather than electrical signals) and communicate with natural rat muscle and brain cells, with potential for use in BCIs/prosthetics.[10][11]

Low-power biocompatible memristors may enable construction of artificial neurons which function at voltages of biological action potentials and could be used to directly process biosensing signals, for neuromorphic computing and/or direct communication with biological neurons.[12][13][14]

Organic neuromorphic circuits made out of polymers, coated with an ion-rich gel to enable a material to carry an electric charge like real neurons, have been built into a robot, enabling it to learn sensorimotorically within the real world, rather than via simulations or virtually.[15][16] Moreover, artificial spiking neurons made of soft matter (polymers) can operate in biologically relevant environments and enable the synergetic communication between the artificial and biological domains.[17][18]

History[edit]

The first artificial neuron was the Threshold Logic Unit (TLU), or Linear Threshold Unit,[19] first proposed by Warren McCulloch and Walter Pitts in 1943. The model was specifically targeted as a computational model of the «nerve net» in the brain.[20] As a transfer function, it employed a threshold, equivalent to using the Heaviside step function. Initially, only a simple model was considered, with binary inputs and outputs, some restrictions on the possible weights, and a more flexible threshold value. Since the beginning it was already noticed that any boolean function could be implemented by networks of such devices, what is easily seen from the fact that one can implement the AND and OR functions, and use them in the disjunctive or the conjunctive normal form.
Researchers also soon realized that cyclic networks, with feedbacks through neurons, could define dynamical systems with memory, but most of the research concentrated (and still does) on strictly feed-forward networks because of the smaller difficulty they present.

One important and pioneering artificial neural network that used the linear threshold function was the perceptron, developed by Frank Rosenblatt. This model already considered more flexible weight values in the neurons, and was used in machines with adaptive capabilities. The representation of the threshold values as a bias term was introduced by Bernard Widrow in 1960 – see ADALINE.

In the late 1980s, when research on neural networks regained strength, neurons with more continuous shapes started to be considered. The possibility of differentiating the activation function allows the direct use of the gradient descent and other optimization algorithms for the adjustment of the weights. Neural networks also started to be used as a general function approximation model. The best known training algorithm called backpropagation has been rediscovered several times but its first development goes back to the work of Paul Werbos.[21][22]

Types of transfer functions[edit]

The transfer function (activation function) of a neuron is chosen to have a number of properties which either enhance or simplify the network containing the neuron. Crucially, for instance, any multilayer perceptron using a linear transfer function has an equivalent single-layer network; a non-linear function is therefore necessary to gain the advantages of a multi-layer network.[citation needed]

Below, u refers in all cases to the weighted sum of all the inputs to the neuron, i.e. for n inputs,

u=sum _{{i=1}}^{n}w_{i}x_{i}

where w is a vector of synaptic weights and x is a vector of inputs.

Step function[edit]

The output y of this transfer function is binary, depending on whether the input meets a specified threshold, θ. The «signal» is sent, i.e. the output is set to one, if the activation meets the threshold.

y={begin{cases}1&{text{if }}ugeq theta \0&{text{if }}u<theta end{cases}}

This function is used in perceptrons and often shows up in many other models. It performs a division of the space of inputs by a hyperplane. It is specially useful in the last layer of a network intended to perform binary classification of the inputs. It can be approximated from other sigmoidal functions by assigning large values to the weights.

Linear combination[edit]

In this case, the output unit is simply the weighted sum of its inputs plus a bias term. A number of such linear neurons perform a linear transformation of the input vector. This is usually more useful in the first layers of a network. A number of analysis tools exist based on linear models, such as harmonic analysis, and they can all be used in neural networks with this linear neuron. The bias term allows us to make affine transformations to the data.

See: Linear transformation, Harmonic analysis, Linear filter, Wavelet, Principal component analysis, Independent component analysis, Deconvolution.

Sigmoid[edit]

A fairly simple non-linear function, the sigmoid function such as the logistic function also has an easily calculated derivative, which can be important when calculating the weight updates in the network. It thus makes the network more easily manipulable mathematically, and was attractive to early computer scientists who needed to minimize the computational load of their simulations. It was previously commonly seen in multilayer perceptrons. However, recent work has shown sigmoid neurons to be less effective than rectified linear neurons. The reason is that the gradients computed by the backpropagation algorithm tend to diminish towards zero as activations propagate through layers of sigmoidal neurons, making it difficult to optimize neural networks using multiple layers of sigmoidal neurons.

Rectifier[edit]

In the context of artificial neural networks, the rectifier or ReLU (Rectified Linear Unit) is an activation function defined as the positive part of its argument:

{displaystyle f(x)=x^{+}=max(0,x),}

where x is the input to a neuron. This is also known as a ramp function and is analogous to half-wave rectification in electrical engineering. This activation function was first introduced to a dynamical network by Hahnloser et al. in a 2000 paper in Nature[23] with strong biological motivations and mathematical justifications.[24] It has been demonstrated for the first time in 2011 to enable better training of deeper networks,[25] compared to the widely used activation functions prior to 2011, i.e., the logistic sigmoid (which is inspired by probability theory; see logistic regression) and its more practical[26] counterpart, the hyperbolic tangent.

A commonly used variant of the ReLU activation function is the Leaky ReLU which allows a small, positive gradient when the unit is not active:

{displaystyle f(x)={begin{cases}x&{text{if }}x>0,\ax&{text{otherwise}}.end{cases}}}

where x is the input to the neuron and a is a small positive constant (in the original paper the value 0.01 was used for a).[27]

Pseudocode algorithm[edit]

The following is a simple pseudocode implementation of a single TLU which takes boolean inputs (true or false), and returns a single boolean output when activated. An object-oriented model is used. No method of training is defined, since several exist. If a purely functional model were used, the class TLU below would be replaced with a function TLU with input parameters threshold, weights, and inputs that returned a boolean value.

class TLU defined as:
    data member threshold : number
    data member weights : list of numbers of size X

    function member fire(inputs : list of booleans of size X) : boolean defined as:
        variable T : number
        T  0
        for each i in 1 to X do
            if inputs(i) is true then
                T  T + weights(i)
            end if
        end for each
        if T > threshold then
            return true
        else:
            return false
        end if
    end function
end class

See also[edit]

  • Binding neuron
  • Connectionism

References[edit]

  1. ^ «Neuromorphic Circuits With Neural Modulation Enhancing the Information Content of Neural Signaling | International Conference on Neuromorphic Systems 2020». doi:10.1145/3407197.3407204. S2CID 220794387.
  2. ^ Maan, A. K.; Jayadevi, D. A.; James, A. P. (1 January 2016). «A Survey of Memristive Threshold Logic Circuits». IEEE Transactions on Neural Networks and Learning Systems. PP (99): 1734–1746. arXiv:1604.07121. Bibcode:2016arXiv160407121M. doi:10.1109/TNNLS.2016.2547842. ISSN 2162-237X. PMID 27164608. S2CID 1798273.
  3. ^
    F. C. Hoppensteadt and E. M. Izhikevich (1997). Weakly connected neural networks. Springer. p. 4. ISBN 978-0-387-94948-2.
  4. ^ Gidon, Albert; Zolnik, Timothy Adam; Fidzinski, Pawel; Bolduan, Felix; Papoutsi, Athanasia; Poirazi, Panayiota; Holtkamp, Martin; Vida, Imre; Larkum, Matthew Evan (2020-01-03). «Dendritic action potentials and computation in human layer 2/3 cortical neurons». Science. 367 (6473): 83–87. Bibcode:2020Sci…367…83G. doi:10.1126/science.aax6239. PMID 31896716. S2CID 209676937.
  5. ^ Squire, L.; Albright, T.; Bloom, F.; Gage, F.; Spitzer, N., eds. (October 2007). Neural network models of birdsong production, learning, and coding (PDF). New Encyclopedia of Neuroscience: Elservier. Archived from the original (PDF) on 2015-04-12. Retrieved 12 April 2015.
  6. ^ Moore, J.M.; et al. (2011). «Motor pathway convergence predicts syllable repertoire size in oscine birds». Proc. Natl. Acad. Sci. USA. 108 (39): 16440–16445. Bibcode:2011PNAS..10816440M. doi:10.1073/pnas.1102077108. PMC 3182746. PMID 21918109.
  7. ^ Potluri, Pushpa Sree (26 November 2014). «Error Correction Capacity of Unary Coding». arXiv:1411.7406 [cs.IT].
  8. ^ Kleiner, Kurt (25 August 2022). «Making computer chips act more like brain cells». Knowable Magazine | Annual Reviews. doi:10.1146/knowable-082422-1. Retrieved 23 September 2022.
  9. ^ Keene, Scott T.; Lubrano, Claudia; Kazemzadeh, Setareh; Melianas, Armantas; Tuchman, Yaakov; Polino, Giuseppina; Scognamiglio, Paola; Cinà, Lucio; Salleo, Alberto; van de Burgt, Yoeri; Santoro, Francesca (September 2020). «A biohybrid synapse with neurotransmitter-mediated plasticity». Nature Materials. 19 (9): 969–973. Bibcode:2020NatMa..19..969K. doi:10.1038/s41563-020-0703-y. ISSN 1476-4660. PMID 32541935. S2CID 219691307.
    • University press release: «Researchers develop artificial synapse that works with living cells». Stanford University via medicalxpress.com. Retrieved 23 September 2022.

  10. ^ «Artificial neuron swaps dopamine with rat brain cells like a real one». New Scientist. Retrieved 16 September 2022.
  11. ^ Wang, Ting; Wang, Ming; Wang, Jianwu; Yang, Le; Ren, Xueyang; Song, Gang; Chen, Shisheng; Yuan, Yuehui; Liu, Ruiqing; Pan, Liang; Li, Zheng; Leow, Wan Ru; Luo, Yifei; Ji, Shaobo; Cui, Zequn; He, Ke; Zhang, Feilong; Lv, Fengting; Tian, Yuanyuan; Cai, Kaiyu; Yang, Bowen; Niu, Jingyi; Zou, Haochen; Liu, Songrui; Xu, Guoliang; Fan, Xing; Hu, Benhui; Loh, Xian Jun; Wang, Lianhui; Chen, Xiaodong (8 August 2022). «A chemically mediated artificial neuron». Nature Electronics. 5 (9): 586–595. doi:10.1038/s41928-022-00803-0. ISSN 2520-1131. S2CID 251464760.
  12. ^ «Scientists create tiny devices that work like the human brain». The Independent. April 20, 2020. Archived from the original on April 24, 2020. Retrieved May 17, 2020.
  13. ^ «Researchers unveil electronics that mimic the human brain in efficient learning». phys.org. Archived from the original on May 28, 2020. Retrieved May 17, 2020.
  14. ^ Fu, Tianda; Liu, Xiaomeng; Gao, Hongyan; Ward, Joy E.; Liu, Xiaorong; Yin, Bing; Wang, Zhongrui; Zhuo, Ye; Walker, David J. F.; Joshua Yang, J.; Chen, Jianhan; Lovley, Derek R.; Yao, Jun (April 20, 2020). «Bioinspired bio-voltage memristors». Nature Communications. 11 (1): 1861. Bibcode:2020NatCo..11.1861F. doi:10.1038/s41467-020-15759-y. PMC 7171104. PMID 32313096.
  15. ^ Bolakhe, Saugat. «Lego Robot with an Organic ‘Brain’ Learns to Navigate a Maze». Scientific American. Retrieved 1 February 2022.
  16. ^ Krauhausen, Imke; Koutsouras, Dimitrios A.; Melianas, Armantas; Keene, Scott T.; Lieberth, Katharina; Ledanseur, Hadrien; Sheelamanthula, Rajendar; Giovannitti, Alexander; Torricelli, Fabrizio; Mcculloch, Iain; Blom, Paul W. M.; Salleo, Alberto; Burgt, Yoeri van de; Gkoupidenis, Paschalis (December 2021). «Organic neuromorphic electronics for sensorimotor integration and learning in robotics». Science Advances. 7 (50): eabl5068. Bibcode:2021SciA….7.5068K. doi:10.1126/sciadv.abl5068. hdl:10754/673986. PMC 8664264. PMID 34890232. S2CID 245046482.
  17. ^ Sarkar, Tanmoy; Lieberth, Katharina; Pavlou, Aristea; Frank, Thomas; Mailaender, Volker; McCulloch, Iain; Blom, Paul W. M.; Torriccelli, Fabrizio; Gkoupidenis, Paschalis (7 November 2022). «An organic artificial spiking neuron for in situ neuromorphic sensing and biointerfacing». Nature Electronics. 5 (11): 774–783. doi:10.1038/s41928-022-00859-y. ISSN 2520-1131. S2CID 253413801.
  18. ^ «Artificial neurons emulate biological counterparts to enable synergetic operation». Nature Electronics. 5 (11): 721–722. 10 November 2022. doi:10.1038/s41928-022-00862-3. ISSN 2520-1131. S2CID 253469402.
  19. ^ Martin Anthony (January 2001). Discrete Mathematics of Neural Networks: Selected Topics. SIAM. pp. 3–. ISBN 978-0-89871-480-7.
  20. ^ Charu C. Aggarwal (25 July 2014). Data Classification: Algorithms and Applications. CRC Press. pp. 209–. ISBN 978-1-4665-8674-1.
  21. ^ Paul Werbos, Beyond Regression: New Tools for Prediction and Analysis in the Behavioral Sciences. PhD thesis, Harvard University, 1974
  22. ^ Werbos, P.J. (1990). «Backpropagation through time: what it does and how to do it». Proceedings of the IEEE. 78 (10): 1550–1560. doi:10.1109/5.58337. ISSN 0018-9219. S2CID 18470994.
  23. ^ Hahnloser, Richard H. R.; Sarpeshkar, Rahul; Mahowald, Misha A.; Douglas, Rodney J.; Seung, H. Sebastian (2000). «Digital selection and analogue amplification coexist in a cortex-inspired silicon circuit». Nature. 405 (6789): 947–951. Bibcode:2000Natur.405..947H. doi:10.1038/35016072. ISSN 0028-0836. PMID 10879535. S2CID 4399014.
  24. ^ R Hahnloser, H.S. Seung (2001). Permitted and Forbidden Sets in Symmetric Threshold-Linear Networks. NIPS 2001.{{cite conference}}: CS1 maint: uses authors parameter (link)
  25. ^ Xavier Glorot, Antoine Bordes and Yoshua Bengio (2011). Deep sparse rectifier neural networks (PDF). AISTATS.{{cite conference}}: CS1 maint: uses authors parameter (link)
  26. ^ Yann LeCun, Leon Bottou, Genevieve B. Orr and Klaus-Robert Müller (1998). «Efficient BackProp» (PDF). In G. Orr; K. Müller (eds.). Neural Networks: Tricks of the Trade. Springer.{{cite encyclopedia}}: CS1 maint: uses authors parameter (link)
  27. ^ Andrew L. Maas, Awni Y. Hannun, Andrew Y. Ng (2014). Rectifier Nonlinearities Improve Neural Network Acoustic Models.

Further reading[edit]

  • McCulloch, Warren S.; Pitts, Walter (1943). «A logical calculus of the ideas immanent in nervous activity». Bulletin of Mathematical Biophysics. 5 (4): 115–133. doi:10.1007/bf02478259.
  • Samardak, A.; Nogaret, A.; Janson, N. B.; Balanov, A. G.; Farrer, I.; Ritchie, D. A. (2009-06-05). «Noise-Controlled Signal Transmission in a Multithread Semiconductor Neuron». Physical Review Letters. 102 (22): 226802. Bibcode:2009PhRvL.102v6802S. doi:10.1103/physrevlett.102.226802. PMID 19658886. S2CID 11211062.

External links[edit]

  • Artifical [sic] neuron mimicks function of human cells
  • McCulloch-Pitts Neurons (Overview)

В предыдущей главе мы ознакомились с такими понятиями, как искусственный интеллект, машинное обучение и искусственные нейронные сети.

В этой главе я детально опишу модель искусственного нейрона, расскажу о подходах к обучению сети, а также опишу некоторые известные виды искусственных нейронных сетей, которые мы будем изучать в следующих главах.

Упрощение

В прошлой главе я постоянно говорил о каких-то серьезных упрощениях. Причина упрощений заключается в том, что никакие современные компьютеры не могут быстро моделировать такие сложные системы, как наш мозг. К тому же, как я уже говорил, наш мозг переполнен различными биологическими механизмами, не относящиеся к обработке информации.

Нам нужна модель преобразования входного сигнала в нужный нам выходной. Все остальное нас не волнует. Начинаем упрощать.

Биологическая структура → схема

В предыдущей главе вы поняли, насколько сложно устроены биологические нейронные сети и биологические нейроны. Вместо изображения нейронов в виде чудовищ с щупальцами давайте просто будем рисовать схемы.

Вообще говоря, есть несколько способов графического изображения нейронных сетей и нейронов. Здесь мы будем изображать искусственные нейроны в виде кружков.

Вместо сложного переплетения входов и выходов будем использовать стрелки, обозначающие направление движения сигнала.

Таким образом искусственная нейронная сеть может быть представлена в виде совокупности кружков (искусственных нейронов), связанных стрелками.

Электрические сигналы → числа

В реальной биологической нейронной сети от входов сети к выходам передается электрический сигнал. В процессе прохода по нейронной сети он может изменяться.

Электрический сигнал всегда будет электрическим сигналом. Концептуально ничего не изменяется. Но что же тогда меняется? Меняется величина этого электрического сигнала (сильнее/слабее). А любую величину всегда можно выразить числом (больше/меньше).

В нашей модели искусственной нейронной сети нам совершенно не нужно реализовывать поведение электрического сигнала, так как от его реализации все равно ничего зависеть не будет.

На входы сети мы будем подавать какие-то числа, символизирующие величины электрического сигнала, если бы он был. Эти числа будут продвигаться по сети и каким-то образом меняться. На выходе сети мы получим какое-то результирующее число, являющееся откликом сети.

Для удобства все равно будем называть наши числа, циркулирующие в сети, сигналами.

Синапсы → веса связей

Вспомним картинку из первой главы, на которой цветом были изображены связи между нейронами – синапсы. Синапсы могут усиливать или ослаблять проходящий по ним электрический сигнал.

Давайте характеризовать каждую такую связь определенным числом, называемым весом данной связи. Сигнал, прошедший через данную связь, умножается на вес соответствующей связи.

Это ключевой момент в концепции искусственных нейронных сетей, я объясню его подробнее. Посмотрите на картинку ниже. Теперь каждой черной стрелке (связи) на этой картинке соответствует некоторое число ​( w_i )​ (вес связи). И когда сигнал проходит по этой связи, его величина умножается на вес этой связи.

На приведенном выше рисунке вес стоит не у каждой связи лишь потому, что там нет места для обозначений. В реальности у каждой ​( i )​-ой связи свой собственный ​( w_i )​-ый вес.

Искусственный нейрон

Теперь мы переходим к рассмотрению внутренней структуры искусственного нейрона и того, как он преобразует поступающий на его входы сигнал.

На рисунке ниже представлена полная модель искусственного нейрона.

Не пугайтесь, ничего сложного здесь нет. Давайте рассмотрим все подробно слева направо.

Входы, веса и сумматор

У каждого нейрона, в том числе и у искусственного, должны быть какие-то входы, через которые он принимает сигнал. Мы уже вводили понятие весов, на которые умножаются сигналы, проходящие по связи. На картинке выше веса изображены кружками.

Поступившие на входы сигналы умножаются на свои веса. Сигнал первого входа ​( x_1 )​ умножается на соответствующий этому входу вес ​( w_1 )​. В итоге получаем ​( x_1w_1 )​. И так до ​( n )​-ого входа. В итоге на последнем входе получаем ​( x_nw_n )​.

Теперь все произведения передаются в сумматор. Уже исходя из его названия можно понять, что он делает. Он просто суммирует все входные сигналы, умноженные на соответствующие веса:

[ x_1w_1+x_2w_2+cdots+x_nw_n = sumlimits^n_{i=1}x_iw_i ]

Результатом работы сумматора является число, называемое взвешенной суммой.

Взвешенная сумма (Weighted sum) (​( net )​) — сумма входных сигналов, умноженных на соответствующие им веса.

[ net=sumlimits^n_{i=1}x_iw_i ]

Роль сумматора очевидна – он агрегирует все входные сигналы (которых может быть много) в какое-то одно число – взвешенную сумму, которая характеризует поступивший на нейрон сигнал в целом. Еще взвешенную сумму можно представить как степень общего возбуждения нейрона.

Пример

Для понимания роли последнего компонента искусственного нейрона – функции активации – я приведу аналогию.

Давайте рассмотрим один искусственный нейрон. Его задача – решить, ехать ли отдыхать на море. Для этого на его входы мы подаем различные данные. Пусть у нашего нейрона будет 4 входа:

  1. Стоимость поездки
  2. Какая на море погода
  3. Текущая обстановка с работой
  4. Будет ли на пляже закусочная

Все эти параметры будем характеризовать 0 или 1. Соответственно, если погода на море хорошая, то на этот вход подаем 1. И так со всеми остальными параметрами.

Если у нейрона есть четыре входа, то должно быть и четыре весовых коэффициента. В нашем примере весовые коэффициенты можно представить как показатели важности каждого входа, влияющие на общее решение нейрона. Веса входов распределим следующим образом:

  1. 5
  2. 4
  3. 1
  4. 1

Нетрудно заметить, что очень большую роль играют факторы стоимости и погоды на море (первые два входа). Они же и будут играть решающую роль при принятии нейроном решения.

Пусть на входы нашего нейрона мы подаем следующие сигналы:

  1. 1
  2. 0
  3. 0
  4. 1

Умножаем веса входов на сигналы соответствующих входов:

  1. 5
  2. 0
  3. 0
  4. 1

Взвешенная сумма для такого набора входных сигналов равна 6:

[ net=sumlimits^4_{i=1}x_iw_i = 5 + 0 + 0 + 1 =6 ]

Все классно, но что делать дальше? Как нейрон должен решить, ехать на море или нет? Очевидно, нам нужно как-то преобразовать нашу взвешенную сумму и получить ответ.

Вот на сцену выходит функция активации.

Функция активации

Просто так подавать взвешенную сумму на выход достаточно бессмысленно. Нейрон должен как-то обработать ее и сформировать адекватный выходной сигнал. Именно для этих целей и используют функцию активации.

Она преобразует взвешенную сумму в какое-то число, которое и является выходом нейрона (выход нейрона обозначим переменной ​( out )​).

Для разных типов искусственных нейронов используют самые разные функции активации. В общем случае их обозначают символом ​( phi(net) )​. Указание взвешенного сигнала в скобках означает, что функция активации принимает взвешенную сумму как параметр.

Функция активации (Activation function) (​( phi(net) )​) — функция, принимающая взвешенную сумму как аргумент. Значение этой функции и является выходом нейрона (​( out )​).

[ out=phi(net) ]

Далее мы подробно рассмотрим самые известные функции активации.

Функция единичного скачка

Самый простой вид функции активации. Выход нейрона может быть равен только 0 или 1. Если взвешенная сумма больше определенного порога ​( b )​, то выход нейрона равен 1. Если ниже, то 0.

Как ее можно использовать? Предположим, что мы поедем на море только тогда, когда взвешенная сумма больше или равна 5. Значит наш порог равен 5:

[ b=5 ]

В нашем примере взвешенная сумма равнялась 6, а значит выходной сигнал нашего нейрона равен 1. Итак, мы едем на море.

Однако если бы погода на море была бы плохой, а также поездка была бы очень дорогой, но имелась бы закусочная и обстановка с работой нормальная (входы: 0011), то взвешенная сумма равнялась бы 2, а значит выход нейрона равнялся бы 0. Итак, мы никуда не едем.

В общем, нейрон смотрит на взвешенную сумму и если она получается больше его порога, то нейрон выдает выходной сигнал, равный 1.

Графически эту функцию активации можно изобразить следующим образом.

На горизонтальной оси расположены величины взвешенной суммы. На вертикальной оси — значения выходного сигнала. Как легко видеть, возможны только два значения выходного сигнала: 0 или 1. Причем 0 будет выдаваться всегда от минус бесконечности и вплоть до некоторого значения взвешенной суммы, называемого порогом. Если взвешенная сумма равна порогу или больше него, то функция выдает 1. Все предельно просто.

Теперь запишем эту функцию активации математически. Почти наверняка вы сталкивались с таким понятием, как составная функция. Это когда мы под одной функцией объединяем несколько правил, по которым рассчитывается ее значение. В виде составной функции функция единичного скачка будет выглядеть следующим образом:

[ out(net) = begin{cases} 0, net < b \ 1, net geq b end{cases} ]

В этой записи нет ничего сложного. Выход нейрона (​( out )​) зависит от взвешенной суммы (​( net )​) следующим образом: если ​( net )​ (взвешенная сумма) меньше какого-то порога (​( b )​), то ​( out )​ (выход нейрона) равен 0. А если ​( net )​ больше или равен порогу ​( b )​, то ​( out )​ равен 1.

Сигмоидальная функция

На самом деле существует целое семейство сигмоидальных функций, некоторые из которых применяют в качестве функции активации в искусственных нейронах.

Все эти функции обладают некоторыми очень полезными свойствами, ради которых их и применяют в нейронных сетях. Эти свойства станут очевидными после того, как вы увидите графики этих функций.

Итак… самая часто используемая в нейронных сетях сигмоида — логистическая функция.

График этой функции выглядит достаточно просто. Если присмотреться, то можно увидеть некоторое подобие английской буквы ​( S )​, откуда и пошло название семейства этих функций.

А вот так она записывается аналитически:

[ out(net)=frac{1}{1+exp(-a cdot net)} ]

Что за параметр ​( a )​? Это какое-то число, которое характеризует степень крутизны функции. Ниже представлены логистические функции с разным параметром ​( a )​.

Вспомним наш искусственный нейрон, определяющий, надо ли ехать на море. В случае с функцией единичного скачка все было очевидно. Мы либо едем на море (1), либо нет (0).

Здесь же случай более приближенный к реальности. Мы до конца полностью не уверены (в особенности, если вы параноик) – стоит ли ехать? Тогда использование логистической функции в качестве функции активации приведет к тому, что вы будете получать цифру между 0 и 1. Причем чем больше взвешенная сумма, тем ближе выход будет к 1 (но никогда не будет точно ей равен). И наоборот, чем меньше взвешенная сумма, тем ближе выход нейрона будет к 0.

Например, выход нашего нейрона равен 0.8. Это значит, что он считает, что поехать на море все-таки стоит. Если бы его выход был бы равен 0.2, то это означает, что он почти наверняка против поездки на море.

Какие же замечательные свойства имеет логистическая функция?

  • она является «сжимающей» функцией, то есть вне зависимости от аргумента (взвешенной суммы), выходной сигнал всегда будет в пределах от 0 до 1
  • она более гибкая, чем функция единичного скачка – ее результатом может быть не только 0 и 1, но и любое число между ними
  • во всех точках она имеет производную, и эта производная может быть выражена через эту же функцию

Именно из-за этих свойств логистическая функция чаще всего используются в качестве функции активации в искусственных нейронах.

Гиперболический тангенс

Однако есть и еще одна сигмоида – гиперболический тангенс. Он применяется в качестве функции активации биологами для более реалистичной модели нервной клетки.

Такая функция позволяет получить на выходе значения разных знаков (например, от -1 до 1), что может быть полезным для ряда сетей.

Функция записывается следующим образом:

[ out(net) = tanhleft(frac{net}{a}right) ]

В данной выше формуле параметр ​( a )​ также определяет степень крутизны графика этой функции.

А вот так выглядит график этой функции.

Как видите, он похож на график логистической функции. Гиперболический тангенс обладает всеми полезными свойствами, которые имеет и логистическая функция.

Что мы узнали?

Теперь вы получили полное представление о внутренней структуре искусственного нейрона. Я еще раз приведу краткое описание его работы.

У нейрона есть входы. На них подаются сигналы в виде чисел. Каждый вход имеет свой вес (тоже число). Сигналы на входе умножаются на соответствующие веса. Получаем набор «взвешенных» входных сигналов.

Далее этот набор попадает в сумматор, которой просто складывает все входные сигналы, помноженные на веса. Получившееся число называют взвешенной суммой.

Затем взвешенная сумма преобразуется функцией активации и мы получаем выход нейрона.

Сформулируем теперь самое короткое описание работы нейрона – его математическую модель:

Математическая модель искусственного нейрона с ​( n )​ входами:

[ out=phileft(sumlimits^n_{i=1}x_iw_iright) ]

где
( phi )​ – функция активации
( sumlimits^n_{i=1}x_iw_i )​ – взвешенная сумма, как сумма ​( n )​ произведений входных сигналов на соответствующие веса.

Виды ИНС

Мы разобрались со структурой искусственного нейрона. Искусственные нейронные сети состоят из совокупности искусственных нейронов. Возникает логичный вопрос – а как располагать/соединять друг с другом эти самые искусственные нейроны?

Как правило, в большинстве нейронных сетей есть так называемый входной слой, который выполняет только одну задачу – распределение входных сигналов остальным нейронам. Нейроны этого слоя не производят никаких вычислений.

А дальше начинаются различия…

Однослойные нейронные сети

В однослойных нейронных сетях сигналы с входного слоя сразу подаются на выходной слой. Он производит необходимые вычисления, результаты которых сразу подаются на выходы.

Выглядит однослойная нейронная сеть следующим образом:

На этой картинке входной слой обозначен кружками (он не считается за слой нейронной сети), а справа расположен слой обычных нейронов.

Нейроны соединены друг с другом стрелками. Над стрелками расположены веса соответствующих связей (весовые коэффициенты).

Однослойная нейронная сеть (Single-layer neural network) — сеть, в которой сигналы от входного слоя сразу подаются на выходной слой, который и преобразует сигнал и сразу же выдает ответ.

Многослойные нейронные сети

Такие сети, помимо входного и выходного слоев нейронов, характеризуются еще и скрытым слоем (слоями). Понять их расположение просто – эти слои находятся между входным и выходным слоями.

Такая структура нейронных сетей копирует многослойную структуру определенных отделов мозга.

Название скрытый слой получил неслучайно. Дело в том, что только относительно недавно были разработаны методы обучения нейронов скрытого слоя. До этого обходились только однослойными нейросетями.

Многослойные нейронные сети обладают гораздо большими возможностями, чем однослойные.

Работу скрытых слоев нейронов можно сравнить с работой большого завода. Продукт (выходной сигнал) на заводе собирается по стадиям. После каждого станка получается какой-то промежуточный результат. Скрытые слои тоже преобразуют входные сигналы в некоторые промежуточные результаты.

Многослойная нейронная сеть (Multilayer neural network) — нейронная сеть, состоящая из входного, выходного и расположенного(ых) между ними одного (нескольких) скрытых слоев нейронов.

Сети прямого распространения

Можно заметить одну очень интересную деталь на картинках нейросетей в примерах выше.

Во всех примерах стрелки строго идут слева направо, то есть сигнал в таких сетях идет строго от входного слоя к выходному.

Сети прямого распространения (Feedforward neural network) (feedforward сети) — искусственные нейронные сети, в которых сигнал распространяется строго от входного слоя к выходному. В обратном направлении сигнал не распространяется.

Такие сети широко используются и вполне успешно решают определенный класс задач: прогнозирование, кластеризация и распознавание.

Однако никто не запрещает сигналу идти и в обратную сторону.

Сети с обратными связями

В сетях такого типа сигнал может идти и в обратную сторону. В чем преимущество?

Дело в том, что в сетях прямого распространения выход сети определяется входным сигналом и весовыми коэффициентами при искусственных нейронах.

А в сетях с обратными связями выходы нейронов могут возвращаться на входы. Это означает, что выход какого-нибудь нейрона определяется не только его весами и входным сигналом, но еще и предыдущими выходами (так как они снова вернулись на входы).

Возможность сигналов циркулировать в сети открывает новые, удивительные возможности нейронных сетей. С помощью таких сетей можно создавать нейросети, восстанавливающие или дополняющие сигналы. Другими словами такие нейросети имеют свойства кратковременной памяти (как у человека).

Сети с обратными связями (Recurrent neural network) — искусственные нейронные сети, в которых выход нейрона может вновь подаваться на его вход. В более общем случае это означает возможность распространения сигнала от выходов к входам.

Обучение нейронной сети

Теперь давайте чуть более подробно рассмотрим вопрос обучения нейронной сети. Что это такое? И каким образом это происходит?

Что такое обучение сети?

Искусственная нейронная сеть – это совокупность искусственных нейронов. Теперь давайте возьмем, например, 100 нейронов и соединим их друг с другом. Ясно, что при подаче сигнала на вход, мы получим что-то бессмысленное на выходе.

Значит нам надо менять какие-то параметры сети до тех пор, пока входной сигнал не преобразуется в нужный нам выходной.

Что мы можем менять в нейронной сети?

Изменять общее количество искусственных нейронов бессмысленно по двум причинам. Во-первых, увеличение количества вычислительных элементов в целом лишь делает систему тяжеловеснее и избыточнее. Во-вторых, если вы соберете 1000 дураков вместо 100, то они все-равно не смогут правильно ответить на вопрос.

Сумматор изменить не получится, так как он выполняет одну жестко заданную функцию – складывать. Если мы его заменим на что-то или вообще уберем, то это вообще уже не будет искусственным нейроном.

Если менять у каждого нейрона функцию активации, то мы получим слишком разношерстную и неконтролируемую нейронную сеть. К тому же, в большинстве случаев нейроны в нейронных сетях одного типа. То есть они все имеют одну и ту же функцию активации.

Остается только один вариант – менять веса связей.

Обучение нейронной сети (Training) — поиск такого набора весовых коэффициентов, при котором входной сигнал после прохода по сети преобразуется в нужный нам выходной.

Такой подход к термину «обучение нейронной сети» соответствует и биологическим нейросетям. Наш мозг состоит из огромного количества связанных друг с другом нейросетей. Каждая из них в отдельности состоит из нейронов одного типа (функция активации одинаковая). Мы обучаемся благодаря изменению синапсов – элементов, которые усиливают/ослабляют входной сигнал.

Однако есть еще один важный момент. Если обучать сеть, используя только один входной сигнал, то сеть просто «запомнит правильный ответ». Со стороны будет казаться, что она очень быстро «обучилась». И как только вы подадите немного измененный сигнал, ожидая увидеть правильный ответ, то сеть выдаст бессмыслицу.

В самом деле, зачем нам сеть, определяющая лицо только на одном фото. Мы ждем от сети способности обобщать какие-то признаки и узнавать лица и на других фотографиях тоже.

Именно с этой целью и создаются обучающие выборки.

Обучающая выборка (Training set) — конечный набор входных сигналов (иногда вместе с правильными выходными сигналами), по которым происходит обучение сети.

После обучения сети, то есть когда сеть выдает корректные результаты для всех входных сигналов из обучающей выборки, ее можно использовать на практике.

Однако прежде чем пускать свежеиспеченную нейросеть в бой, часто производят оценку качества ее работы на так называемой тестовой выборке.

Тестовая выборка (Testing set) — конечный набор входных сигналов (иногда вместе с правильными выходными сигналами), по которым происходит оценка качества работы сети.

Мы поняли, что такое «обучение сети» – подбор правильного набора весов. Теперь возникает вопрос – а как можно обучать сеть? В самом общем случае есть два подхода, приводящие к разным результатам: обучение с учителем и обучение без учителя.

Обучение с учителем

Суть данного подхода заключается в том, что вы даете на вход сигнал, смотрите на ответ сети, а затем сравниваете его с уже готовым, правильным ответом.

Важный момент. Не путайте правильные ответы и известный алгоритм решения! Вы можете обвести пальцем лицо на фото (правильный ответ), но не сможете сказать, как это сделали (известный алгоритм). Тут такая же ситуация.

Затем, с помощью специальных алгоритмов, вы меняете веса связей нейронной сети и снова даете ей входной сигнал. Сравниваете ее ответ с правильным и повторяете этот процесс до тех пор, пока сеть не начнет отвечать с приемлемой точностью (как я говорил в 1 главе, однозначно точных ответов сеть давать не может).

Обучение с учителем (Supervised learning) — вид обучения сети, при котором ее веса меняются так, чтобы ответы сети минимально отличались от уже готовых правильных ответов.

Где взять правильные ответы?

Если мы хотим, чтобы сеть узнавала лица, мы можем создать обучающую выборку на 1000 фотографий (входные сигналы) и самостоятельно выделить на ней лица (правильные ответы).

Если мы хотим, чтобы сеть прогнозировала рост/падение цен, то обучающую выборку надо делать, основываясь на прошлых данных. В качестве входных сигналов можно брать определенные дни, общее состояние рынка и другие параметры. А в качестве правильных ответов – рост и падение цены в те дни.

И так далее…

Стоит отметить, что учитель, конечно же, не обязательно человек. Дело в том, что порой сеть приходится тренировать часами и днями, совершая тысячи и десятки тысяч попыток. В 99% случаев эту роль выполняет компьютер, а точнее, специальная компьютерная программа.

Обучение без учителя

Обучение без учителя применяют тогда, когда у нас нет правильных ответов на входные сигналы. В этом случае вся обучающая выборка состоит из набора входных сигналов.

Что же происходит при таком обучении сети? Оказывается, что при таком «обучении» сеть начинает выделять классы подаваемых на вход сигналов. Короче говоря – сеть начинает кластеризацию.

Например, вы демонстрируете сети конфеты, пирожные и торты. Вы никак не регулируете работу сети. Вы просто подаете на ее входы данные о данном объекте. Со временем сеть начнет выдавать сигналы трех разных типов, которые и отвечают за объекты на входе.

Обучение без учителя (Unsupervised learning) — вид обучения сети, при котором сеть самостоятельно классифицирует входные сигналы. Правильные (эталонные) выходные сигналы не демонстрируются.

Выводы

В этой главе вы узнали все о структуре искусственного нейрона, а также получили полное представление о том, как он работает (и о его математической модели).

Более того, вы теперь знаете о различных видах искусственных нейронных сетей: однослойные, многослойные, а также feedforward сети и сети с обратными связями.

Вы также ознакомились с тем, что представляет собой обучение сети с учителем и без учителя.

Вы уже знаете необходимую теорию. Последующие главы – рассмотрение конкретных видов нейронных сетей, конкретные алгоритмы их обучения и практика программирования.

Вопросы и задачи

Материал этой главы надо знать очень хорошо, так как в ней содержатся основные теоретические сведения по искусственным нейронным сетям. Обязательно добейтесь уверенных и правильных ответов на все нижеприведенные вопросы и задачи.

Опишите упрощения ИНС по сравнению с биологическими нейросетями.

Из каких элементов состоит искусственный нейрон?

Что такое взвешенная сумма? Какой компонент искусственного нейрона ее вычисляет?

Вычислите взвешенную сумму нейрона (рисунок выше)

Что такое функция активации?

Запишите математическую модель искусственного нейрона.

Чем отличаются однослойные и многослойные нейронные сети?

В чем отличие feedforward сетей от сетей с обратными связями?

Что такое обучающая выборка? В чем ее смысл?

Что понимают под обучением сети?

Что такое обучение с учителем и без него?

Искусственный нейрон. Структура искусственного нейрона

Схема искусственного нейрона

Искусственный нейрон является структурной единицей искусственной нейронной сети и представляет собой аналог биологического нейрона.

Структура искусственного нейрона

Искусственный нейрон является структурной единицей искусственной нейронной сети и представляет собой аналог биологического нейрона.

С математической точки зрения искусственный нейрон — это сумматор всех входящих сигналов, применяющий к полученной взвешенной сумме некоторую простую, в общем случае, нелинейную функцию, непрерывную на всей области определения. Обычно, данная функция монотонно возрастает. Полученный результат посылается на единственный выход.

Искусственные нейроны (в дальнейшем нейроны) объединяются между собой определенным образом, образуя искусственную нейронную сеть. Каждый нейрон характеризуется своим текущим состоянием по аналогии с нервными клетками головного мозга, которые могут быть возбуждены или заторможены. Он обладает группой синапсов – однонаправленных входных связей, соединенных с выходами других нейронов, а также имеет аксон – выходную связь данного нейрона, с которой сигнал поступает на синапсы следующих нейронов.

Каждый синапс характеризуется величиной синаптической связи или ее весом wi, который является эквивалентом электрической проводимости биологических нейронов.

Текущее состояние нейрона определяется, как взвешенная сумма его входов:

(1) Искусственный нейрон. Структура искусственного нейрона,

где w0 — коэффициент смещения нейрона (вес единичного входа)

Выход нейрона есть функция его состояния:

y = f(s)

Нелинейная функция f называется активационной и может иметь различный вид, как показано на рисунке ниже. Одной из наиболее распространенных является нелинейная функция с насыщением, так называемая логистическая функция или сигмоид (т.е. функция S-образного вида):

(2) Искусственный нейрон. Структура искусственного нейрона,

При уменьшении α сигмоид становится более пологим, в пределе при α=0 вырождаясь в горизонтальную линию на уровне 0.5, при увеличении α сигмоид приближается по внешнему виду к функции единичного скачка с порогом T в точке x=0. Из выражения для сигмоида очевидно, что выходное значение нейрона лежит в диапазоне [0,1]. Следует отметить, что сигмоидная функция дифференцируема на всей оси абсцисс, что используется в некоторых алгоритмах обучения. Кроме того, она обладает свойством усиливать слабые сигналы лучше, чем большие, и предотвращает насыщение от больших сигналов, так как они соответствуют областям аргументов, где сигмоид имеет пологий наклон.

Функции активации искусственного нейрона

а) функция единичного скачка; б) линейный порог (гистерезис);
в) сигмоид — гиперболический тангенс; г) сигмоид — формула

Нейронным сетям присущ принцип параллельной обработки сигналов, который достигается путем объединения большого числа нейронов в так называемые слои и соединения определенным образом нейронов различных слоев, а также, в некоторых конфигурациях, и нейронов одного слоя между собой, причем обработка взаимодействия всех нейронов ведется послойно.

Как известно, существует огромное множество парадигм нейронных сетей. Все зависит от исследуемой задачи, для решения которой применяется аппарат ИНС.

Задача прогнозирования успешно решается при помощи многослойных персептронов, которые в свою очередь являются универсальными аппроксиматорами. Многослойная нейронная сеть с сигмоидными передаточными функциями является наиболее общей, универсальной сетевой архитектурой.

Имеются различные структуры многослойных сетей: с последовательными, перекрестными и обратными связями, с фиксированной переменной структурой (см. классификацию искусственных нейронных сетей).


искусственные нейронные сети искусственный нейрон

Если у вас есть статья, заметка или обзор, которыми вы хотите поделиться с аудиторией нашего сайта, присылайте информацию на: neuronus.com@yandex.ru.

Элементы нейронных сетей

Искусственный нейрон (формальный нейрон) — элемент искусственных нейронных сетей, моделирующий некоторые функции биологического нейрона.

Главная функция искусственного нейрона — формировать выходной сигнал в зависимости от сигналов, поступающих на его входы.

В самой распространенной конфигурации входные сигналы обрабатываются адаптивным сумматором, затем выходной сигнал сумматора поступает в нелинейный преобразователь, где преобразуется функцией активации, и результат подается на выходточку ветвления ).

Общий вид искусственного нейрона приведен на рис. 11.1.

Искусственный нейрон

Рис.
11.1.
Искусственный нейрон

Нейрон характеризуется текущим состоянием и обладает группой синапсов — однонаправленных входных связей, соединенных с выходами других нейронов.

Нейрон имеет аксон — выходную связь данного нейрона, с которой сигнал (возбуждения или торможения) поступает на синапсы следующих нейронов.

Каждый синапс характеризуется величиной синаптической связи (ее весом wi).

Текущее состояние нейрона определяется как взвешенная сумма его входов:

Выход нейрона есть функция его состояния:

Активационная функция, которую также называют характеристической функцией, — это нелинейная функция, вычисляющая выходной сигнал формального нейрона.

Часто используемые активационные функции:

  • Жесткая пороговая функция.
  • Линейный порог.
  • Сигмоидальная функция.

Выбор активационной функции определяется спецификой поставленной задачи либо ограничениями, накладываемыми некоторыми алгоритмами обучения.

Нелинейный преобразователь — это элемент искусственного нейрона, преобразующий текущее состояние нейрона (выходной сигнал адаптивного сумматора) в выходной сигнал нейрона по некоторому нелинейному закону ( активационной функции ).

Точка ветвления (выход) — это элемент формального нейрона, посылающий его выходной сигнал по нескольким адресам и имеющий один вход и несколько выходов.

На вход точки ветвления обычно подается выходной сигнал нелинейного преобразователя, который затем посылается на входы других нейронов.

Понравилась статья? Поделить с друзьями:
  • Искусственный ковер трава леруа мерлен
  • Искусственный газон цена за метр леруа мерлен
  • Искусственный кирпич цена леруа мерлен
  • Искусственный газон леруа пенза
  • Искусственный кирпич для внутренней отделки леруа мерлен