회귀 성과 지표

1. MSE

  • +, - 오차가 서로 상쇄되는 것을 방지하기 위해 오차에 제곱을 하고 나눈다

단점

  • + 오차가 클 경우, 제곱을 하면 오차가 너무 커지는 나머지 전체 오차를 왜곡할 수 있다

해결방안

  • MSE 전체에 루트를 씌운다 == RMSE

2. MAE

  • 제곱을 하지 않고 전체 오차에 절대값을 씌워 모든 오차를 +로 만들고 나누는 것

'학부과정 > 머신러닝' 카테고리의 다른 글

Train, Test, 교차검증  (0) 2022.11.09
과대적합, 과소적합  (0) 2022.11.09
머신러닝_1  (0) 2022.11.09
강화&Batch&온라인 학습  (0) 2022.10.11
준지도&자기지도 학습  (0) 2022.10.11

머신러닝
: 학습을 통해 특정 업무를 실행할 수 있는 인공지능

종류
1. 지도학습
- 입력변수, 출력변수가 주어진 것

2. 비지도 학습

  • 입력변수만 있고, 출력변수는 없다
  • 모델 스스로 학습

ex) 자동차의 디자인, 사양을 넣고 컴퓨터에게 이 자동차를 분류해보라 라고 명령하는 것

3. 강화 학습

  • 지능을 가진 agent가 특정한 행동을 선택하는 것

Predictive modeling(예측 모델링)

1. Decision

  • Yes or No를 예측

ex) 스팸메일인지, 아닌지 예측
사과인지 사과가 아닌지 예측

2. Estimates

  • 연속변수인 출력변수를 예측
    (출력변수 == target)

    ex)자동차 가격, 주택 가격처럼 연속적인 숫자로 변하는 타겟변수를 예측

3. Ranking

  • 여러 대안중에서 가장 효과가 좋은 대안을 선택하는데 쓰임

'학부과정 > 머신러닝' 카테고리의 다른 글

과대적합, 과소적합  (0) 2022.11.09
MSE, MAE  (0) 2022.11.09
강화&Batch&온라인 학습  (0) 2022.10.11
준지도&자기지도 학습  (0) 2022.10.11
비지도 학습(Unsupervised Learning)  (0) 2022.10.11

Assembly Language
: 사람이 이해하기 쉬운 언어

Machine Language
: 기계가 이해하기 쉬운 언어
어셈블리 언어를 01로 바꾼 것에 불과하다(그래야 Cpu, 하드웨어가 이해하기 때문)

 

Architecture(아키텍쳐) : 명령어들의 집합
어떤 명령어를 지원하는가

MicroArchitectur : 컴퓨터 내부구조

과거에도 지금에도, 아키텍쳐는 대부분 그대로였다. 하지만 마이크로아키텍쳐는 다르다.
시간이 지나면서 CPU 구조가 더 빠르게, 더 전력소모가 적게 발전했기 때문에 마이크로 아키텍쳐는 계속 발전했다

아키텍쳐가 바뀌지 않는 이유
: 호환성 때문, 아키텍쳐가 바뀌면 과거 프로그램들이 호환이 안되기 때문

 

아키텍쳐 : 프로그래머가 보는 관점
CPU가 얼마나 좋든 나쁘든 우리는 CPU를 조정하는 명령어에 관심있다

 

마이크로아키텍쳐
: 어떻게 이 명령어들을 실제로 구현할 것 인가

 

(instruction)명령어란?
: 컴퓨터에 있어서 하나의 언어

(Instruction set)
명령어 집합이란?
:
그런 언어들의 집합, 단어모음(vocabulary)

 

  • 명령어는 수행할 명령어와 사용할 데이터를 나타낸다
  • 어셈블리 언어 : 사람이 읽을 수 있는 명령어 포맷/형식
  • 기계어 : 기계가 읽을 수 있는 명령어 포맷/형식
 

'학부과정 > 컴퓨터 구조' 카테고리의 다른 글

MIPS_info  (0) 2022.12.21
MIPS assembly code  (0) 2022.12.21

