본문 바로가기
Postech

IT 관련 용어 정리 (1)

by 나비스 2024. 6. 19.

AI, ML, DL

AI : 컴퓨터가 사람처럼 생각하고, 판단하게 만드는 기술
ML : AI의 한 종류로, 인간의 학습능력과 같은 기능을 컴퓨터가 할 수 있게 하는 기술
DL : 인공신경망을 기반으로 하는 ML의 일종으로, 빅데이터를 기반으로 스스로 학습하여, 판단하는 기술
ML의 종류 머신러닝을 크게 3종류로 분류할 수 있는데, 지도학습, 비지도학습, 강화학습이 있다.
1. 지도학습 Supervised learning : 정답과 문제를 함께 학습시키는 방법을 말한다. 예측과 분류 알고리즘이 대표적이다.
정답을 알고있을 때 복집한 모델을 처리할 수 있고 근본적인 구조를 파악하기 용이하지만, 데이터를 일일히 라벨링해야 해야 한다.
2. 비지도학습 Unsupervised learning : 정답을 가르치지 않고 학습시키는 방법을 말한다. 연관규칙, 군집분석이 대표적이다.
정답을 알고있지 않을 때도 학습을 시킬 수 있지만, 데이터에 따라 효과가 다를 수 있는 단점이 있다.
3. 강화학습 Reinforcement : 상은 최대화하고 벌은 최소화하는 방향으로 행위를 강화하는 방법을 말한다. 대표적으로 보상이 있다.
현실 세계에서 바로 적용할 수 없는 특징이 있다. 따라서 현실 세계와 거의 유사한 가상공간인 디지털 트윈에서 시뮬레이션 후 피드백을 통해 현실 세계에 적용하는 것이 대부분이다.

 


AI 주요기술

1. CV : 컴퓨터에게 인간의 시각을 학습시키는 AI 기술이다.
- Object Detection : 사진이나 영상에서 특정 사람이나 사물 등을 추출하는 객체 탐지를 의미한다.
- Object tracking : 멀티 카메라에서 객체의 크기나 색, 모양 등 특징적인 정보의 유사도를 이용하여 객체의 변화를 추적을 의미한다.

2. NLP : 컴퓨터를 이용하여 사람 언어의  이해, 생성, 분석을 다루는 AI 기술이다.
- 자연어 이해 : 일상생활 언어를 형태, 의미, 대화분석을 통해 컴퓨터가 처리할 수 있도록 변환시키는 작업이다.
- 자연어 생성 : 컴퓨터가 처리한 결과물을 사람의 편의성에 입각하여 텍스트, 음성, 그래픽을 생성하는 작업이다.
EX) 검색 엔진 최적화, 소셜미디어 분석, 대규모 문서 분석 및 정리에 이용된다.
CT  구성요소 컴퓨터의 이론, 기능을 활용하여 사고하는 능력으로 추상화, 알고리즘, 자동화가 그 구성요소이다.

 


3A

1. Abstraction 추상화 : 일상생활의 문제를 컴퓨터가 풀 수 있게 재정의하는 것이다. 설계도를 그리는 단계이다.
2. Algorithm 알고리즘 : 컴퓨터가 문제를 풀 수 있도록 방법을 정해주는 일이다. 분할 정복 알고리즘처럼 비슷한 기능의 함수를 블록으로 모아 해결하는 방법을 자주 사용한다.
3. Automation 자동화 : 같거나 유사한 문제를 재현 가능하게 하는 일이다.


객체 지향 vs 절차 지향

1. 객체 지향 프로그래밍 : 일상생활의 문제를 사람의 시각에서 사물을 바라보는 관점(데이터 + 기능)으로 프로그램을 설계하고자 하는 개념이다.
어떤 기능을 함수 코드에 묶어 두는 것이 아니라, 데이터와 함수를 한 데 묶어 단일 프로그램을 객체 라는 코드에 넣어 다른 프로그래머가 재사용할 수 있게 만든다.

Object Oriented Design 특징
1) Encapsulation 2) Inheritance 3)Polymorphism 4) Abstraction
1) Encapsulation 캡슐화 : 관련된 데이터(상태)와 함수(행위)가 하나의 묶음으로 정리된 것이다. 데이터를 감추고 외부 세계와의 상호작용은 public functions를 통해 인터페이스를 노출하는 방법인데, 라이브러리로 만들어 업그레이드 하면 쉽게 바꿀 수 있다. ex) 클래스.
2) Inheritance 상속 : 이미 작성된 클래스를 이어 받아서 새로운 클래스를 생성하는 기법으로 기존 코드를 재활용하여 사용하는 것을 의미한다. 기존 클래스의 속성과 기능을 재사용한다.
3) Polymorphism 다형성 : 하나의 명령어로 많은 상황에 대처하는 기법이다. 개념적으로 동일한 작업을 하는 함수에 똑같은 이름을 부여할 수 있으므로 코드가 더 간단해진다. 객체 간의 상호작용을 쉽게 구현한다.
4) Abstraction 추상화 : 복잡한 현실 세계를 객체로 모델링하여 단순화하는 과정으로 이를 통해 핵심적인 특징을 추출해 객체의 속성과 기능으로 표현한다.
장점
1) 코드 재사용 : 하드웨어 처리량 감소
2) 업그레이드 용이
3) 디버깅 용이

