# Реализация функции сигмоида на Python

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

К концу этого обучающего руководства вы научитесь:

* Что такое сигмовидная функция и почему она используется в глубоком обучении
* Как реализовать сигмовидную функцию в Python с помощью numpy и scipy
* Как построить сигмовидную функцию в Python с помощью Matplotlib и Seaborn
* Как применить сигмовидную функцию к массивам numpy и спискам Python

Оглавление

* [Что такое сигмовидная функция](#chto-takoe-sigmovidnaya-funkciya)?
* [Как реализовать сигмовидную функцию в Python с помощью numpy](#kak-realizovat-sigmovidnuyu-funkciyu-v-python-s-pomoshyu-numpy)
* [Как реализовать сигмовидную функцию в Python с помощью scipy](#kak-realizovat-sigmovidnuyu-funkciyu-v-python-s-pomoshyu-scipy)
* [Как применить сигмовидную функцию к массивам numpy](#kak-primenit-sigmovidnuyu-funkciyu-k-massivam-numpy)
* [Как применить сигмовидную функцию к спискам Python](#kak-primenit-sigmovidnuyu-funkciyu-k-spiskam-python)
* [Как построить сигмовидную функцию в Python с помощью Matplotlib](#kak-postroit-sigmovidnuyu-funkciyu-v-python-s-pomoshyu-matplotlib)
* [Заключение](#zaklyuchenie)
* [Дополнительные ресурсы](#dopolnitelnye-resursy)

### Что такое сигмовидная функция?

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

<figure><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/faaa0c014ae28ac67db5c49b3f3e8b08415a3f2b" alt="{\displaystyle f(x)={\frac {1}{1+e^{-x}}}}" height="89" width="258"><figcaption><p>Формула логистической сигмовидной функции</p></figcaption></figure>

Когда функция изображена на графике, она выглядит следующим образом:

<figure><img src="https://datagy.io/wp-content/uploads/2022/04/How-Plot-the-Sigmoid-Function-in-Python.png" alt="How Plot the Sigmoid Function in Python" height="480" width="640"><figcaption><p>Как выглядит сигмовидная функция</p></figcaption></figure>

Вы можете задаваться вопросом о том, как эта функция связана с глубоким обучением. Функция сигмоида часто используется в качестве функции активации в глубоком обучении. Это связано с тем, что функция возвращает значение, которое находится между 0 и 1. Поскольку шаг обратного распространения ошибки зависит от дифференцируемости функции активации, сигмоидальная функция является отличным вариантом. Наконец, производная функции может быть выражена через саму функцию.

### Как реализовать сигмовидную функцию в Python с помощью numpy

Хотя numpy не предоставляет встроенной функции для расчета сигмоидной функции, он упрощает разработку пользовательской функции для достижения этой цели. Давайте посмотрим, как мы можем это сделать:

```python
# Разработка функции сигмоид в NumPy
import numpy as np

def sigmoid(x):
    # Функция сигмоид: f(x) = 1.0 / (1.0 + exp(-x))
    return 1.0 / (1.0 + np.exp(-x))
```

В приведенной выше функции мы использовали функцию [`numpy.exp()`](/neural/uchebniki-po-pandas-i-numpy/numpy/ispolzovanie-funkcii-numpy.exp-dlya-vychisleniya-eksponenty.md), которая возводит `e` в степень отрицательного аргумента.

Давайте посмотрим, как мы можем использовать функцию, передав значение 0,5:

```python
# Проверка нашей функции сигмоид
import numpy as np

def sigmoid(x):
    # Функция сигмоид: f(x) = 1.0 / (1.0 + exp(-x))
    return 1.0 / (1.0 + np.exp(-x))

print(sigmoid(0.5)) # Вычисление значения функции сигмоид для x = 0,5

# Возвращает:
# 0.6224593312018546
```

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

```python
# Разработка сигмоидной функции в numpy как лямбда-функция
import numpy
sigmoid = lambda x: 1.0 / (1.0 + numpy.exp(-x))
```

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

1. Функция `math.exp()` приведет к значениям NaN при очень низких отрицательных значениях.
2. Вы, вероятно, все равно будете импортировать NumPy, поэтому использование NumPy может привести к уменьшению числа импортов

В следующем разделе вы научитесь реализовывать функцию сигмоида на Python с помощью `scipy`

### Как реализовать сигмовидную функцию в Python с помощью scipy

При использовании библиотеки scipy у вас есть два варианта реализации логистической функции сигмоиды:

1. `scipy.stats.logistic()`
2. `scipy.special.expit()`

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

Давайте посмотрим, как мы можем реализовать функцию с использованием scipy:

```python
# Использование scipy для реализации сигмоидной функции
from scipy.special import expit
print(expit(0.5))
```

### Как применить сигмовидную функцию к массивам numpy

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

```python
# Применение функции сигмоид к NumPy-массивам
import numpy as np

def sigmoid(x):
    # Функция сигмоид: f(x) = 1.0 / (1.0 + exp(-x))
    return 1.0 / (1.0 + np.exp(-x))

arr = np.array([-2, -1.5, -1, 0, 1, 1.5, 2]) # NumPy-массив чисел

print(sigmoid(arr)) # Применение функции сигмоид к элементам массива

# Возвращает:
# [0.11920292 0.18242552 0.26894142 0.5 0.73105858 0.81757448 0.88079708]
```

### Как применить сигмовидную функцию к спискам Python

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

```python
# Применение функции сигмоид к списку значений
import numpy as np

def sigmoid(x):
    # Функция сигмоид: f(x) = 1.0 / (1.0 + exp(-x))
    return 1.0 / (1.0 + np.exp(-x))

values = [-2, -1.5, -1, 0, 1, 1.5, 2] # Список чисел

print([sigmoid(value) for value in values]) # Применение функции сигмоид к каждому значению списка

# Возвращает:
# [0.11920292 0.18242552 0.26894142 0.5 0.73105858 0.81757448 0.88079708]
```

### Как построить сигмовидную функцию в Python с помощью Matplotlib

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

Давайте сначала реализуем код, а затем рассмотрим, как мы достигли желаемого:

```python
# График функции сигмоид в Python с помощью Matplotlib
import numpy as np
import matplotlib.pyplot as plt

def sigmoid(x):
    # Функция сигмоид: f(x) = 1.0 / (1.0 + exp(-x))
    return 1.0 / (1.0 + np.exp(-x))

values = np.arange(-10, 10, 0.1) # Создание набора значений x с шагом 0,1

plt.plot(values, sigmoid(values)) # Рисование графика функции сигмоид
plt.xlabel('x') # Задание метки оси X
plt.ylabel('sigmoid(x)') # Задание метки оси Y
plt.title('Функция сигмоид в Matplotlib') # Задание заголовка графика
plt.show() # Показывание графика
```

Это приводит к следующему изображению:

<figure><img src="https://datagy.io/wp-content/uploads/2022/04/How-Plot-the-Sigmoid-Function-in-Python.png" alt="How Plot the Sigmoid Function in Python" height="480" width="640"><figcaption><p>Построение сигмовидной функции в Python с помощью Matplotlib</p></figcaption></figure>

### Заключение

В этом учебнике вы узнали, как реализовать сигмоидную функцию на Python. Сначала вы познакомились с самой функцией и узнали о ее связи с глубоким обучением. Затем вы научились реализовывать функцию с использованием как numpy, так и scipy. После этого вы узнали, как применять функцию к массивам numpy и спискам Python. Наконец, вы научились строить график функции с помощью Matplotlib.

### Дополнительные ресурсы

Чтобы узнать больше о связанных темах, ознакомьтесь с нижеприведенными учебными пособиями:

* Введение в машинное обучение в Python
* Метод опорных векторов (SVM) в Python с помощью Sklearn
* Линейная регрессия в Scikit-Learn (sklearn): Введение
* Классификатор дерева решений с помощью Sklearn на Python


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://bemind.gitbook.io/neural/uchebniki-po-pandas-i-numpy/numpy/realizaciya-funkcii-sigmoida-na-python.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
