25.11.06 개발일지 / 딥러닝3

2025. 11. 14. 14:05·LMS 7/개발일지

Chapter6. 로지스틱 회귀 모델

1. 정의

> 참(1)과 거짓(0)으로만 표현을 해야하는 자료구조를 표현해야 할 때 사용하는 모델

​2. 시그모이드 함수

> 참과 거짓으로 나타낼 수 있도록 S자 형태로 그려지는 그래프

여기서 a는 그래프의 경사도를, b는 그래프의 좌우이동을 담당

3. 교차 엔트로피 오차 함수(손실 함수)

> 로지스틱 회귀 모델의 손실 함수는 교차 엔트로피 오차 함수를 사용(선형 회귀에서는 평균제곱오차를 사용)

1) 공식

> y는 실제값, h는 예측값

​

2) y가 1인 경우

> -log(h) -> h가 1이면 0, 작아질수록 증가함

 

​3) y가 0인 경우

> -log(1-h) -> h가 0이면 0, 커질수록 증가함

4. 텐서플로를 활용한 로지스틱 회귀 모델

import numpy as np
import matplotlib.pyplot as plt
import tensorflow as tf

# 텐서플로 케라스 API
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense

x = np.array([2, 4, 6, 8, 10, 12, 14])
y = np.array([0, 0, 0, 1, 1, 1, 1])

model = Sequential()
model.add(Dense(1, input_dim=1, activation='sigmoid')) # 출력값(H(x)), 입력값(x), 활성화 함수(시그모이드)
model.compile(optimizer='sgd', loss='binary_crossentropy') # 옵티마이저(sgd = 경사하강법), 손실 함수(교차 엔트로피)
model.fit(x, y, epochs=1000) # 에포크 설정

# 그래프
plt.scatter(x, y)
plt.plot(x, model.predict(x), 'r')
plt.show()

# 테스트
hour = 7
input_data = tf.constant([[hour]], dtype=tf.float32)
prediction = model.predict(input_data)[0][0]
print("%.0f 시간을 공부할 경우, 합격 예상 확률은 %.1f%% 입니다." % (hour, prediction*100))


Chapter7. 퍼셉트론과 인공지능의 시작

퍼셉트론

> 뉴런의 행동을 모방한 인공 신경망을 실제 장치로 구현한 모델

1) 초기

> 초기 모델은 여러 입력과 가중치들을 가중합으로 합쳐 판단하되 이 가중치들을 조절할 수 있도록 하는 형태

2) 아달라인

> 경사 하강법을 도입해 최적의 경계선을 그리도록 할 수 있는 형태(활성화 함수로 선형회귀를 사용)

3) 로지스틱 회귀

> 활성화 함수를 시그모이드로 사용하는 형태


Chapter8. 다층 퍼셉트론

다층 퍼셉트론

> 퍼셉트론이 해결하지 못한 XOR 문제(비선형 문제)를 해결할 수 있는 개선된 모델

1) 문제점

> 퍼셉트론이 해결할 수 있는 문제는 선형관계만을 해결할 수 있었음.

단순한 XOR 문제를 평면상에서 직선 하나로 구분할 수 없었기 때문에 이에대한 한계점이 발견됨.

2) 해결

> 다층 퍼셉트론은 은닉층을 추가하여 XOR 문제를 기존의 입력층, 두 개의 처리(NAND, OR)를 가진 은닉층, 이를 거쳐 나온 결과를 AND 처리하는 출력층으로 구분함으로써 비선형 문제를 해결할 수 있었음.

3) Python을 활용한 다층 퍼셉트론

import numpy as np

// 가중치와 바이어스
w11 = np.array([-2, -2])
w12 = np.array([2, 2])
w2 = np.array([1, 1])
b1 = 3
b2 = -1
b3 = -1

// 퍼셉트론(w1x1 + w2x2 + b)
def MLP(x, w, b):
    y = np.sum(w * x) + b
    if y <= 0:
        return 0
    else:
        return 1