강화학습(Reinforcement Learning)

  • 행동 결과에 따른 보상(혹은 벌점)을 레이블로 줌
    [체스 승리 or 패배]
  • 주어진 환경(enviornment)에서 에이전트(agent)가
    최대의 보상(reward)을 얻기 위해 최상의 정책(policy)을 학습
  • 딥마인드의 알파고(Alpha Go)
    아타리(Atari)게임

Batch 학습(Offline 학습)

  • 학습 데이터를 모두 모은 후 한꺼번에 학습 : 배치(batch)학습
  • 새 데이터가 추가되면 이전 학습데이터와 합쳐 새로 학습함
  • 일반적으로 시간과 자원이 많이 소모됨
  • 훈련과 모델 런칭을 자동화할 수도 있다
    ex) 새 데이터를 추가해서 내가 원하는 시간대마다 자동으로 학습
 

온라인(online) 학습

  • 데이터가 실시간으로 추가됨 : 실시간 학습
  • 데이터 한 개 또는 미니배치(mini-batch)라 부르는 작은 묶음 단위로 훈련
    --> 추가학습(incremental learning)이 더 올바른 표현
  • 학습 단계가 빠르고 데이터가 준비되는 대로 즉시 학습할 수 있음[ ex) 주식 or 코인..?]
  • 사용한 샘플을 버릴수도 있고 보관할 수도 있다

온라인 학습 주의사항

  • 학습률(learning rate)로 데이터에 얼마나 빠르게 적응할지 제어
  • 나쁜 데이터가 모델 학습에 주입되면 성능이 조금씩 감소됨
  • 시스템 모니터링이 필요하고 성능 감소가 감지되면 학습을 중지하고 이전 버전으로
    되돌리거나 비정상적인 데이터를 찾음
 
 

'학부과정 > 머신러닝' 카테고리의 다른 글

MSE, MAE  (0) 2022.11.09
머신러닝_1  (0) 2022.11.09
준지도&자기지도 학습  (0) 2022.10.11
비지도 학습(Unsupervised Learning)  (0) 2022.10.11
지도학습(Supervised Learning)  (0) 2022.10.10

준지도 학습(Semi-supervised Learning)

  • 대부분 데이터에는 레이블이 없고 일부 데이터에만 레이블이 있음
  • 군집을 통해 데이터를 분할하고 소수 레이블을 이용해 전체 그룹을 인식
  • Google Photos, Facebook 사진 태그
  • 제한된 볼츠만 머신(RBM)으로 구성된 심층 신뢰 신경망(DBN)
 

자기지도 학습(Self-supervised Learning)

  • 오토인코드(Autoencoder)-15장
  • 입력과 레이블이 동일함
  • 일반적인 레이블이 없기 때문에 비지도 학습
    자기자신이 타깃이기 때문에 자기지도 학습
    어쨌든 타깃이 있으므로 지도 학습으로도 부른다

'학부과정 > 머신러닝' 카테고리의 다른 글

머신러닝_1  (0) 2022.11.09
강화&Batch&온라인 학습  (0) 2022.10.11
비지도 학습(Unsupervised Learning)  (0) 2022.10.11
지도학습(Supervised Learning)  (0) 2022.10.10
머신러닝  (0) 2022.10.10

비지도 학습(Unsupervised Learning)

  • 훈련 데이터에 레이블이 없음
  • 블로그 방문자를 그룹으로 묶기(어떻게 40%는 학생, 20%는 성인인 것을 알 수 있을까?)
  • 고객을 자동으로 그룹으로 나누어 각각 다른 홍보자료를 보내기(전자기기, 식료품점, ...)

대표적인 비지도 학습 알고리즘

  • 군집(Clustering)
    - k-평균(k-means)
    - 계층 군집(Hierarchial Clustering), 병합 군집(Agglomerative Clustering)
    - 기댓값 최대화(Expection Macimization)

  • 시각화, 차원 축소
    - 주성분 분석(PCA), 커널 PCA, NMF
    - 지역 선형 임베딩(LLE)

  • 연관 규칙(Association Rule) : 데이터 마이닝
    - 어프라이어리(Apriori), 이클렛(Eclat)
 
 

