์‹ค์ˆ˜ ํ‘œํ˜„

  • ๋ถ€๋™ ์†Œ์ˆ˜์ ์œผ๋กœ ํ‘œํ˜„ํ•œ๋‹ค.
  • ์ง€ํ‘œ + ๊ฐ€์ˆ˜๋กœ ํ‘œํ˜„๋œ๋‹ค.
  • ์™œ ์“ฐ๋Š”๊ฐ€?
  • ๊ณ ์ • ์†Œ์ˆ˜์ ์œผ๋กœ ์“ธ ๊ฒฝ์šฐ, ํฐ ์ˆ˜ ( ๊ณผ ๊ฐ™์€ ์ˆ˜๋ฅผ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ๋งŽ์€ ์–‘์˜ ๋น„ํŠธ๊ฐ€ ํ•„์š”ํ•˜๊ฒŒ ๋œ๋‹ค.
  • ํ•˜์ง€๋งŒ ์ด๋ฅผ ์‹ค์ œ ์ˆซ์ž๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ตฌ๊ฐ„๊ณผ, ์ž๋ฆฌ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ตฌ๊ฐ„์œผ๋กœ ๋ถ„๋ฆฌํ•œ๋‹ค๋ฉด ์ •๋ณด๋ฅผ ๋ณด๋‹ค ํšจ์œจ์ ์œผ๋กœ ์ €์žฅํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

  • 8byte์ธ ์‹ค์ˆ˜์˜ ํ‘œํ˜„ ๋ฐฉ์‹์„ ์ •๋ฆฌํ•˜๋ฉด ์œ„์™€ ๊ฐ™๋‹ค.
  • ์•ž์—๋Š” ๋ถ€ํ˜ธ ๋น„ํŠธ, ์ง€์ˆ˜ ํ‘œํ˜„, ๊ฐ€์ˆ˜ ํ‘œํ˜„์ด๋‹ค.
  • ์ง€์ˆ˜์˜ ๊ฒฝ์šฐ ์ž๋ฆฌ์ˆ˜๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๋ฅผ ๋Œ€๋ณ€ํ•˜๋Š” ๊ฒƒ์ด๊ณ ,
  • ๊ฐ€์ˆ˜์˜ ๊ฒฝ์šฐ ์ˆซ์ž์˜ ๋ชจ์–‘์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.

์˜ˆ์‹œ

โˆ’118.625 (์‹ญ์ง„๋ฒ•)์„ IEEE 754 (32๋น„ํŠธ ๋‹จ์ •๋ฐ€๋„)๋กœ ํ‘œํ˜„ํ•ด ๋ณด์ž.

  • ์Œ์ˆ˜์ด๋ฏ€๋กœ, ๋ถ€ํ˜ธ๋ถ€๋Š” 1์ด ๋œ๋‹ค.
  • ๊ทธ ๋‹ค์Œ, ์ ˆ๋Œ“๊ฐ’์„ ์ด์ง„๋ฒ•์œผ๋กœ ๋‚˜ํƒ€๋‚ด๋ฉด 1110110.101์ด ๋œ๋‹ค.
  • ์†Œ์ˆ˜์ ์„ ์™ผ์ชฝ์œผ๋กœ ์ด๋™์‹œ์ผœ, ์™ผ์ชฝ์—๋Š” 1๋งŒ ๋‚จ๊ฒŒ ๋งŒ๋“ ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด 1110110.101=1.110110101ร—2โถ ๊ณผ ๊ฐ™๋‹ค. ์ด๊ฒƒ์„ ์ •๊ทœํ™”๋œ ๋ถ€๋™์†Œ์ˆ˜์  ์ˆ˜๋ผ๊ณ  ํ•œ๋‹ค.
  • ๊ฐ€์ˆ˜๋ถ€๋Š” ์†Œ์ˆ˜์ ์˜ ์˜ค๋ฅธ์ชฝ ๋ถ€๋ถ„์œผ๋กœ, ๋ถ€์กฑํ•œ ๋น„ํŠธ ์ˆ˜ ๋ถ€๋ถ„๋งŒํผ 0์œผ๋กœ ์ฑ„์›Œ 23๋น„ํŠธ๋กœ ๋งŒ๋“ ๋‹ค. ๊ฒฐ๊ณผ๋Š” 11011010100000000000000์ด ๋œ๋‹ค.
  • ์ง€์ˆ˜๋Š” 6์ด๋ฏ€๋กœ, Bias๋ฅผ ๋”ํ•ด์•ผ ํ•œ๋‹ค. 32๋น„ํŠธ IEEE 754 ํ˜•์‹์—์„œ๋Š” Bias๋Š” 127์ด๋ฏ€๋กœ 6+127 = 133์ด ๋œ๋‹ค. ์ด์ง„๋ฒ•์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋ฉด 10000101์ด ๋œ๋‹ค.

Bias๋ฅผ ์™œ ๋”ํ•ด?

  • ์ง€์ˆ˜๋ถ€์—๋Š” ๋”ฐ๋กœ ๋ถ€ํ˜ธ ๋น„ํŠธ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์Œ์ˆ˜ ์ง€์ˆ˜๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๋ณดํ†ต ๋ฐ”์ด์–ด์Šค ํ‘œํ˜„๋ฒ•์„ ์‚ฌ์šฉํ•œ๋‹ค.
  • ์ฆ‰, ํ• ๋‹น๋œ ์ž๋ฆฟ์ˆ˜๋กœ ํ‘œํ˜„ ๊ฐ€๋Šฅํ•œ ์ „์ฒด ์˜์—ญ์„ ๋ฐ˜์œผ๋กœ ๋‚˜๋ˆ„์–ด, ์ž‘์€ ์˜์—ญ์—๋Š” ์Œ์ˆ˜๊ฐ’ ๋ฐ 0, ํฐ ์˜์—ญ์—๋Š” ์–‘์ˆ˜๊ฐ’์ด ์ฐจ๋ก€๋Œ€๋กœ 1:1 ๋Œ€์‘๋˜๋„๋ก ํ•œ๋‹ค.
  • ์˜ˆ๋ฅผ ๋“ค์–ด, ์ง€์ˆ˜๋ถ€๋ฅผ 8๋น„ํŠธ๋กœ ํ‘œํ˜„ํ•œ๋‹ค๋ฉด ๋ชจ๋‘ 256๊ฐ€์ง€ ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋Š”๋ฐ ์ด๊ฒƒ์„ ๋ฐ˜์œผ๋กœ ๋‚˜๋ˆ„์–ด ์Œ์ˆ˜ 127๊ฐœ์™€ 0, ์–‘์ˆ˜ 128๊ฐœ๋ฅผ ์ฐจ๋ก€๋Œ€๋กœ ๋Œ€์‘์‹œํ‚จ๋‹ค.
  • ๋”ฐ๋ผ์„œ, ๋น„ํŠธ์—ด 00000000์€ ์ง€์ˆ˜ -127์„ ๋‚˜ํƒ€๋‚ด๊ณ , 01111111์€ ์ง€์ˆ˜ 0, 11111111์€ ์ง€์ˆ˜ 128์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.
  • ์ผ๋ฐ˜์ ์œผ๋กœ๋Š” ์ง€์ˆ˜๋ถ€๊ฐ€ n๋น„ํŠธ์ผ ๋•Œ (2nย / 2 - 1 = 2n-1ย - 1)์„ ์ง€์ˆ˜ ๊ฐ’์— ๋”ํ•˜๋ฉฐ ์ด๊ฒƒ์„ ๋ฐ”์ด์–ด์Šค ์ƒ์ˆ˜๋ผ๊ณ  ํ•œ๋‹ค.
    • ๋‹ค๋งŒ, ์ง€์ˆ˜๋ถ€์˜ ๋ชจ๋“  ์ž๋ฆฌ๊ฐ€ ๋ชจ๋‘ 0 ๋˜๋Š” 1์ธ ๊ฒฝ์šฐ๋Š” ๊ฐ๊ฐ 0 ๋˜๋Š” ๋ฌดํ•œ๋Œ€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋“ฑ ์ข…์ข… ํŠน์ˆ˜ํ•œ ๋ชฉ์ ์œผ๋กœ ์˜ˆ์•ฝ๋˜์–ด ์žˆ๋‹ค.)
  • ๊ฐ€์ˆ˜๋ถ€์—์„œ๋Š” ์ •๊ทœํ™” ๊ฒฐ๊ณผ ์œ ํšจ์ˆซ์ž์˜ ์ฒซ์งธ ์ž๋ฆฌ๋Š” ์–ธ์ œ๋‚˜ 1์ด๋ฏ€๋กœ ํ‘œ์‹œํ•˜์ง€ ์•Š๊ณ , ์†Œ์ˆ˜ ๋ถ€๋ถ„๋งŒ ํ‘œํ˜„ํ•œ๋‹ค.

๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ

  • ์ˆ˜ํ•™์€ ์ด์ƒ์ ์ธ ํ•™๋ฌธ์— ๊ฐ€๊น๋‹ค.
  • ๊ทธ๋Ÿฐ ์ด์ƒ์  ์ƒํ™ฉ์—์„œ์˜ ์—ฐ์‚ฐ ๊ฒฐ๊ณผ ์—ญ์‹œ ์ด์ƒ์ด๋‹ค.
  • ํ•˜์ง€๋งŒ ์ปดํ“จํ„ฐ์—์„œ์˜ ์—ฐ์‚ฐ ๊ฒฐ๊ณผ๋Š” ๊ทธ ์ด์ƒ์„ ํ˜„์‹ค๋กœ ๋‚ด๋ ค์„œ ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค.
  • ์ฆ‰, 0.00001 ์ด๋ผ๋Š” ์‹ค์ˆ˜๊ฐ€ ์žˆ์„ ๋•Œ, ์ด๋ฅผ ๊ธฐ๊ณ„์—์„œ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ์‹์œผ๋กœ ๋ณ€ํ™˜ํ•˜๊ฒŒ ๋˜๋Š”๋ฐ,
  • ์ด ๊ณผ์ •์—์„œ ์ •๋ณด ์†์‹ค์ด ๋ฐœ์ƒํ•œ๋‹ค.
  • ๋ฌดํ•œ์— ๊ฐ€๊นŒ์šด ์ˆซ์ž๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์‹ค์ˆ˜๊ตฌ์กฐ์—์„œ ์ด๋ฅผ ์ œํ•œ์ ์œผ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๊ณ„๋กœ ๋‚ด๋ฆฐ๋‹ค๋ฉด ๋‹น์—ฐํžˆ ๋ฐœ์ƒํ•  ์ˆ˜ ๋ฐ–์— ์—†๋‹ค.