// 은닉층
// NAND(가중치 -2, -2, 두 입력이 모두 1일 때만 0)
def NAND(x1, x2):
    return MLP(np.array([x1, x2]), w11, b1)
// OR(가중치 2, 2, 두 입력이 모두 0일 때만 0)
def OR(x1, x2):
    return MLP(np.array([x1, x2]), w12, b2)
// 출력층
// AND(가중치 1, 1, 두 입력이 모두 1일 때는 1, 0일 때는 0)
def AND(x1, x2):
    return MLP(np.array([x1, x2]), w2, b3)

// XOR(비선형)
def XOR(x1, x2):
    return AND(NAND(x1, x2), OR(x1, x2))
// 입력층(x1, x2) -> 은닉층(NAND, OR) -> 출력층(AND)
for x in [(0, 0), (1, 0), (0, 1), (1, 1)]:
    y = XOR(x[0], x[1])
    print("입력 값: " + str(x) + "출력 값: " + str(y))


Chapter9. 오차 역전파에서 딥러닝으로

1. 오차 역전파

> 기존의 경사 하강법에서 가중치(기울기)를 조절하며 오차를 최소화 할 수 있던 것처럼, 다층 퍼셉트론에서도 가중치를 수정하는 과정을 말함.

2. 기울기 소실 문제에 따른 활성화 함수 발전

1) 문제점

> 기존 시그모이드 함수를 사용하는 경우 미분 값이 최대 0.25까지라 1보다 작아 계속 곱하게되면 0으로 수렴하게 되어 기울기가 소실되는 문제가 발생함.

2) 렐루(ReLU) 함수

> 렐루 함수는 이러한 문제점을 해결하기 위한 새로운 활성화 함수로써 미분 값을 0보다 작을 때는 0으로, 0보다 클 때는 1로 설정해주는 역할을 함.

> 따라서 기울기가 소실되지 않으므로 입력층까지 올라가며 잘못된 가중치를 모두 수정할 수 있게 됨.

'LMS 7 > 개발일지' 카테고리의 다른 글

25.11.10 개발일지 / 딥러닝5  (0) 2025.11.14
25.11.09 개발일지 / 딥러닝4  (1) 2025.11.14
25.11.05 개발일지 딥러닝2(모두의 딥러닝 개정 4판)  (0) 2025.11.14
25.11.03 개발일지 / 딥러닝 1(모두의 딥러닝 개정4판)  (0) 2025.11.14
25.10.30 개발일지 / C++ MFC 프로젝트 5일차  (0) 2025.11.14
'LMS 7/개발일지' 카테고리의 다른 글
  • 25.11.10 개발일지 / 딥러닝5
  • 25.11.09 개발일지 / 딥러닝4
  • 25.11.05 개발일지 딥러닝2(모두의 딥러닝 개정 4판)
  • 25.11.03 개발일지 / 딥러닝 1(모두의 딥러닝 개정4판)
m_Dev
m_Dev
  • m_Dev
    m_Dev
    m_Dev
  • 전체
    오늘
    어제
    • 분류 전체보기
      • MAIN STUDY
        • 정보보안
        • 빅데이터
        • 정보처리
        • 컴퓨터 구조
        • 기타
      • JOB
        • Study
        • Project
      • LMS 7
        • 개발일지
      • FRAMEWORK
        • Qt
        • MFC
        • Winform
        • WPF
        • MAUI
      • NETWORK
        • Study
        • Assignment
      • PYTHON
        • Set
        • Study
        • Assignment
        • Project
      • C
        • Set
        • Study
        • Assignment
        • Project
      • C++
        • Set
        • Study
        • Assignment
        • Project
      • C#
        • Set
        • Study
        • Assignment
        • Project
      • DATABASE
        • MySQL
        • SQLite
      • IDE
        • VisualStudioCode
        • VisualStudio
        • Pycharm
        • Colab
      • 기타
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
m_Dev
25.11.06 개발일지 / 딥러닝3
상단으로

티스토리툴바