'학부과정 > 머신러닝' 카테고리의 다른 글

머신러닝_1  (0) 2022.11.09
강화&Batch&온라인 학습  (0) 2022.10.11
준지도&자기지도 학습  (0) 2022.10.11
지도학습(Supervised Learning)  (0) 2022.10.10
머신러닝  (0) 2022.10.10

기존의 방법론들의 오버헤드가 발생, 오버헤드가 발생한다는 것은 그만큼의 기간, 비용, 인력, 위험성들이 높았다

이런 과거 폭포수, 4세대, 나선형, 원형 같은 무거운 소프트웨어 개발 방법론이 아닌
민첩성과 실용성이 강조된 가벼운 경량급 개발 방법론 == Agile Methodology

애자일 방법론

  • 필요한 요구를 그때그때 더하고 수정하는 코드 중심 점진적 개발 방법
  • 단순성, 의사소통, 피드백, 용기 등의 원칙에 기반
  • 고객에게 최고의 가치를 가장 빨리 전달하는 경량 방법론
  • 협업과 변화 등 빠른 대응에 가치 : 소규모 목표 달성

협업과 변화에 빨리 대응하려면 목표를 간소화 해야한다

애자일 소프트웨어 개발 선언문(2001)


애자일 방법론(개념 용어)

  • 기술적 부채의 청산
    - 기존의 결함들로 인해 새로운 기능을 개발하거나 확장하는데 어려움이 발생하는 것,
    부채를 해결하기 어려워지고 수리 비용 증가

    - 해결 방법
    처음부터 올바르게 만들 수 있는 탁월한 기술력과 도덕 정신이 뒷받침되어야 한다

  • 리팩토링 기법의 적용
    - 소프트웨어를 보다 쉽게 이해할 수 있고, 적은 비용으로 수정할 수 있도록 기존 코드의 설계를 개선하는 기술
    - 잘못된 설계에서 나타나는 기술적 부채를 감소시켜 덜 짜증나게 해준다

 

리팩토링 : 기존의 코드를 쓰되, 새로운 코드가 잘 연동될 수 있도록 하자

 

리팩토링 효과

  • 코드를 쉽게 이해, 다른 프로그래머가 코드 변경을 쉽게 할 수 있다
  • 애자일 방법론은 리팩토링을 코드 구현 작업의 일부분으로 취급한다
  • 기본 코드에 대한 높은 이해도 -> 버그 수정, 새로운 기능 추가 -> 빠른 작업 속도

리팩토링 = 기본 코드의 디자인을 개선하는 방법

 

객체지향 기법의 적용

  • 점진적인 개발 용이
  • 시스템을 수평적인 모습으로 설계 : 재사용성 확장
  • 기존 메소드나 코드에 영향 최소화 + 새로운 메소드나 코드 추가
  • 적응성과 재사용성을 극대화

 

애자일 기법의 장점

  • 상대적으로 낮은 비용과 위험도
  • 프로토타입의 중요성 부각 : 짧은 릴리즈 추가
  • (개발하는 시간대가 단축되기 때문에 고객에게 가지는 릴리즈가 짧아진다 = 업데이트가 잦다)
  • 마음가짐 + 사람중심 + 참여와 소통 중시

단점

  • 낯선 프로세스
  • 프로젝트 팀원에게 요구되는 역량
  • 이끌어 내기 힘든 고객의 참여
 
 

 

'학부과정 > 소프트웨어공학' 카테고리의 다른 글

익스트림 프로그래밍  (0) 2023.01.11
4세대 기법  (0) 2022.10.10
나선형 패러다임(sprial)  (0) 2022.10.09
원형 패러다임  (0) 2022.10.06
폭포수 모델  (0) 2022.09.06

지도학습(Supervised Learning)

    • 학습데이터베이스(훈련세트) = (특징, 레이블) 쌀

 

레이블[Label, 정답(ground truth)또는 타깃(target)이라고도 한다]

  • 스팸/스팸 아님 --> 이진분류(binary classification)
  • 개/고양이/새 --> 다중분류(multiclass classification)

 