var result = 0.0
for _ in 0..<100000 {
	result += 0.00001
}
 
XCTAssert(result == 1) // false
  • ๊ทธ๋ ‡๊ธฐ์— ์‹ค์ˆ˜ ํƒ€์ž…์œผ๋กœ ์„ ์–ธ๋œ ์—ฐ์‚ฐ์„ ์—ฌ๋Ÿฌ๋ฒˆ ์ˆ˜ํ–‰๋’ค, ์˜ˆ์ƒํ–ˆ๋˜ ๊ฒฐ๊ณผ์™€ ๋น„๊ตํ•˜๋ฉด ํ‹€๋ฆฌ๋‹ค๊ณ  ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค.

Machine Epsilon

  • ๊ฐ€์ˆ˜๋กœ ํ‘œํ˜„๋˜๋Š” ๋ณด๋‹ค ํฐ ์—๋Ÿฌ๋Š” ๋ฐœ์ƒํ•  ์ˆ˜ ์—†๋‹ค.
  • ์ด ๊ฐ’์€ ์‹œ์Šคํ…œ์—์„œ ์‹ค์ˆ˜๋ฅผ ์–ด๋–ป๊ฒŒ ์ •์˜ํ•˜๋ƒ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์งˆ ๊ฒƒ์ด๋‹ค.

์‚ฐ์ˆ ๊ฒฐ๊ณผ์—์„œ์˜ ์—๋Ÿฌ

  • ๊ฐ’ ํ•˜๋‚˜์—์„œ์˜ ์ตœ๋Œ€ ์—๋Ÿฌ๋ฅผ ์•Œ์•„๋ณด์•˜๋‹ค.
  • ๊ทธ๋Ÿฌ๋ฉด ์ด ๊ฒฐ๊ณผ๋“ค์— ๋Œ€ํ•ด ์—ฐ์‚ฐ์„ ํ–ˆ์„ ๋•Œ์˜ ๊ฒฐ๊ณผ๋Š” ์–ด๋–ป๊ฒŒ ๋ ๊นŒ?
  • ์œ„์˜ ์˜ˆ์‹œ์—์„œ 100000๋ฒˆ ๋”ํ•œ๋‹ค๊ณ  ํ•œ๋‹ค๋ฉด ์— ํ•ด๋‹นํ•˜๋Š” ์—๋Ÿฌ๊ฐ€ ๋‚˜์˜ค๋Š” ๊ฒƒ์ด ์•„๋‹๊นŒ?
  • ์ฆ‰, ์—ฐ์‚ฐ์˜ ๊ฒฐ๊ณผ๋„ Machine Epsilon๋‚ด์— ์กด์žฌํ•œ๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€?
  • ์•„๋‹ˆ๋‹ค. ์—๋Ÿฌ๋Š” ๋ˆ„์ ๋œ๋‹ค.

Errors can be magnified or accumulated when a sequence of calculations is applied on an initial input with roundoff error due to inexact representation.

์ƒˆ๊ธธ ๊ฒƒ

  • ์‹ค์ˆ˜์˜ ๋ถ€๋“ฑ์‹ ์—ฐ์‚ฐ, ์‚ฐ์ˆ  ์—ฐ์‚ฐ์˜ ๊ฒฝ์šฐ์—๋Š” Round Off Error๋ฅผ ๊ณ ๋ คํ•˜๋ฉด์„œ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•œ๋‹ค.

Reference