🐳
Engineering Wiki
  • 🖐️Welcome
  • 📚백엔드 로드맵
    • 메인페이지
  • Spring
    • spring boot
      • security
        • security 기본
        • filter
        • JWT
      • 스프링 핵심 원리
        • 객체지향 설계와 스프링
        • 스프링IoC컨테이너와 bean
      • IntelliJ
        • Spring boot 생성 및 git clone
        • Spring boot 프로젝트 생성
      • vscode
        • Spring boot 프로젝트 생성
      • scheduling
        • 스케쥴링 설정시 에러 상황
      • paging
      • 에러 핸들링
        • ErrorCode생성 및 ExceptionHandler로 에러처리
        • Security & JWT 에러처리
        • spring cloud sleuth
      • 로그 핸들링
        • logback
        • HttpRequestServlet 래핑
      • gradle
        • hidetake.ssh 키파일 설정
      • maven
        • maven tomcat
      • lib
        • lombok
        • tiles
      • API 부하테스트 툴 K6
      • JPA
        • Mybatis / JPA 차이
      • Mybatis
    • spring batch
      • batch
        • Spring Batch 기본개념
  • FRONT
    • vue
      • Spring boot & Vue.js 설치 및 연동
      • Spring boot & Vue.js 웹개발 세팅
      • vue의 기본구조 실행순서
      • SPA 이해
  • JAVA
    • 환경설정
    • 자바의 정석
      • generics
  • DATABASE
    • mongoDB
      • 정규표현식을 사용해 대소문자 구분없이 검색
      • mongoDB export import
      • MAC 설치 및 실행
    • MYSQL
      • dbeaver 데이터 내보내기 불러오기
      • [에러] 스프링 mysql 8 연결 에러
      • MAC M1 mysql 설치
      • GROUP BY 정리
      • 테이블 명세서 빠르게 생성
  • AWS
    • IAM
    • 설치&명령어
      • eb 설치 & 명령어
      • CLI 설치 & 명령어
    • sam
      • SAM 개념
      • SAM Lambda S3이벤트 트리거, MongoDB 접근코드
      • SAM intellij 배포
    • peering
      • mongodb atlas AWS vpc peering
      • MongoDB & Lambda VPC peering ,endpoint설정
    • 쉘스크립트
      • 도커 컨테이너 중단시 슬랙 리포팅 및 재실행
  • DOCKER
    • 설치&명령어
      • Docker 기초
      • Docker Container 유용한 명령어
    • MAC관련 문제
      • 이미지 빌드 관련 문제상황
      • MAC M1 도커 실행 원리
      • [에러] docker: Error response from daemon: Mounts denied:
  • ELK
    • 세팅
      • 로드벨런서에 logstash 세팅
      • Elastic Beanstalk + Elastic Cloud + docker 설정
      • ElasticCloud + filebeat + logstash + docker 설정 (버전8.5.0)
      • ELK 적용 사례, 로그수집(filebeat/logstash) 설명
    • logstash
      • Logstash는 로그를 왜 message라는 field로 저장할까?
      • logstash health check
    • filebeat
      • filebeat 아키텍쳐
  • unity
    • 유니티 기본
      • 캐릭터 이동
      • 카메라
  • WORDPRESS
    • 워드프레스 기본
  • git
    • GIT 개념
      • 라이프사이클
    • 명령어
      • defult 브랜치 main 으로 변경
      • 첫번째 커밋 삭제(브런치삭제) 후 원격저장소에 강제 push
      • git 원격저장소에 remote 방법(vscode로 진행)
      • git gh
      • git reset
      • git rebase
  • MAC
    • 개발 환경세팅
      • 맥 초기 개발세팅
    • 유용한내용
      • app store 다운로드 없이 웹에서 Xcode 다운
      • ubuntu iso 설치 usb 만들기
      • 응용프로그램 에러
      • 잠김 파일
  • CS
    • data structure & algorism
      • 자료구조의 정의 및 종류
  • 방통대
    • 대학수학의 이해
      • 1강. 수학의 기초(1)
    • 딥러닝
      • 1강.신경망의 개요
  • NODE
    • 개발기록
      • 인스타그램 API 활용하여 게시물 슬랙에 리포팅
Powered by GitBook
On this page
  1. 방통대
  2. 딥러닝

1강.신경망의 개요

Previous딥러닝Next개발기록

Last updated 9 months ago

기호 인공지능

연결주의 인공지능 → 배울거

인공 신경망

  • 인간과 동물의 두뇌를 구성하는 신경 시스템의 원리를 바탕으로 설계된 계산 시스템

1943년 임계치 논리 라는 알고리즘을 바탕으로 한 신경망 계산 모델

1949년 도널드 헵이 헵의 학습 이론 제시

1957년 프랭크 로젠블이 퍼셉트론 학습 모델 제안 ?

  • 마크 1 퍼셉트론

  • 당시에 큰 관심 끔

  • 당시에 마빈 민스카이 는 한계를 지적함 (1969년) XOR도 해결 못한다 해서 찬물을 끼얹음

1974년 1986년 폴 워버스 , 데이비드 등에 의해 다층 퍼셉트론 구조의 학습 방법 발표됨

  • 역전파 알고리즘 → 근간이됨

신경망의 층과 표현력

  • 한개의 층만으로 인식할때

    • 인식율이 떨어짐

  • 여러개의 층으로 인식할때

    • 중간에 있는게 뉴런역할

    • 중간층에 있는것 덕분에 인식율이 더 높아짐

많은 층으로 구성하면 더욱 높은 차원의 표현 가능함

→ 심층 신경망