클래스(class) : Label의 범주

  • 스팸/스팸아님
  • 개/고양이/새

 

특징[feature, 속성(attribute)]

 

분류(classification) / 회기(regression) 문제

  • 문서 내 문자들 --> 스팸/스팸아님 : classification(분류)
  • 영상의 픽셀들 --> 개/고양이/새 : classification(분류)
  • 주행거리, 연식, 브랜드 --> 중고차 가격 : 회기(Regression)

 

 

대표적인 지도(Supervised) 학습 알고리즘

  • k-최근접 이웃(k-Nearest Neighbors)
  • 선형 회귀(Linear Regression) - 회귀 알고리즘
  • 로지스틱 회귀(Logistic Regression) - 분류 알고리즘
  • 서포트 벡터 머신(Support Vector Machine, SWM)
  • 결정 트리(Decision Tree), 앙상블 학습(Ensemble Learning)
  • 신경망(Neural Network), 딥러닝(Deep Learning) : 지도/비지도/강화

'학부과정 > 머신러닝' 카테고리의 다른 글

머신러닝_1  (0) 2022.11.09
강화&Batch&온라인 학습  (0) 2022.10.11
준지도&자기지도 학습  (0) 2022.10.11
비지도 학습(Unsupervised Learning)  (0) 2022.10.11
머신러닝  (0) 2022.10.10

머신러닝이란?

: 데이터로부터 학습하도록 컴퓨터를 프로그래밍하는 기술

 

머신러닝이 유용한 분야

  • 많은 수동 조정과 규칙이 필요한 문제
  • 전통적인 방법으로 해결하기 어렵거나 알려진 해가 없는 문제
    ex) 음성인식
  • 변화하는 환경에 적응해야 하는 문제
    : 새로운 데이터에 적용할 수 있음
  • 복잡한 문제와 대량의 데이터에서 통찰 얻기(데이터 마이닝)

머신러닝 시스템 종류

  • 사람의 감독여부
    Supervised(지도), Unsupervised(비지도), Reinforcement(강화학습)
  • 실시간으로 점진적 학습인지 여부
    Online(온라인 학습), Batch(배치 학습), Incremental(점진적 학습)

  • 훈련 데이터와 단순 비교인지, 패턴을 찾기 위해 예측 모델을 만드는지
    Instance-based(사례 기반), Model-based(모델 기반 학습)
 

'학부과정 > 머신러닝' 카테고리의 다른 글

머신러닝_1  (0) 2022.11.09
강화&Batch&온라인 학습  (0) 2022.10.11
준지도&자기지도 학습  (0) 2022.10.11
비지도 학습(Unsupervised Learning)  (0) 2022.10.11
지도학습(Supervised Learning)  (0) 2022.10.10

소프트웨어적으로 봤을 때, 자동으로 프로그래밍이 되는 자동화 시스템이 나오기 시작했다

4세대 기법이란?

  • 자동화 도구 사용
  • 요구사항 명세서로부터 실행 코드 자동으로 생성
  • 형식 규격 언어 표현법 진행 : 고급 언어의 모호성 해결
  • 정확성 있는 명세서 해석
  • 개발 과정의 자동화
  • 높은 생산성과 소프트웨어 위기를 해결하기 위한 폭넓은 응용 분야에 적용
    (아직까지는 크게 다양한 분야에서 사용되지는 않는다)

단점

  • 불필요한 많은 양의 코드 생성
  • 어려운 유지보수 < 제일 큰 단점
 

자동생성코드를 돌리다보면 내가 원하지 않는 불필요한 코드가 생성되고, 속도가 떨어질 수 있다

유지보수도 어렵다. 자동생성이라는 개념은 좋지만, 내가 원하는 특성이 들어간 것을 만들기에는 많이 불편하다.

 

'학부과정 > 소프트웨어공학' 카테고리의 다른 글

익스트림 프로그래밍  (0) 2023.01.11
Agile Methodology(애자일 방법론)  (0) 2022.10.10
나선형 패러다임(sprial)  (0) 2022.10.09
원형 패러다임  (0) 2022.10.06
폭포수 모델  (0) 2022.09.06

+ Recent posts