2. 절차 지향 프로그래밍 : 순차적인 처리가 중요시되고 프로그램 전체가 유기적으로 연결되도록 만드는 프로그래밍  기법이다. 컴퓨터 처리 방식과 유사하여 빨리 처리되어 시간적으로 유리하다. 

 


인터프리터 vs 컴파일러

고급언어로 작성된 원시 프로그램을 목적 프로그램으로 번역하는 번역 프로그램이다.
1. 컴파일러 : 고급언어로 작성된 프로그램을 전체 목적 프로그램으로 번역한 후, 링킹 작업을 통해 컴퓨터에서 실행 가능항 실행 프로그램을 생성한다.
- 장점 : 한 번 번역하면, 다시 번역하지 않으므로 실행 속도가 빠르다.
- 단점 : 번역 실행과정을 거쳐야 하기 때문에 번역 과정이 번거롭고 번역 시간이 오래 걸린다.
- 종류 : C, C++, Java

2. 인터프리터 : 고급언어로 작성된 프로그램을 한 줄 단위로 받아들여 번역하고, 번역과 동시에 프로그램을 한 줄 단위로 즉시 실행시키는 프로그램이다. 그렇기 때문에 목적 프로그램이 생성되지는 않는다.
- 장점 : 줄 단위로 번역, 실행되기 때문에 시분할 시스템에 유용하며 원시 프로그램의 변화에 대한 반응이 빠르다. 번역속도가 빠르다.
- 단점 : 실행 시 매번 번역해야 하므로 실행 속도는 느리다. CPU의 사용 시간의 낭비가 크다.
- 종류 : python, BASIC, SNOBOL, LISP, APL


mutable vs immutable mutable

변경 가능 - 리스트, 딕셔너리, 집합
리스트를 파라미터로해서 다른 함수로 넘겼을 때, 해당 함수에서 리스트의 값을 바꿨을 때 원본도 바뀜
이러한 객체들은 값을 변경할 수 있으며, 변수가 해당 객체를 직접 참조
객체의 내용이 변경되면 변수를 통해 즉시 접근할 수 있음
immutable: 변경 불가능 - 수치값, 문자열, 튜플
immutable 객체는 한 번 생성되면 그 값을 변경할 수 없다.

mutable객체는 값이 같더라도 변수마다 다른 주소값을 가리키고, immutable객체는 값이 같다면 변수와 상관없이 같은 주소값을 가리킨다. 
또한, 값이 변경됐을 때 mutable객체는 여전히 같은 주소값을 가지고 immutable객체는 다른 주소값을 가진다.

ex.처음에 a=10으로 보낸 함수 안에서 a를 100으로 만들어도 함수 밖에서는 여전히 10 ⇒ immutable
리스트1을 넣어 함수로 보내서 리스트 2로 받음 ⇒ 함수 내에서 리스트 수정 ⇒ 함수 밖에서도 바뀜 ⇒ mutable


global variable vs local variable

1. global variable 전역 변수  : global scope 전역 범위에서 활동하는 변수 함수를 포함하여 스크립트 전체에서 모든 요소에 해당 변수에 접근할 수 있도록 하는 것이다.
만약 def 함수 내에서 전역변수를 사용하고 싶으면 변수 앞에 global을 붙여줘야 한다.

2. local variable 지역 변수 : local scope 지역 범위에서만 영향을 주고 받을 수 있는 변수를 지칭한다. 함수 안에서 변수를 선언하면 그 변수는 함수 내에서만 사용할 수 있다.
지역변수를 불러오려면 변수 앞에 nonlocal 을 사용한다.

 

scope

변수가 활동할 수 있는 범위, 변수가 유효한 범위를 의미한다.
1. global scope : 함수를 포함한 스크립트 내 모든요소로 프로그램 전체에서 접근 가능한 스코프이다.
2. local scope : 함수 안에서 선언된 변수는 해당 함수 안에서만 접근 가능한 스코프이다.

 

'Postech' 카테고리의 다른 글

IT 관련 용어 정리 (3)  (0) 2024.06.21
IT 관련 용어 정리 (2)  (0) 2024.06.20