딥러닝은?

  • 심층 신경망을 학습하기 위해 활용되는 기계학습 알고리즘

  • 데이터가 많이 필요함

  • 불안정한 경사 문제

  • 과적합 문제

  • 방대한 계산량

신경망의 기본구조

인공 뉴런 (빨간 박스가 뉴런역할)

  • u라는 입력을 뭔가 조건을 거쳐서 출력해줌 활성함수가

    • 0보다 작으면 출력을 억제하고 0보다 크면 출력을 내도록 설계함

  • 저 바이어스에 따라 활성함수를 거칠때 활성화 되는지 안되는지 조정됨

    • 출력이 -0.5 인데 b가 1이면 0.5로 출력되니까 활성화 되겠지

계단함수

  • 미분이 안되는 한계로 초기에나 쓰고 안쓰는 함수

시그모이드 함수

  • S자 형태라 미분가능함 → 미분이 가능하다는건 매우 유용함

  • 층의 깊이가 깊어지면 경사 소멸이라는 문제가 생긴다함

  • 대표는 로지스틱 함수

ReLU

  • 0일때 미분불가

  • Dying ReLU 죽어있는 상태의 뉴런이 된다?

  • ReLU의 변형

    • Leaky ReLU

    • PReLU

    • GELU

    • Swish

단층 피드포워드 신경망

  • 입력층에서 출력층 방향으로 뉴런 층의 연결이 이루어지는 구조

  • 하나의 층으로 구성됨

지도학습 방식

  • 입력과 레이블(출력)

학습 대상 파라미터

  • 입력이 뉴런에 전달되는 연결의 가중치(W)

  • 바이어스(b)

퍼셉트론의 학습

  • 파라미터 초기화

  • 모든 학습표본을 대상으로 파라미터 업데이트 반복

피셔의 붓꽃 데이터 집합

  • 실습 프로그램 구성

    • prepare_data(target)

      • 특징 : 꽃잎의 길이와 폭

      • 레이블 : target 에 지정된 종류의 붓꽃이면 1 그외면 0

    • step(x)

      • 단위 계단 함수 : 0이상이면 1 그렇지 않으면 0

    • visualize(...)

      • 결과의 그래프를 출력하는 시각화 함수

      • 파라미터

        • net : 학습된 퍼셉트론

        • x,y : 특징 및 레이블의 배열

        • multi_class : 3개 이상의 클래스로 분류하는 경우 true

        • labels : 클래스 레이블 리스트

        • class_id : 클래스 이름을 출력할 스트링 리스트

        • colors : 클래스를 구분할 색상 리스트

        • xlabel, ylabel : x,y 축에 표시할 레이블

        • legend_loc : 범례를 표시할 위치

    • class Perceptron 클래스 선언

      • 퍼셉트론 객체를 만들기 위한 클래스

      • 인스턴스 변수

        • self.dim : 입력층 입력의 수

        • self.activation : 활성함수

        • self.w : 가중치

        • self.b : 바이어스

      • 메서드 목록

        • init : 초기화

        • printW(self) : 가중치 및 바이어스 값 출력

        • predict(self,x) : 입력표본 x에 대한 퍼셉트론의 출력

        • fit(self, X, y, N, ephocs, eta=0.01) : 주어진 학습표본 집합을 이용해 퍼셉트론 객체를 훈련함

라이브러리

  • matplotlib.pyplot : 시각화를 하기위한 함수들이 제공됨

  • numpy : 파이썬에서 많이 사용됨 여러 수학적인 계산

  • sklearn.datasets : 여러 데이터 제공

3 : 0부터 3까지 있는데 2부터 끝까지(3까지) 뽑아서 슬라이스 함

5 : target 엔 0, 1, 2 값이 있음 (setosa 부터 0)

10 : 레이블값이 타겟과 같으면 1 true 틀리면 0 false

7,8 : 난수를 만들어서 초기화

활성함수식 사용함

이제 섞고 반복시켜서 학습 시킴

loss 값은 0에 가까워야 정확함

데이터의 최소 최대 범위를 좌표값으로 나타냄

가로 꽃잎길이 세로 꽃잎의 폭

어느 부분이 setosa에 포함되는지 범위를 볼수있음

이제 훈련을 시키고 시각화를 시킴

  • 가중치의 초기값이 달라서 매번 실행할 때마다 좀 다를수 있음

  • 분류는 잘 되는데 경계의 형태는 좀 달라짐

  • 퍼셉트론은 단위 계단 함수를 사용하기 때문에 일반화 오류가 발생할 여지가 크다

정리하기

  • 인공신경망은 인간과 동물의 두뇌를 구성하는 생물학적 신경 시스템의 원리를 바탕으로 설계된 계산 시스템이다

  • 신경망을 많은 수의 층으로 구성하면 더욱 높은 차원의 표현을 할 수 있다

  • 딥러닝은 심층 신경망을 학습하기 위해 활용되는 기계학습 알고리즘이다

  • 기본적인 뉴런의 구조는 다수의 입력이 각각 가중치를 적용하여 전달되면 이를 합산한 후 활성함수를 거쳐 출력을 만들어 내는 형태이다

  • 일반적인 활성함수는 비선형 특성을 갖는 함수이며 입력이 0보다 작으면 출력을 억제하고 0보다 크면 출력을 내는 역할을한다

  • 피드포워드 신경망은 입력층에서 출력층방향으로 뉴런 층의 연결이 이루어지는 구조이다

  • 단층 퍼셉트론은 특정 공간을 선형 결정경계로 분할할 수 있다

연습문제

아래와 같은 수학문제가 나올수도 있다